BioPlayground

🧬
목록으로

Fine-mapping: SuSiE와 CAVIAR로 진짜 인과 변이 찾아내기

GWAS가 찾아낸 연관 신호 중 진짜 인과 변이는 무엇일까요? LD(연관불균형)가 만드는 통계적 착시를 베이즈 인수로 풀어내는 SuSiE와 CAVIAR의 원리를 유도하고 실습합니다.

심화
|
22
|
검증 완료 (2026-07-29)
fine-mappingcausal variantlinkage disequilibriumcredible set
진행률0/86 (0%)

S43 대규모 GWAS의 끝 — "연관"과 "인과"는 다릅니다

S43(REGENIE·SAIGE)까지, 우리는 50만 명 규모의 바이오뱅크에서 통계적으로 유의미한 SNP를 빠르고 정확하게 찾아내는 법을 다뤘습니다. 그런데 GWAS 결과표를 열어보면 이상한 점이 하나 있습니다. 한 locus(유전자좌) 근처에 유의미한 SNP가 하나가 아니라 수십~수백 개씩 무더기로 나타난다는 것입니다.

이건 그 지역에 인과 변이가 수백 개 있다는 뜻이 아닙니다. 대부분은 진짜 인과 변이 근처에 위치해 함께 유전되는(co-inherited) 이웃 SNP일 뿐입니다. 이 현상을 **연관불균형(LD, Linkage Disequilibrium)**이라 부릅니다. 유전체 위에서 물리적으로 가까운 두 SNP는 감수분열 재조합으로 잘 분리되지 않아, 마치 하나의 블록처럼 함께 유전됩니다. 그 결과 진짜 인과 변이와 통계적으로 거의 구분되지 않는 "가짜 동반자" SNP들이 똑같이 유의미한 p-value를 얻습니다.

이 편에서는 "연관된 지역"에서 통계적으로 가장 그럴듯한 인과 변이 후보를 좁히는 Fine-mapping의 베이즈 통계 원리를 유도하고, 이를 구현한 두 도구 CAVIARSuSiE를 살펴봅니다. 다만 처음부터 분명히 해둘 것이 있습니다 — fine-mapping이 내놓는 확률은 주어진 통계 모델과 후보 SNP 집합 안에서의 사후확률이지, 생물학적 기능 실험으로 확정된 인과관계 자체는 아닙니다.

LD가 만드는 통계적 착시, 그리고 베이즈 인수로 풀어내기

완벽한 LD 상황에서의 착시

극단적인 상황을 하나 생각해봅시다. SNP A가 실제 인과 변이이고, SNP B는 A와 상관계수 r=1r=1(완벽한 LD)인 이웃입니다. 즉 이 코호트의 모든 개체에서 A와 B의 유전자형이 항상 똑같습니다. 이 경우 단일 변이 회귀분석을 돌리면 A와 B는 완전히 동일한 z-score를 얻습니다. 통계량만 봐서는 어느 쪽이 진짜 원인인지 전혀 구분할 수 없습니다.

베이즈 인수(Approximate Bayes Factor)로 각 SNP의 "인과일 확률" 매기기

Wakefield(2009)의 근사 베이즈 인수(ABF)는 이 문제에 확률적으로 답합니다. 각 SNP jj의 관측 효과 추정치 분산을 VjV_j, 진짜 효과 크기에 대한 사전분포를 θN(0,W)\theta \sim \mathcal{N}(0, W)라 하면, 축소 계수(shrinkage factor) rj=WVj+Wr_j = \frac{W}{V_j + W}에 대해

ABFj=1rjexp ⁣(rjZj22)\text{ABF}_j = \sqrt{1 - r_j} \, \exp\!\left(\frac{r_j Z_j^2}{2}\right)

이며, 여기서 ZjZ_j는 SNP jj의 z-score입니다. "이 locus 안에 인과 변이가 정확히 1개"라는 단순 가정 아래, SNP jj가 그 인과 변이일 사후확률(PIP, Posterior Inclusion Probability)은 다음과 같이 정규화됩니다.

PIPj=ABFjk=1MABFk\text{PIP}_j = \frac{\text{ABF}_j}{\sum_{k=1}^{M} \text{ABF}_k}

손 계산 예제: LD 유무에 따라 PIP가 완전히 달라짐

사전분산과 관측분산이 같다고 두어 r=0.5r=0.5로 고정하고, 두 시나리오를 계산해봅시다.

시나리오 1 (LD 없음, rLD=0r_{LD}=0): SNP1은 진짜 인과 변이로 Z1=5Z_1 = 5, SNP2는 무관한 이웃으로 Z2=0.1Z_2 = 0.1입니다.

