FDA 1.5 — 확산 텐서 영상 (DTI) 데이터의 함수형 분석

뇌량 부분 비등방성 프로파일: 공간 함수형 데이터, 평균·SD 대역, 3-시그마 규칙

Kokoszka & Reimherr (2017) Ch.1 §1.5를 상세히 다룬다. 확산 텐서 영상(DTI)의 원리, 부분 비등방성(FA) 트랙 프로파일의 함수형 데이터 구조, 뇌량(corpus callosum) 376명 데이터의 기저 전개·평균 함수·점별 SD 대역 분석, 시간이 아닌 공간을 인덱스로 사용하는 FDA의 확장성을 다룬다.

Statistics
Functional Data Analysis
저자

Kwangmin Kim

공개

2026년 04월 29일

1 확산 텐서 영상 (DTI) 이란 무엇인가

확산 텐서 영상(Diffusion Tensor Imaging, DTI)은 뇌 내 수분의 확산 방향을 측정하는 자기공명영상(MRI) 기법이다 (Kokoszka & Reimherr, 2017, Ch.1).

1.1 물리적 원리

뇌조직에서 물 분자는 끊임없이 무작위로 움직인다(브라운 운동). 이 확산의 방향성은 조직 구조에 의해 제약된다:

  • 회백질(gray matter): 세포체가 밀집해 있어 물이 모든 방향으로 동등하게 확산한다 — 이를 등방성(isotropic) 확산이라 한다.
  • 백질(white matter): 축삭(axon)이 다발로 묶여 특정 방향으로 뻗어 있어, 물이 축삭 방향으로는 쉽게 이동하지만 수직 방향으로는 제약된다 — 이를 비등방성(anisotropic) 확산이라 한다.

DTI는 이 확산 비등방성을 측정하여 백질 구조를 영상화한다. 직관적으로 말하면, “물이 어느 방향으로 잘 흐르는지”를 관측하여 “신경섬유가 어느 방향으로 뻗어 있는지”를 추론하는 것이다. 이는 신경과학에서 뇌 연결성(brain connectivity) 연구의 핵심 도구이며, 다발성 경화증(Multiple Sclerosis) 등 백질 관련 질환의 진단과 연구에 중요하다.

1.2 확산 텐서와 고유값 분해

각 복셀(voxel, 3D 픽셀)에서 DTI는 확산의 3차원 구조를 \(3 \times 3\) 확산 텐서 행렬 \(\mathbf{D}\) 로 요약한다:

\[ \mathbf{D} = \begin{pmatrix} D_{xx} & D_{xy} & D_{xz} \\ D_{yx} & D_{yy} & D_{yz} \\ D_{zx} & D_{zy} & D_{zz} \end{pmatrix} \]

이 대칭 양정치 행렬의 고유값 분해 \(\mathbf{D} = \mathbf{E} \boldsymbol{\Lambda} \mathbf{E}^T\) 에서:

  • 고유값 \(\lambda_1 \geq \lambda_2 \geq \lambda_3 > 0\): 세 주축 방향의 확산 크기
  • 고유벡터 \(\mathbf{e}_1, \mathbf{e}_2, \mathbf{e}_3\): 확산의 주축 방향

\(\lambda_1 \approx \lambda_2 \approx \lambda_3\) 이면 등방성(회백질), \(\lambda_1 \gg \lambda_2, \lambda_3\) 이면 강한 비등방성(백질)이다. 가장 큰 고유값에 대응하는 고유벡터 \(\mathbf{e}_1\) 이 신경섬유의 주행 방향을 나타낸다.

2 부분 비등방성 (Fractional Anisotropy)

2.1 정의

부분 비등방성(Fractional Anisotropy, FA)은 세 고유값으로부터 비등방성의 정도를 0~1 사이의 스칼라로 요약하는 지표이다:

\[ \text{FA} = \sqrt{\frac{3}{2}} \cdot \frac{\sqrt{(\lambda_1 - \bar{\lambda})^2 + (\lambda_2 - \bar{\lambda})^2 + (\lambda_3 - \bar{\lambda})^2}}{\sqrt{\lambda_1^2 + \lambda_2^2 + \lambda_3^2}} \]

