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를 선택한 이유를 교재의 맥락에서 정리한다:
- 시간 \(\neq\) 유일한 인덱스: BOA만 보면 FDA가 “시계열 분석의 확장”이라는 좁은 인상을 줄 수 있다. DTI가 공간 인덱스를 사용함으로써 FDA의 범용성을 보여준다.
- 밀집 데이터의 전형: 93개 등간격 관측점은 전형적인 밀집(dense) 함수형 데이터이다. 개별 곡선 수준의 스무딩이 가능하고, 기저 전개가 자연스럽다. 이는 Ch.7의 희소(sparse) 데이터와 대비된다.
- 실질적 응용: MS 진단에서 FA 프로파일의 차이를 검출하는 것은 실제 임상 연구 문제이며, 이후 장에서 함수 회귀(Ch.4~6)와 함수 GLM을 통해 다시 다루어진다.
- 3-시그마 규칙: 피험자 내 상관 구조가 고전적 통계 규칙의 함수적 확장을 자연스럽게 도입한다. 이는 Ch.12의 동시 신뢰 대역(simultaneous confidence band)으로 이어진다.
8 이후 장과의 연결
이 예시에서 도입된 DTI 데이터는 교재 전체에서 반복적으로 사용된다:
- Ch.4 (스칼라-on-함수 회귀): FA 프로파일(함수 예측변수)로 인지 점수(스칼라 반응)를 예측한다
- Ch.6 (함수 GLM): FA 프로파일로 MS 여부(이진 반응)를 예측하는 함수 로지스틱 회귀를 적용한다
- Ch.12 (추론): FA 평균 프로파일에 대한 가설 검정과 신뢰 대역을 구성한다
9 관련 주제
선행 지식
- FDA 1.1~1.2 — 기저 전개와 표본 평균·공분산
- FDA 1.3~1.4 — 주성분 함수(EFPC)와 BOA 주식 수익률
- FDA Ch.1 — 함수형 데이터 분석의 첫걸음 (Overview)
FDA 시리즈
후속 주제
- FDA Ch.2 — 미분, 벌점 스무딩, 곡선 정렬
- FDA Ch.3 — 수학적 프레임워크 (\(L^2\) 공간, Karhunen-Loeve 전개)
- FDA Ch.4 — 스칼라-on-함수 회귀 (DTI 데이터 재활용)
- FDA Ch.6 — 함수 GLM (DTI 로지스틱 회귀)