我最近在阅读 Efron 的同时推理论文(2008 年),其中他指出 FDR 分析对于将测试拆分为多个相互排斥的测试系列、对这些子集执行分析然后组合结果是稳健的(参见第 5 节. 单独分析是否合法)。
这让我想知道以下问题:如果我有检验,为什么不对每个假设单独运行 FDR 分析,然后合并结果?
我们知道像 Benjamini-Hochberg 这样的程序可以用来控制 FDR。然而,它似乎过于保守,因为经验 FDR 通常远低于对照 FDR。
考虑以下简单示例:
ni = 100
nj = 10000
fdr = vapply(1:ni, function(i) {
X = matrix(rnorm(ni * nj), ncol = nj)
pvalues = apply(X, MARGIN = 2, function(x)
t.test(x[1:50],x[51:100])$p.value)
qvalues = p.adjust(pvalues, method = 'BH')
pfdr = length(which(pvalues < 0.05)) / nj
qfdr = length(which(qvalues < 0.05)) / nj
return(c(pfdr,qfdr))
}, numeric(2))
在左侧,我们看到 (i) 100 次重复的 FDR,我们分别控制每个假设的 FDR;在右侧,我们看到 (ii) 100 次重复的组控制。
所以方法(i)与控制率非常匹配,而方法(ii)(Benjamini-Hochberg)在这个意义上是非常保守的。
我的问题是:最强大的控制程序难道不是经验 FDR 与控制率相匹配的程序吗?为什么我们会选择比这更“有效”的东西?
Efron,B(2008 年),“同时推理:何时应结合假设检验问题?”,AAS 2(1):197-223。
