테스트가 서로 관련되어있는 여러 테스트 (유전학)에 대한 p 값 수정


24

많은 테스트에서 p 값이 있으며 여러 테스트를 수정 한 후 실제로 중요한 것이 있는지 알고 싶습니다. 합병증 : 내 테스트는 독립적이지 않습니다. 내가 생각하고있는 방법 (Fisher 's Product Method의 변형, Zaykin et al., Genet Epidemiol , 2002)은 p 값 사이의 상관 관계가 필요합니다.

이 상관 관계를 추정하기 위해 현재 부트 스트래핑 사례, 분석 실행 및 p 값의 결과 벡터 상관 관계에 대해 생각하고 있습니다. 누구든지 더 좋은 아이디어가 있습니까? 아니면 내 원래 문제에 대한 더 좋은 아이디어 (상관 된 테스트에서 여러 테스트를 수정)?

배경 : 저는 피실험자들이 유전자형 (AA, Aa 또는 aa)과 공변량 사이의 상호 작용에 대한 특정 질병으로 고통 받고 있는지 여부를 논리적으로 회귀합니다. 그러나, 유전자형은 실제로 단일 뉴클레오티드 다형성 (SNP)이 많고 (30-250), 확실히 독립적이지 않지만 연계 불균형에 있습니다.

답변:


29

이것은 실제로 게놈 분석 연구 (GWAS)에서 인기있는 주제입니다! 나는 당신이 생각하는 방법 이이 맥락에서 가장 적합한 지 확신하지 못합니다. p- 값의 풀링은 일부 저자에 의해 설명되었지만 다른 맥락 (복제 연구 또는 메타 분석, 예를 들어 최근 검토를 위해 (1) 참조)으로 설명되었습니다. Fisher의 방법으로 SNP p- 값을 결합하는 것은 일반적으로 주어진 유전자에 대해 고유 한 p- 값을 도출하고자 할 때 사용됩니다. 이를 통해 유전자 수준에서 작동하고 후속 테스트의 차원을 줄일 수 있지만 마커 사이의 비 독립성 (공간적 코 로케이션 또는 연관 불균형, LD에서 발생)은 편향을 유발합니다. 더 강력한 대안은 리샘플링 절차에 의존합니다.

부트 스트랩에 대한 나의 주요 관심사는 (교체와 함께) 인공적인 형태의 관련성을 도입하거나, 다시 말해서 가상 쌍둥이를 만들어서 Hardy-Weinberg 평형을 바꾸는 것입니다 (그러나 최소 대립 유전자 빈도와 호출 속도). 개별 레이블을 치환하고 유전자형 데이터를 그대로 유지하는 순열 방식에는 해당되지 않습니다. 일반적으로 plink 소프트웨어는 기본 및 순열 p- 값을 제공 할 수 있지만, 기본적으로 SNP가 아래에있는 것처럼 보일 경우 모든 순열 (예 : SNP 당 1000)을 중지 할 수있는 슬라이딩 창이있는 적응 형 테스트 전략을 사용합니다. 고려는 "흥미로운"것이 아니다; maxT 컴퓨팅 옵션도 있습니다 . 온라인 도움말을 참조하십시오 .

그러나 고려중인 SNP 수가 적을 경우 multtest R 패키지에 구현 된대로 FDR 기반 또는 maxT 테스트에 의존하는 것이 좋습니다 (참조 mt.maxT). 그러나 게놈 응용을위한 리샘플링 전략에 대한 결정적인 가이드는 응용 프로그램을 사용한 다중 테스트 절차입니다. Dudoit & van der Laan (Springer, 2008)의 Genomics . JSS에서 검토 한 R의 유전학 에 관한 Andrea Foulkes의 저서도 참조하십시오 . 그녀는 여러 테스트 절차에 대한 훌륭한 자료를 가지고 있습니다.

추가 사항

많은 저자들은 Bonferroni 또는 Sidak와 같은 간단한 다중 테스트 수정 방법이 개별 SNP의 결과를 조정하기에는 너무 엄격하다는 사실을 지적했습니다. 더욱이, 이들 방법 중 어느 것도 유전자 영역에 걸친 유전 적 변이를 태그하는 LD로 인해 SNP 사이에 존재하는 상관 관계를 고려하지 않았다. 다중 대안 (3), 히든 마르코프 모델 (4), 조건부 또는 양성 FDR (5) 또는 그 파생물 (6)을위한 Holm의 방법의 파생물과 같은 다른 대안이 제안되었다. 경우에 따라 소위 간격 통계 또는 슬라이딩 윈도우가 성공적으로 입증되었지만 (7) 및 (8)에서 좋은 리뷰를 찾을 수 있습니다.

또한 haplotype 구조 또는 LD를 효과적으로 사용하는 방법에 대해서도 들었습니다 (예 : (9)). 그러나 p- 값이 아닌 마커 간의 상관 관계를 추정하는 데 더 관련이있는 것으로 보입니다. 그러나 실제로는 상관 p- 값보다 연속 테스트 통계 간의 종속성 구조에 대해 더 잘 생각할 수 있습니다.

참고 문헌

  1. Cantor, RM, Lange, K 및 Sinsheimer, JS. GWAS 결과의 우선 순위 결정 : 응용에 대한 통계적 방법 및 권장 사항 검토 . J Hum Genet입니다. 2010 86 (1) : 6–22.
  2. Corley, RP, Zeiger, JS, Crowley, T et al. 청소년의 반사회적 약물 의존성과 후보 유전자의 연관성 . 약물 및 알코올 의존성 2008 96 : 90–98.
  3. Dalmasso, C, Génin, E 및 Trégouet DA. 게놈 협회 연구에서 대립 유전자 빈도에 대한 가중 홀름 절차 . 유전학 2008180 (1) : 697–702.
  4. Wei, Z, Sun, W, Wang, K 및 Hakonarson, H. 은닉 마르코프 모델을 통한 게놈 넓은 협회 연구에서의 다중 테스트 . 생물 정보학 2009 25 (21) : 2802-2808.
  5. Broberg, P. 변하지 않은 유전자의 비율과 잘못된 발견 비율의 비교 검토 . BMC 생물 정보학 2005 6 : 199.
  6. 필요, AC, Ge, D, Weale, ME 등 정신 분열 증에서 SNP와 CNV의 게놈 넓은 조사 . PLoS Genet. 2009 5 (2) : e1000373.
  7. Han, B, Kang, HM 및 Eskin, E. 수백만 개의 관련 마커에 대한 빠르고 정확한 다중 테스트 수정 및 전력 추정 . PLoS Genetics 2009
  8. Liang, Y 및 Kelemen, A. 복잡한 질병에 대한 게놈 연구에서 상관 관계가있는 고차원 snp 데이터를 분석하기위한 통계적 진보와 과제 . 통계 조사 2008 2 : 43–60. -가장 최근의 리뷰
  9. 니 홀트 박사 서로 연관 불균형에서 단일 뉴클레오티드 다형성에 대한 다중 테스트에 대한 간단한 수정 . J Hum Genet입니다. 2004 74 (4) : 765–769.
  10. Nicodemus, KK, Liu, W, Chase, GA, Tsai, YY 및 Fallin, MD. 주요 구성 요소와 일배 체형 차단 알고리즘을 사용하는 대규모 단일 뉴클레오티드 다형성 연구에서 다중 테스트 보정에 대한 유형 I 오류 비교 . BMC Genetics 2005; 6 (공급 1) : S78.
  11. Peng, Q, Zhao, J 및 Xue, F. PCA 기반 부트 스트랩 신뢰 구간 테스트는 여러 SNP가 포함 된 유전자 질병 연관성을 테스트합니다 . BMC Genetics 2010, 11 : 6
  12. Li, M, Romero, R, Fu, WJ 및 Cui, Y (2010). 적응 형 LASSO와 Haplotype-haplotype 상호 작용 매핑 . BMC Genetics 2010, 11:79-질문과 직접 ​​관련이 없지만 일배 체형 기반 분석 / 역전 효과를 다룹니다.

1
와,이 모든 문제를 해결해 주셔서 감사합니다! 부트 스트랩에 대한 당신의 자질을 이해하고 거의 확신합니다. 내 주된 합병증은 필연적으로 (자체적으로 또는 유전자형과의 상호 작용으로) 필요한 수치 적 공변량이며 plink를 다시 살펴볼 필요가 있지만 mt.maxT 및 plink를 배제하는 것으로 보입니다. 그러나 나는 당신이 제공 한 참고 문헌을 파헤쳐 볼 것입니다!
S. Kolassa-복원 모니카

공변량을 타기 위해 항상 GLM 잔차와 함께 작업 할 수 있지만 나중에 계산하거나 재 도입하기 어려운 Df를 잃어 버렸습니다 (예 : p- 값 계산).
chl

흠, 내 로지스틱 회귀의 잔차? 합법적인가요?
S. Kolassa-복원 Monica Monica

예, 왜 안되나요? 다른 공변량에 의해 설명 된 분산을 제거한 다음 잔차 데이터를 사용하여 2 차 분석을 진행하는 것은 드문 일이 아닙니다. 종종 더 빠릅니다 (예를 들어 plink는 범주 형 공변량에서는 꽤 느리지 만 연속적인 공변량에서는 괜찮습니다. snpMatrix또는 glm()이 시점에서 아주 잘 수행되지만 많은 SNP를 포함시킬 수는 없습니다 glm()...); 문제는 2 차 분석이 끝날 때 수정 된 p- 값을 얻는 것이 다소 까다 롭다는 것입니다 (이미 추정 된 매개 변수를 고려해야하기 때문에).
chl

사람들이 잔차를 처리하는 방법에 대한 그림은 예를 들어 p. Heck 등의 466. 성격 특성에 대한 17 개의 후보 유전자의 조사는 신규성 추구에 대한 HTR2A 유전자의 효과를 확인시켜 준다. 유전자, 뇌 및 행동 (2009) vol. 8 (4) pp. 464-72
chl

2

bonferroni와 같은 방법을 사용하는 것이 좋습니다. 문제는 테스트가 많으면 "발견"이 많지 않다는 것입니다.

종속 테스트를 위해 FDR 접근 방식을 사용할 수 있습니다 (자세한 내용은 여기 참조 ). 상관 관계가 모두 긍정적인지 여부를 미리 말할 수 있는지 확실하지 않습니다.

R에서는 p.adjust로 간단한 FDR을 수행 할 수 있습니다. 더 복잡한 것들을 위해 multcomp를 살펴 보았지만 종속성이있는 경우 솔루션을 찾기 위해 그것을 보지 않았습니다.

행운을 빕니다.


1
안녕 탈, 고마워! Bonferroni는 나에게 적합하지 않은 것 같습니다. 내 SNP 중 하나 인과적이고 다른 SNP 와 관련이있는 경우 신호가 있어야하고 Bonferroni는 항상 너무 보수적으로 보였습니다 (보통 Holm의 단계적 수정을 선호합니다). 귀하가 연결하는 FDR과 p.adjust는 결합 된 증거를 고려하지 않습니다 (그리고 FDR은 여전히 ​​제 테스트의 상관 관계, 원래 질문을 이해하도록 요구합니다). multcomp는 언뜻보기에는 단일 모델 내에서 여러 테스트를 더 다루는 것처럼 보이지만 여러 모델이 있습니다. 좀 더 깊이 파헤쳐 보도록하겠습니다.
S. Kolassa-Monica Monica

스테판 안녕하세요. 이해하지 못해서 죄송합니다. 행운을 빕니다! Tal
Tal Galili

안녕하세요 Stephan, 여전히 Tal이 지적한 것처럼 p의 조정에서 p = aad의 방법 = BY (Benjamin Hochberg Yekuteli Procedure)를 사용할 수 있다고 생각합니다. 확실히 Bonferroni를 사용하는 것은 보수적 일 수 있습니다.
suncoolsu

suncoolsu, 나는이 방법이 변수 사이의 상관이 양수 (음수가 아님) 일 때만 작동한다고 생각합니다. 건배.
탈 Galili

2

다변량 정규 모형은 상관 된 p- 값을 모델링하고 올바른 유형의 다중 테스트 보정을 얻는 데 사용되는 것 같습니다. 수백만 개의 관련 마커에 대한 신속하고 정확한 다중 테스트 수정 및 전력 추정. PLoS Genet 2009는 이에 대해 이야기하고 다른 참고 자료도 제공합니다. 그것은 당신이 말한 것과 비슷하게 들리지만, 더 정확한 글로벌 p- 값 보정을 얻는 것 외에도 LD 구조 지식은 인과 적 마커와 관련된 마커에서 발생하는 가짜 긍정을 제거하는 데 사용해야합니다.


2

정확히 같은 문제에 대한 해결책을 찾고 있습니다. 내가 찾은 최고는 Foulkes Andrea가 그의 책 Applied Statistical Genetics with R (2009) 에서 소개 한 Null Unrestricted Bootstrap 입니다. 다른 모든 기사와 서적과 달리 그는 특히 회귀를 고려합니다. 다른 방법 외에도 그는 Null Unrestricted Bootstrap에 조언합니다. 이는 잔차를 쉽게 계산할 수없는 경우에 적합합니다 (필자의 경우 와 같이 각각 독립적 인 회귀 분석 (기본적으로 간단한 상관 관계), 각각 동일한 반응 변수와 다른 스 니프를 가짐). 이 방법은 maxT 방법 이라고도합니다 .

> attach(fms)
> Actn3Bin <- > data.frame(actn3_r577x!="TT",actn3_rs540874!="AA",actn3_rs1815739!="TT",actn3_1671064!="GG")
> Mod <- summary(lm(NDRM.CH~.,data=Actn3Bin))
> CoefObs <- as.vector(Mod$coefficients[-1,1]) 
> B <-1000
> TestStatBoot <- matrix(nrow=B,ncol=NSnps)
> for (i in 1:B){
+    SampID <- sample(1:Nobs,size=Nobs, replace=T)
+    Ynew <- NDRM.CH[!MissDat][SampID]
+    Xnew <- Actn3BinC[SampID,]
+    CoefBoot <- summary(lm(Ynew~.,data=Xnew))$coefficients[-1,1]
+    SEBoot <- summary(lm(Ynew~.,data=Xnew))$coefficients[-1,2]
+    if (length(CoefBoot)==length(CoefObs)){
+       TestStatBoot[i,] <- (CoefBoot-CoefObs)/SEBoot
+    }
+ }

TestStatBoot^치명타.α=0.05^치명타.

보고합니다.나는나는^>치명타.

이 코드로 마지막 단계를 수행 할 수 있습니다

p.value<-0.05 # The target alpha threshold
digits<-1000000
library(gtools) # for binsearch

pValueFun<-function(cj)
{
   mean(apply(abs(TestStatBoot)>cj/digits,1,sum)>=1,na.rm=T)
}
ans<-binsearch(pValueFun,c(0.5*digits,100*digits),target=p.value)
p.level<-(1-pnorm(q=ans$where[[1]]/digits))*2 #two-sided.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.