여기서 \(\bar{\lambda} = (\lambda_1 + \lambda_2 + \lambda_3) / 3\) 은 평균 확산도(mean diffusivity)이다.

2.2 직관적 해석

FA의 분자는 세 고유값이 평균에서 벗어나는 정도(표준편차에 비례)이고, 분모는 전체 확산의 크기이다. 따라서:

  • \(\text{FA} = 0\): 세 고유값이 모두 같다 (\(\lambda_1 = \lambda_2 = \lambda_3\)). 완전한 등방성 — 물이 모든 방향으로 동등하게 확산하며, 이는 자유 수분이나 회백질에서 관찰된다.
  • \(\text{FA} = 1\): 하나의 고유값만 0이 아니다 (\(\lambda_1 > 0, \lambda_2 = \lambda_3 = 0\)). 완전한 비등방성 — 물이 오직 한 방향으로만 확산하며, 이는 이론적 극한이다.
  • 실제 백질: FA는 보통 0.4~0.8 범위이다. 밀도가 높은 신경섬유 다발일수록 FA가 높다.

FA를 비유하면, 원형(등방성, FA=0)에서 극단적 타원(비등방성, FA=1)까지의 스펙트럼에서 “타원이 얼마나 찌그러졌는가”를 측정하는 것이다.

2.3 FA의 앞 계수 \(\sqrt{3/2}\) 의 역할

\(\sqrt{3/2}\) 계수는 FA의 범위를 정확히 \([0, 1]\) 로 정규화하기 위한 것이다. 이 계수가 없으면 \(\lambda_1 > 0, \lambda_2 = \lambda_3 = 0\) 일 때 FA가 \(\sqrt{2/3}\) 이 되어 최대값이 1이 아니게 된다. 정규화를 통해 FA 값의 크기가 직관적으로 비등방성의 비율(0%~100%)을 나타낸다.

3 뇌량 트랙 프로파일: 함수형 데이터로서의 DTI

3.1 뇌량 (Corpus Callosum)

뇌량은 좌우 대뇌 반구를 연결하는 가장 큰 백질 구조물이다. 약 2억 개의 신경섬유가 다발로 묶여 좌뇌와 우뇌 사이의 정보 전달을 담당한다. 다발성 경화증(MS)에서는 면역 체계가 백질의 수초(myelin sheath)를 파괴하므로, 뇌량의 FA가 감소한다 — 이것이 DTI로 MS를 연구하는 이유이다.

3.2 데이터 구조

분석에 사용하는 데이터는 Johns Hopkins University와 Kennedy-Krieger Institute에서 수집되었으며 (Goldsmith et al., 2012), R의 refund 패키지에 포함되어 있다:

항목
피험자 수 (\(N\)) 376명 (결측 6명 제거 후 370명)
관측 위치 수 (\(M\)) 93개 (등간격)
관측 변수 부분 비등방성 (FA)
인덱스 \(t\) 뇌량 내 공간 위치 (0~1로 정규화)
값의 범위 \([0, 1]\)

여기서 핵심적인 관찰: 인덱스 \(t_{j,n}\) 은 시간이 아니라 공간적 위치이다. BOA 데이터에서 \(t\) 가 “하루 중 시각”이었다면, DTI 데이터에서 \(t\) 는 “뇌량 내 위치”이다. 각 피험자에 대해 뇌량을 따라 93개 지점에서 FA 값을 측정하면, 하나의 곡선 \(X_n(t)\) (\(t \in [0, 1]\), \(n = 1, \ldots, 370\))이 된다.

이것이 FDA의 유연성이다: \(t\) 가 시간이든, 공간이든, 파장이든, 연속적 인덱스이기만 하면 동일한 방법론이 적용된다. 기저 전개 \(\to\) 평균·공분산 \(\to\) FPCA의 파이프라인은 인덱스의 물리적 의미와 무관하다.

3.3 트랙 프로파일의 형태

