为什么要麻烦 Benjamini-Hochberg 校正?

机器算法验证 统计能力 错误发现率
2022-04-20 02:17:34

我最近在阅读 Efron 的同时推理论文(2008 年),其中他指出 FDR 分析对于将测试拆分为多个相互排斥的测试系列、对这些子集执行分析然后组合结果是稳健的(参见第 5 节. 单独分析是否合法)。

这让我想知道以下问题:如果我有检验,为什么不对每个假设单独运行 FDR 分析,然后合并结果?p

我们知道像 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。

1个回答

这是一个很好的问题,但你有几个概念混淆了。

首先,要回答您更广泛的问题,是的,当您拥有有关您正在研究的系统的先验信息时,拆分 p 值并分别对它们进行校正是一种经常执行且众所周知的方法。要查看这方面的更多示例和独立测试的证明,请参阅 Lei Sun 等人。这种方法背后的想法是保持相同水平的 FDR 控制,但增加您发现的真阳性的数量,这样每个人都会赢!1

您的实际问题的答案(为什么不采用每个测试都是唯一层的微不足道的情况)在于估计器的行为。正如 Sun 论文中所详述的,要使用固定的 FDR 框架(即保持相同的 FDR 并拒绝尽可能多的测试,从而导致发现的真阳性数量增加),必须多年来一直是该领域的一个有争议的问题。是真空假设的比例,而是它的估计量。您可以在估计和 FDR下的方法部分讨论中自行阅读π0π^0π0π^0π0如果你愿意的话。估计的偏差不会随着层数的增加而增加,但方差会增加;所以当我们增加层数时,我们有一个越来越差的估计量,这意味着我们有一个越来越差的估计量,或者需要拒绝空值的 p 值为了保持整体 FDR 控制。如果我不得不猜测,并且除了直觉之外我没有其他证据,我会说当层数等于​​时所有的期望值将只是,这否定了做这个练习的目的。π0π0α(k)γαkkkγ

我想知道你从哪里得到罗斯福过于谨慎的想法;这不是我的印象。事实上,许多人发现经验 FDR 与控制率非常匹配,除非在特殊类型的依赖关系的情况下(参见此处的讨论)。您在模拟中发现的不是 FDR,而是误报率。您没有真正的阳性关联,因此根据定义,您的 FDR 始终为 1,因为 FDR 是假阳性对所有阳性的预期值。您创建了一个随机生成数据的设置,您发现 1) P 值和 2) BH 校正的 P 值(值实际上是一个不同的概念,并且是 John Storey 实现独有的q2)。您发现 5% 的未校正 P 值在全部为假时拒绝了 null,这就是您所做您还发现 0% 的 FDR 校正 P 值拒绝了零值,这完全是意料之中的,因为您没有要识别的真阳性,而且您的结果都在偶然范围内。所以真的,你发现 FDR 正在做它应该做的事!α

[1] Sun L、Craiu RV、Paterson AD 和 Bull SB(2006 年)。应用于全基因组关联研究的大规模假设检验的分层错误发现控制。遗传流行病学三十:519-530。

[2] https://projecteuclid.org/euclid.aos/1074290335