Benjamini-Hochberg 过程的拒绝阈值

机器算法验证 统计学意义 多重比较 邦费罗尼 错误发现率
2022-03-20 09:39:13

是否有可能计算或估计 Benjamini-Hochberg 程序 (BH) 的总体拒绝阈值?

对于使用 Bonferroni 方法的 FWER 校正,显着性阈值被调整为评估假设的数量如下但是由于 BH 程序为每个独立假设值,该假设与先验定义的 FDR 进行比较,我不确定如何做到这一点。mα¯=αmq

3个回答

如您所见,对于错误发现率的Benjamini-Hochberg控制,没有固定的 p 值截止值。截止值取决于您一起评估您将它们按升序排列并从最低 p 值计数值对假设“拒绝原假设” mk(k=1)k

对于给定的,找到最大的使得αkP(k)kmα.

如果零假设都成立,因此 [0,1] 中的 p 值均匀分布,则 p 值截止值将接近如果一些零假设不成立,你会低于多少取决于 p 值分布的不均匀程度。α

我不确定这种方法的形式有效性,但您可以计算出 Hochberg 方法给出的相应 FWER。

用于控制错误发现率的 Benjamini-Hochberg 程序是(我将引用维基百科

...我们有空假设测试和它们对应的p值。我们按升序列出这些p表示它们。...H1HmP1PmP(1)P(m)

  1. 对于给定的,找到最大的使得αkP(k)kmα.
  2. 对于的原假设(即声明发现)H(i)i=1,,k

该方法将 FDR 设置为,即,在被拒绝的假设中,我们期望 I 类错误的分数为αα

另一方面,全族错误率是在一组被拒绝的假设中至少出现一个 I 类错误的概率。Hochberg 方法通过类似于 BH FDR 方法的计算来完成此操作(再次引用Wikipedia),

  • 首先对p值排序(从最低到最高)并让相关假设为 P(1)P(m)H(1)H(m)
  • 对于给定的,令是最大的使得αRkP(k)αmk+1
  • 拒绝原假设H(1)H(R)

您可以将这些放在一起 1) 定义 FDR,2) 确定最大的拒绝p和拒绝假设的总数,3) 计算相应的 Hochberg FWER作为 αpkmα~

α~=p×(mk+1)

经过一番思考,我相信在 BH 程序之后最后一次(按等级)显着性检验的未调整 p 值最接近显着性阈值。

一个例子:

执行 BH 程序:

  1. 一些p值:0.0001,0.0234,0.3354,0.0021,0.5211,0.9123,0.0008,0.0293,0.0500,1.000

  2. 订购它们:0.0001,0.0008,0.0021,0.0234,0.0293,0.0500,0.3354,0.5211,0.9123,1.0000

  3. 计算所有 10 个等级的 q 值:,对于qi=imαi=1,2,..,m

  4. 找到小于其对应 q 值的最大排名 p 值。

结果:

Rankq-valuep-valueSignificance (BH)10.0050.0001True20.010.0008True30.0150.0021True40.020.0234False50.0250.0293False60.030.05False70.0350.3354False80.040.5211False90.0450.9123False100.051False

在表中,我们可以看到Rank 3以上的所有测试都不显着,因此我们可以得出结论,0.0021作为我们的显着性阈值。相比之下,Bonferroni 校正的阈值为αm=0.005

这是我用于此示例的 R 代码:

# generate p-values
pValues <- c(0.0001,0.0234,0.3354,0.0021,0.5211,0.9123,0.0008,0.0293,0.0500, 1)

# order the p-values
pValues <- sort(pValues)

# BH-procedure
alpha <- 0.05
m <- length(pValues)
qValues <- c()


for (i in 1:m){
  qV <- (i/m)*alpha
  qValues <- append(qValues, qV)
}

# find the largest p-value that satisfies p_i < q_i  
BH_test <- qValues > pValues

# largest k is 3, thus threshold is 0.0021
threshold <- p[sum(BH_test)];threshold