뇌량 FA 프로파일의 전형적 형태는 다음과 같다:

  • 양쪽 끝(0, 1 근처): FA가 낮다 — 뇌량이 대뇌 피질과 만나는 경계 영역으로, 회백질과의 혼합으로 비등방성이 약하다
  • 중앙부(0.3~0.7): FA가 높다 — 뇌량의 본체(body)로, 밀집된 신경섬유 다발이 강한 비등방성을 보인다
  • 전체적으로 역 U자형 곡선이다

이 형태가 피험자 간 보존된다는 것은 뇌량의 해부학적 구조가 일관적임을 반영한다. 피험자 간 차이는 주로 FA 값의 전체적 수준(정상인은 높고 MS 환자는 낮은)과 곡선의 형태적 세부 사항에서 나타난다.

4 R 코드: DTI 데이터 분석

4.1 데이터 로드와 함수 객체 변환

library(fda)
library(refund)

data(DTI)
Y <- DTI$cca
Y <- Y[-c(126, 130, 131, 125, 319, 321), ]  # 결측값 제거
N <- dim(Y)[1]  # 370
M <- dim(Y)[2]  # 93

argvals <- seq(0, 1, length = M)
data_basis <- create.bspline.basis(c(0, 1), nbasis = 10)
Y.f <- Data2fd(argvals, t(Y), data_basis)

코드의 핵심 해설:

  • DTI$cca: refund 패키지의 DTI 데이터셋에서 뇌량(corpus callosum, cca) 부분을 추출한다. 결과는 \(376 \times 93\) 행렬이다.
  • 결측값 제거: 인덱스 126, 130, 131, 125, 319, 321의 행에 NA 가 포함되어 있어 제거한다. FDA의 기저 전개는 결측값을 직접 처리하지 못하므로, 사전에 완전 관측 곡선만 선택한다.
  • nbasis = 10: BOA 데이터(200개 기저)와 비교하면 매우 적은 수이다. 이는 93개 관측점으로 이루어진 비교적 매끄러운 곡선에 10개 기저가 충분하기 때문이다. 관측점 수 대비 기저 수의 비율이 약 10:1로, 적절한 차원 축소와 평활화를 달성한다.
  • Data2fd() 에서 t(Y) 로 전치하는 이유: Data2fd 는 열이 곡선을 나타내는 형식(\(M \times N\))을 기대하지만, Y 는 행이 곡선인 형식(\(N \times M\))이기 때문이다.

4.2 평균 함수와 SD 대역 시각화

plot(Y.f, lty = 1, col = "gray", xlab = "", ylab = "", ylim = c(0.1, 0.9))
lines(mean(Y.f), lwd = 2)

lines(mean(Y.f) + std.fd(Y.f), lwd = 2, lty = 2, col = "green")
lines(mean(Y.f) + 2 * std.fd(Y.f), lwd = 2, lty = 2, col = "yellow")
lines(mean(Y.f) + 3 * std.fd(Y.f), lwd = 2, lty = 2, col = "red")

lines(mean(Y.f) - std.fd(Y.f), lwd = 2, lty = 2, col = "green")
lines(mean(Y.f) - 2 * std.fd(Y.f), lwd = 2, lty = 2, col = "yellow")
lines(mean(Y.f) - 3 * std.fd(Y.f), lwd = 2, lty = 2, col = "red")

이 코드가 생성하는 그래프의 구조:

요소 색상 의미
개별 곡선 회색 370명의 FA 트랙 프로파일
평균 함수 검정 실선 \(\bar{X}_N(t)\) — 전형적 프로파일 형태
\(\pm 1\) SD 녹색 점선 \(\bar{X}_N(t) \pm \text{SD}_X(t)\)
\(\pm 2\) SD 노란색 점선 \(\bar{X}_N(t) \pm 2\text{SD}_X(t)\)
\(\pm 3\) SD 빨간색 점선 \(\bar{X}_N(t) \pm 3\text{SD}_X(t)\)

4.3 함수형 3-시그마 규칙

스칼라 데이터에서 정규분포를 따르는 관측값의 약 99.7%가 \(\mu \pm 3\sigma\) 안에 들어가는 것이 고전적인 3-시그마 규칙이다. DTI 데이터에서 놀라운 발견은 거의 모든 곡선이 빨간 선(3 SD) 안에 들어간다는 것이다.