ABF1=0.5exp(0.5×252)=0.7071×e6.250.7071×518.01366.3\text{ABF}_1 = \sqrt{0.5}\exp\left(\frac{0.5 \times 25}{2}\right) = 0.7071 \times e^{6.25} \approx 0.7071 \times 518.01 \approx 366.3

ABF2=0.5exp(0.5×0.012)=0.7071×e0.00250.7071×1.00250.709\text{ABF}_2 = \sqrt{0.5}\exp\left(\frac{0.5 \times 0.01}{2}\right) = 0.7071 \times e^{0.0025} \approx 0.7071 \times 1.0025 \approx 0.709

PIP1=366.3366.3+0.7090.998,PIP20.002\text{PIP}_1 = \frac{366.3}{366.3 + 0.709} \approx 0.998, \quad \text{PIP}_2 \approx 0.002

SNP1에 신호가 거의 100% 몰립니다 — LD가 없으니 통계 모델이 인과 변이 후보를 SNP1 하나로 좁혀낸 것입니다(이 결론은 "후보 SNP 중 정확히 하나가 인과"라는 모델 가정, 그리고 관측된 z-score가 참값을 잘 반영한다는 전제 위에 있습니다).

시나리오 2 (완벽한 LD, rLD=1r_{LD}=1): 앞서 설명한 대로 SNP1과 SNP2가 완전히 같은 유전자형을 가져 Z1=Z2=5Z_1 = Z_2 = 5입니다.

ABF1=ABF2366.3    PIP1=PIP2=366.3366.3+366.3=0.5\text{ABF}_1 = \text{ABF}_2 \approx 366.3 \implies \text{PIP}_1 = \text{PIP}_2 = \frac{366.3}{366.3 + 366.3} = 0.5

두 SNP 모두 PIP 0.5로 동률입니다. 95% credible set(누적 PIP가 0.95를 넘을 때까지 PIP 큰 순서로 SNP를 담는 집합)을 만들면, 이 경우 SNP1과 SNP2 둘 다 포함된 크기 2의 집합이 나옵니다. 이는 "이 두 SNP 중 하나가 인과 변이지만, 데이터만으로는 어느 쪽인지 확신할 수 없다"는 사실을 있는 그대로 보여주는 것이지, 방법의 실패가 아닙니다.

CAVIAR: 조합적 인과 구성 탐색

실제 locus에는 SNP가 수백~수천 개 있고, 인과 변이가 1개가 아닐 수도 있습니다. CAVIAR(Hormozdiari et al., 2014)는 전체 z-score 벡터가 LD 상관행렬 R\mathbf{R}을 공분산으로 갖는 다변량 정규분포를 따른다고 모델링하고, "이 중 최대 kk개가 인과 변이"라는 제약 하에 가능한 모든 인과 변이 조합(configuration)에 사후확률을 매깁니다. SNP가 MM개일 때 조합의 수는 i=0k(Mi)\sum_{i=0}^{k}\binom{M}{i}로 조합적으로 폭발하므로, 실무에서는 kk를 2~3 정도로 제한합니다.

SuSiE: 단일효과회귀의 반복 합

SuSiE(Sum of Single Effects, Wang et al., 2020)는 조합 전체를 탐색하는 대신, 전체 효과 벡터 β\boldsymbol{\beta}LL개의 단일효과 벡터의 합으로 분해합니다.

β=l=1Lβ(l),β(l)=γ(l)b(l)\boldsymbol{\beta} = \sum_{l=1}^{L} \boldsymbol{\beta}^{(l)}, \quad \boldsymbol{\beta}^{(l)} = \gamma^{(l)} b^{(l)}

여기서 γ(l)\gamma^{(l)}은 정확히 하나의 원소만 1이고 나머지는 0인 원-핫 벡터(즉 ll번째 신호는 SNP 하나에서만 나온다는 가정), b(l)b^{(l)}은 그 SNP의 효과 크기입니다. 각 β(l)\boldsymbol{\beta}^{(l)}을 반복적으로 베이즈 단순회귀(single-effect regression)로 적합시키는 IBSS(Iterative Bayesian Stepwise Selection) 알고리즘으로 전체를 학습합니다. 한 번의 IBSS 반복은 개체 수 nn, SNP 수 MM, 신호 개수 LL에 대해 대략 O(nML)O(nML) 수준으로, LL개의 신호마다 별도의 credible set이 나오므로 CAVIAR식 조합 폭발 없이 다중 신호 locus를 다룰 수 있습니다.

R 실습: PIP·Credible Set 계산

r
# Wakefield ABF 기반 PIP 계산 — 앞의 손 계산 예제를 코드로 재현
compute_pip <- function(z, r_shrink = 0.5) {
  abf <- sqrt(1 - r_shrink) * exp(r_shrink * z^2 / 2)
  abf / sum(abf)
}

