---
id: wiki-2026-0508-neuropsychology
title: Neuropsychology
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [Clinical Neuropsychology, Cognitive Neuropsychology, Brain-Behavior]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [neuropsychology, cognition, brain, fmri, assessment, ai-diagnosis]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack: { language: Python, framework: nilearn/MNE }
---

## 한 줄
뇌-행동 관계를 평가-병변매핑-신경영상으로 정량화하고, 2026 현재 ML 분류기와 멀티모달 fMRI/MEG로 임상 진단을 보조한다.

## 핵심
- **평가 도구**: WAIS-IV (지능), WMS-IV (기억), Trail Making A/B (실행), Stroop (억제), BVMT-R (시공간).
- **병변-행동 매핑**: VLSM (voxel-based lesion symptom mapping) — 병변 마스크 + 행동 점수 회귀로 영역 기여 추정.
- **신경영상**: fMRI BOLD, DTI 백질 트랙, MEG 시간해상도 ms, EEG 임상 표준.
- **임상 도메인**: 뇌졸중 인지 결손, TBI, 치매 (AD/FTD/LBD 감별), ADHD, 정신질환 인지 프로파일.
- **AI 진단 보조**: 구조 MRI → AD/MCI 분류 (3D CNN), MEG → epilepsy spike detection, 자동 점수화.

## 💻 패턴

```python
# 1) 인지 평가 점수 정규화 (연령/교육 보정 z-score)
import pandas as pd
import numpy as np

def age_edu_adjusted_z(raw, age, edu, norms):
    """norms: DataFrame with mean/sd per (age_band, edu_band)"""
    band = norms.loc[(norms.age_lo <= age) & (age <= norms.age_hi) &
                     (norms.edu_lo <= edu) & (edu <= norms.edu_hi)].iloc[0]
    return (raw - band["mean"]) / band["sd"]

# 손상 임계: z < -1.5 mild, z < -2.0 moderate
```

```python
# 2) VLSM (voxel-based lesion symptom mapping) — 단순 t-test 형
import numpy as np
from scipy import stats

def vlsm(lesion_masks, scores, min_overlap=5):
    # lesion_masks: (n_subj, X, Y, Z) binary; scores: (n_subj,)
    overlap = lesion_masks.sum(axis=0)
    valid = overlap >= min_overlap
    tmap = np.zeros_like(overlap, dtype=float)
    for idx in np.argwhere(valid):
        x, y, z = idx
        present = lesion_masks[:, x, y, z] == 1
        if present.sum() < min_overlap or (~present).sum() < min_overlap:
            continue
        tmap[x, y, z] = stats.ttest_ind(scores[present], scores[~present]).statistic
    return tmap
```

```python
# 3) 구조 MRI 기반 AD/MCI/CN 분류 (간단 3D CNN)
import torch.nn as nn

class Brain3DCNN(nn.Module):
    def __init__(self, n_classes=3):
        super().__init__()
        self.features = nn.Sequential(
            nn.Conv3d(1, 16, 3, padding=1), nn.ReLU(), nn.MaxPool3d(2),
            nn.Conv3d(16, 32, 3, padding=1), nn.ReLU(), nn.MaxPool3d(2),
            nn.Conv3d(32, 64, 3, padding=1), nn.ReLU(), nn.AdaptiveAvgPool3d(4),
        )
        self.head = nn.Sequential(nn.Flatten(), nn.Linear(64 * 64, 128),
                                  nn.ReLU(), nn.Dropout(0.3), nn.Linear(128, n_classes))

    def forward(self, x):
        return self.head(self.features(x))
```

```python
# 4) 인지 프로파일 클러스터링 (서브타입 발견)
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

X = patients[["wais_iq", "wms_mem", "tmt_b", "stroop", "bvmt"]].values
Xs = StandardScaler().fit_transform(X)
labels = KMeans(n_clusters=4, n_init=20, random_state=0).fit_predict(Xs)
```

```python
# 5) MEG epilepsy spike detection (MNE-Python)
import mne
raw = mne.io.read_raw_fif("subject_meg.fif", preload=True)
raw.filter(1, 70).notch_filter(60)
events = mne.preprocessing.find_eog_events(raw)  # 예시: 이벤트 검출
epochs = mne.Epochs(raw, events, tmin=-0.5, tmax=0.5, baseline=(None, 0))
```

```python
# 6) DTI 트랙토그래피로 백질 손상 정량 (FA 감소)
import numpy as np
def fa_deficit(patient_fa, control_fa, mask):
    # voxel-wise z-score, mask는 트랙 ROI
    mu, sd = control_fa[:, mask].mean(0), control_fa[:, mask].std(0) + 1e-6
    z = (patient_fa[mask] - mu) / sd
    return float(z.mean()), float((z < -2).mean())  # 평균 z, 손상 비율
```

```python
# 7) 자동 점수화: TMT-B 시간 → 손상 카테고리
def tmt_b_severity(seconds, age):
    # Tombaugh 2004 norms 근사
    cutoffs = {(20, 39): (60, 90), (40, 59): (75, 110),
               (60, 79): (100, 150), (80, 100): (150, 240)}
    for (lo, hi), (mild, severe) in cutoffs.items():
        if lo <= age <= hi:
            if seconds <= mild: return "normal"
            if seconds <= severe: return "mild"
            return "severe"
    return "unknown"
```

## 결정 기준

| 상황 | 도구 |
|---|---|
| 일반 인지 스크리닝 | MoCA, MMSE |
| 정밀 평가 (법정/연구) | 풀 배터리 (WAIS+WMS+TMT+Stroop) |
| 병변 위치 추정 | VLSM + 구조 MRI |
| AD vs FTD 감별 | FDG-PET, 3D CNN on MRI |
| 발작 초점 | MEG + EEG |

## 🔗 Graph
- 인접: [[Stroke Recovery]]

## 🤖 LLM 활용
- 평가 점수 표 → 손상 도메인 자동 요약 (실행기능/기억/시공간).
- 임상 노트에서 인지 호소 추출 → 추천 배터리 매핑.
- 다국어 번역된 표준 검사의 해석 차이 비교.

## ❌ 안티패턴
- 연령/교육 미보정 raw 점수로 손상 판단.
- VLSM에서 min_overlap 너무 낮게 (<5) 잡고 가짜 영역 검출.
- 구조 MRI 분류기를 단일 사이트로만 학습 → 스캐너 편향.
- 자동 점수화로 임상가 판단 대체 (보조만 가능).

## 🧪 검증
- VLSM: permutation test로 cluster-level 보정.
- 분류기: 다중 사이트 leave-site-out CV.
- 평가: test-retest 신뢰도 ICC > 0.7.

## 🕓 Changelog
- 2026-05-08 Phase 1 자동 생성
- 2026-05-10 Manual cleanup — house style 적용