이것이 놀라운 이유: 점별 3-시그마 규칙이 함수 전체에 동시에 적용될 보장은 없기 때문이다. 각 시점 \(t\) 에서 곡선 \(X_n(t)\) 가 3 SD 안에 있을 확률이 99.7%라 해도, 모든 시점에서 동시에 3 SD 안에 있을 확률은 \(0.997^{93}\) 이 아니다 — 시점 간 상관이 있기 때문이다.

DTI 데이터에서 3-시그마 규칙이 함수 수준에서도 잘 작동하는 이유는 피험자 내 상관(within-subject correlation)이 높기 때문이다. 한 피험자의 FA 프로파일이 전체적으로 평균보다 높으면, 거의 모든 위치에서 높다. 즉, 곡선의 변동이 주로 전체 수준의 상하 이동(FPCA의 첫 번째 성분)에 의해 지배되며, 위치마다 독립적으로 변동하는 부분은 상대적으로 작다. 이런 강한 상관 구조가 함수 수준의 3-시그마 규칙을 가능하게 한다.

5 시간 vs 공간: FDA의 인덱스 일반성

5.1 BOA vs DTI 비교

특성 BOA 주식 수익률 (§1.4) DTI 트랙 프로파일 (§1.5)
인덱스 \(t\) 거래 시간 (0~6.5시간) 뇌량 내 공간 위치 (0~1)
\(N\) (곡선 수) 2,510일 370명
\(M\) (관측점/곡선) 390 (1분 간격) 93 (등간격)
값의 범위 \(\approx [-0.03, 0.04]\) \([0.1, 0.9]\)
기저 수 200 (B-spline) 10 (B-spline)
곡선 형태 0에서 출발, 불규칙 변동 역 U자형, 매끄러운
주요 발견 브라운 운동 구조 확인 3-시그마 규칙의 함수적 확장

이 비교에서 드러나는 핵심: FDA의 방법론(기저 전개 \(\to\) 평균·SD \(\to\) FPCA)은 인덱스의 물리적 의미와 완전히 독립적이다. \(t\) 가 시간이든 공간이든, 파장이든, 나이든, 동일한 수학적 프레임워크가 적용된다. 변하는 것은 해석이다 — “오전에 수익률이 형성된다”와 “뇌량 중앙에서 FA가 높다”는 다른 도메인의 발견이지만, 그것을 추출하는 FDA 도구는 동일하다.

5.2 공간 함수형 데이터의 추가 사례

DTI처럼 공간을 인덱스로 사용하는 함수형 데이터는 다양한 분야에서 나타난다:

분야 데이터 인덱스 \(t\) 함수 \(X_n(t)\)
신경과학 (DTI) 뇌 신경섬유 트랙 트랙 위치 FA 값
분광학 물질의 스펙트럼 파장 \(\lambda\) 흡광도/반사율
지구물리학 토양 수분 프로파일 깊이 \(z\) 수분 함량
환경과학 강의 수질 프로파일 하류 거리 오염 농도
재료과학 복합재 단면 프로파일 단면 위치 강도/밀도

이 모든 경우에 관측값을 공간 위치의 함수로 간주하고, FDA의 표준 절차를 적용할 수 있다.

6 코드 예시: Python 구현

6.1 Step 1: 순수 Python으로 DTI 분석 원리

import numpy as np
from scipy.interpolate import BSpline

np.random.seed(42)

N, M = 370, 93
t = np.linspace(0, 1, M)

mean_profile = 0.3 + 0.3 * np.sin(np.pi * t)
noise_level = np.random.uniform(0.8, 1.2, size=N)
curves = mean_profile[np.newaxis, :] * noise_level[:, np.newaxis]
curves += np.random.randn(N, M) * 0.03

mean_func = curves.mean(axis=0)
sd_func = curves.std(axis=0, ddof=1)

within_3sd = np.all(
    (curves >= mean_func - 3 * sd_func) &
    (curves <= mean_func + 3 * sd_func),
    axis=1
)
pct_within = within_3sd.mean() * 100