# 시나리오 1: LD 없음
z_no_ld <- c(5, 0.1)
cat("LD 없음 PIP:", round(compute_pip(z_no_ld), 4), "\n")

# 시나리오 2: 완벽한 LD (두 SNP 동일 z-score)
z_perfect_ld <- c(5, 5)
cat("완벽한 LD PIP:", round(compute_pip(z_perfect_ld), 4), "\n")

# 95% credible set 추출 함수
credible_set <- function(pip, threshold = 0.95) {
  ord <- order(pip, decreasing = TRUE)
  cum <- cumsum(pip[ord])
  ord[1:which(cum >= threshold)[1]]
}

cat("완벽한 LD의 95% credible set 인덱스:", credible_set(compute_pip(z_perfect_ld)), "\n")

CS 매핑

  • 베이즈 인수(Bayes Factor): 두 가설(귀무 vs 대립) 각각에서 데이터가 관측될 가능도의 비율입니다. Fine-mapping은 "이 SNP가 인과다"라는 가설별 베이즈 인수를 계산해 사후확률로 정규화하는 문제로 환원됩니다.
  • 단일효과회귀(Single-Effect Regression) + 반복 합: 복잡한 다중 신호 문제를 "정확히 하나의 활성 성분만 갖는" 단순 모델 여러 개의 합으로 근사하는 것은, 그래디언트 부스팅이 약한 학습기(weak learner)를 순차적으로 더해 강한 모델을 만드는 것과 같은 반복적 가법 모델(additive model) 사고방식입니다.
  • 조합 탐색과 가지치기: CAVIAR가 인과 변이 개수를 kk로 제한하는 것은, 탐색 트리가 지수적으로 커지는 문제에서 깊이·분기 폭을 제한해 계산 가능한 범위로 가지치기하는 전형적인 조합 최적화 전략입니다.

자주 만나는 결함

  • In-sample LD 미사용: 참조 패널(예: 1000 Genomes)의 LD로 요약통계 fine-mapping을 하면, 실제 연구 코호트의 LD 구조와 어긋나 credible set이 왜곡될 수 있습니다. 가능하면 원 코호트에서 직접 계산한 LD를 씁니다.
  • 인과 변이 개수 LL·kk 과소 설정: 실제로는 신호가 2개인 locus에서 L=1L=1로 고정하면, 두 신호가 하나로 뭉개져 credible set이 지나치게 커지거나 엉뚱한 SNP를 포함합니다.
  • Purity 미확인: SuSiE의 각 credible set에는 내부 SNP 간 상관(LD)의 최솟값·평균값 등을 종합한 purity 지표가 함께 나옵니다. 특히 최소 절대상관이 낮으면 그 credible set의 신뢰도가 떨어진다는 신호입니다. PIP만 보고 판단하지 말고 purity를 함께 확인해야 합니다.
  • credible set을 반복표본 보장으로 오해: "95% credible set"은 같은 모델을 반복 적용했을 때의 이론적 커버리지이지, "이 특정 데이터에서 95% 확률로 진짜 변이가 들어있다"는 무조건적 보장이 아닙니다.

더 깊게 파고 싶다면

본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 문서로 더 깊이 들어가 봅시다.

  • CAVIAR 원 논문: Hormozdiari et al. (2014), Identifying Causal Variants at Loci with Multiple Signals of Association, Genetics, 198(2):497–508.
  • SuSiE 원 논문: Wang et al. (2020), A simple new approach to variable selection in regression, with application to genetic fine-mapping, Journal of the Royal Statistical Society: Series B, 82(5):1273–1300.
  • FINEMAP 원 논문: Benner et al. (2016), FINEMAP: efficient variable selection using summary data from genome-wide association studies, Bioinformatics, 32(10):1493–1501.
  • Wakefield ABF 원 논문: Wakefield (2009), Bayes factors for genome-wide association studies: comparison with P-values, Genetic Epidemiology, 33(1):79–86.

LD가 만드는 통계적 착시를 베이즈 인수로 풀어내는 법을 배웠습니다. 그런데 인과 변이를 찾아냈다고 해서 끝이 아닙니다 — 그 변이가 정확히 어떤 조직에서, 어떤 유전자의 발현을 바꿔서 질병에 영향을 미치는지는 또 다른 질문입니다.

다음 편 S45에서는 유전 변이와 유전자 발현량을 직접 연결하는 eQTL(발현 수량형질좌위) 매핑과, 조직마다 다르게 나타나는 유전자 조절의 특이성을 GTEx 데이터로 살펴봅니다.