- FDRでは複数の検定統計量が与えられたときに、個々の検定について、「帰無仮説に合致しているか」「対立仮説に合致しているか」をfdr : 1-fdrという値で示す
- fdrが小さいほど、対立仮説により強く合致することを示す(検定p値も小さいほど、対立仮説らしさが高い)
- 以下に2法示す
- BH法は複数のp値から、それぞれのfdrを出す
- local fdr法は統計量から、それぞれのfdrを出す
library(locfdr)
zex <- rnorm(1000)
zex <- c(zex,rnorm(200,3))
ps <- 1-2*abs(pnorm(zex)-0.5)
par(mfcol=c(2,3))
p.bh <- p.adjust(ps,method="BH")
plot(ps,p.bh,xlim=c(0,1),ylim=c(0,1))
w0 <- locfdr(zex,nulltype=0)
plot(ps,w0$fdr,xlim=c(0,1),ylim=c(0,1))
plot(w0$fdr,p.bh,xlim=c(0,1),ylim=c(0,1))
hist(p.bh)
hist(w0$fdr)
par(mfcol=c(1,1))
- local fdrの閾値の設定が両側で行われていることを明示するために、対立仮説を両側に立ててやってみる
zex <- rnorm(1000)
zex <- c(zex,rnorm(200,3))
zex <- c(zex,rnorm(100,-4))
ps <- 1-2*abs(pnorm(zex)-0.5)
par(mfcol=c(2,3))
p.bh <- p.adjust(ps,method="BH")
plot(ps,p.bh,xlim=c(0,1),ylim=c(0,1))
w0 <- locfdr(zex,nulltype=0)
plot(ps,w0$fdr,xlim=c(0,1),ylim=c(0,1))
plot(w0$fdr,p.bh,xlim=c(0,1),ylim=c(0,1))
hist(p.bh)
hist(w0$fdr)
par(mfcol=c(1,1))
- 統計量が正規分布型でないと推定がうまくいかないが、たとえばカイ二乗統計量で得られていたら、それを対応するz値にして、local fdrを実施することは可能
df <- 2
chi2<- rchisq(1000,df)
chi2 <- c(chi2,rchisq(200,df,10))
ps <- pchisq(chi2,df,lower.tail=FALSE)
zex <- qnorm(ps/2)
zex <- zex*sample(c(-1,1),length(zex),replace=TRUE)
par(mfcol=c(2,3))
p.bh <- p.adjust(ps,method="BH")
plot(ps,p.bh,xlim=c(0,1),ylim=c(0,1))
w1 <- locfdr(zex,nulltype=0)
plot(ps,w1$fdr,xlim=c(0,1),ylim=c(0,1))
plot(w1$fdr,p.bh,xlim=c(0,1),ylim=c(0,1))
hist(p.bh)
hist(w1$fdr)
par(mfcol=c(1,1))