2013-03-14 1 views
1

R 패키지 멀티 테스트를 사용하여 다중 테스트를 위해 p 값 목록을 조정하려고합니다. 그러나 multtest는 분석 된 p 값 목록에 동일한 길이의 "1"문자 목록 만 반환합니다.R의 멀티 테스트 패키지가 p- 값을 올바르게 조정하지 못함

입력 파일은 pvalues가 개행 문자로 구분 된 텍스트 파일입니다.

0.182942602 
0.333002877 
0.282000206 
0.161501682 
0.161501682 

내가 Bioconductor에서 multtest 패키지 (multtest_2.14.0를) 다운로드 및 R 버전 64 2.15.2에서 실행하고 : 파일의 세그먼트는 아래에 재현된다. multtest와 R 2.15.2 사이에 호환성 문제가 있는지 아는 사람 있습니까?

내 코드 :

이 P-값의 벡터 내에서 유의하다고 할 수있는 P-값이없는 경우이 올바른 조정 인 오류 - 아니다
library(multtest, verbose = FALSE) 
table1 <- read.table("p-values.txt", header = FALSE, colClasses = "double") 
table2 <-as.vector(as.double(table1[,1])) 
results<-p.adjust(table2, method = c("holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none")) 
write.table(results, file = "output.txt") 
+0

당신이 있는지 있습니까해야 의미 한 것을 의미 벡터 1의 값이 올바른 조정이 아닙니까? P- 값의 입력 벡터는 얼마 동안이며, 가장 작은 값은 무엇입니까? (가장 작은 값이'1/n'보다 크면'n'은 p- 값의 수이고, Bonferroni 보정은 실제로 1의 벡터가됩니다.) –

+0

(또한 왜 여러 메소드를 전달하고 있습니까? ? 메서드의 인수 하나만 필요하므로이 경우 첫 번째 메서드 인 Holm을 사용합니다. –

답변

1

.

코드가 홀임 보정을 수행합니다 (method은 하나의 인수 만 사용하고이 경우 벡터의 첫 번째 항목 인 "holm" 메서드를 사용합니다). 홀름 방법은 정확하게 그 상황 (이 여러 가설 테스트 프레임 워크를 사용하여)에서

min(p) * length(p) > 1 

이 중요한 고려 될 수있는 벡터에는 P-값이 없는지 경우에 모두 1을 반환합니다.


당신이합니다 (multtest 패키지에서 직접 촬영)을 holm 방법에 대한 코드를 피투성이의 세부 정보를 확인하려는 경우

i <- seq_len(lp) 
o <- order(p) 
ro <- order(o) 
pmin(1, cummax((n - i + 1L) * p[o]))[ro] 
p는 입력 벡터이다

lp하고있다 n은 벡터의 길이입니다. 그 표현 (n - i + 1L) * p[o]은 "정렬 된 목록의 각 항목에 대해 n+1에서 색인을 뺀 다음 값을 곱합니다"라고 말합니다. 최소 항목은 (n + 1 - 1) * min(p) ->n * min(p)입니다. cummax은 누적 최대 값을 의미합니다. 이는 다음 항목이 첫 번째 값보다 작을 수 없음을 의미합니다. pmin(1, ...)은 벡터의 모든 항목에 대해 항목이 1보다 큰 경우 p 값이 약 1이므로 의미가 없으므로 값을 1로 설정한다는 것을 의미합니다.

n * min(p)가 1보다 큰 경우, 다음 작은 항목의 조정 p- 값은 모든 항목의 조정 p- 값은 1

관련 문제