print(f"평균 FA 범위: [{mean_func.min():.3f}, {mean_func.max():.3f}]")
print(f"SD 범위: [{sd_func.min():.3f}, {sd_func.max():.3f}]")
print(f"모든 위치에서 동시에 3SD 내: {pct_within:.1f}%")

이 시뮬레이션에서 핵심은 마지막 부분이다: np.all(..., axis=1) 은 각 곡선이 모든 93개 위치에서 동시에 3 SD 대역 안에 있는지를 검사한다. 독립이라면 \(0.997^{93} \approx 76\%\) 이겠지만, 실제로는 피험자 내 상관 때문에 이보다 훨씬 높은 비율이 대역 안에 들어간다.

6.2 Step 2: refund 패키지 대응 (scikit-fda)

import skfda
from skfda.representation.basis import BSplineBasis
import numpy as np

N, M = 370, 93
t = np.linspace(0, 1, M)
mean_profile = 0.3 + 0.3 * np.sin(np.pi * t)
noise_level = np.random.uniform(0.8, 1.2, size=N)
curves = mean_profile[np.newaxis, :] * noise_level[:, np.newaxis]
curves += np.random.randn(N, M) * 0.03

fd = skfda.FDataGrid(data_matrix=curves, grid_points=t)

basis = BSplineBasis(n_basis=10, domain_range=(0, 1))
fd_basis = fd.to_basis(basis)

mean_fd = fd_basis.mean()

print(f"원본 차원: {N} x {M}")
print(f"기저 표현 차원: {N} x {basis.n_basis}")
print(f"압축 비율: {M / basis.n_basis:.1f}:1")

n_basis=10 으로 93개 관측점을 10개 계수로 압축한다 — 약 9:1 비율이다. DTI 프로파일이 매끄럽기 때문에 이 정도 압축에서도 정보 손실이 미미하다.

7 왜 DTI 데이터인가: FDA 입문에서의 교육적 가치

Kokoszka & Reimherr가 Ch.1에서 BOA와 함께 DTI를 선택한 이유를 교재의 맥락에서 정리한다:

  1. 시간 \(\neq\) 유일한 인덱스: BOA만 보면 FDA가 “시계열 분석의 확장”이라는 좁은 인상을 줄 수 있다. DTI가 공간 인덱스를 사용함으로써 FDA의 범용성을 보여준다.
  2. 밀집 데이터의 전형: 93개 등간격 관측점은 전형적인 밀집(dense) 함수형 데이터이다. 개별 곡선 수준의 스무딩이 가능하고, 기저 전개가 자연스럽다. 이는 Ch.7의 희소(sparse) 데이터와 대비된다.
  3. 실질적 응용: MS 진단에서 FA 프로파일의 차이를 검출하는 것은 실제 임상 연구 문제이며, 이후 장에서 함수 회귀(Ch.4~6)와 함수 GLM을 통해 다시 다루어진다.
  4. 3-시그마 규칙: 피험자 내 상관 구조가 고전적 통계 규칙의 함수적 확장을 자연스럽게 도입한다. 이는 Ch.12의 동시 신뢰 대역(simultaneous confidence band)으로 이어진다.

8 이후 장과의 연결

이 예시에서 도입된 DTI 데이터는 교재 전체에서 반복적으로 사용된다:

  • Ch.4 (스칼라-on-함수 회귀): FA 프로파일(함수 예측변수)로 인지 점수(스칼라 반응)를 예측한다
  • Ch.6 (함수 GLM): FA 프로파일로 MS 여부(이진 반응)를 예측하는 함수 로지스틱 회귀를 적용한다
  • Ch.12 (추론): FA 평균 프로파일에 대한 가설 검정과 신뢰 대역을 구성한다

9 관련 주제

선행 지식

FDA 시리즈

후속 주제

  • FDA Ch.2 — 미분, 벌점 스무딩, 곡선 정렬
  • FDA Ch.3 — 수학적 프레임워크 (\(L^2\) 공간, Karhunen-Loeve 전개)
  • FDA Ch.4 — 스칼라-on-함수 회귀 (DTI 데이터 재활용)
  • FDA Ch.6 — 함수 GLM (DTI 로지스틱 회귀)

Subscribe

Enjoy this blog? Get notified of new posts by email: