许多 p 值在 Bonferroni 校正后等于 1;正常吗?

机器算法验证 假设检验 t检验 p 值 多重比较 邦费罗尼
2022-03-29 19:37:56

我有我在一天中的两个不同时间(上午和下午)研究的 10 只动物的行为数据。我正在寻找上午与下午的 8 种不同行为是否存在显着差异。我有两个站点(LL 和 WK),因此想查看每个站点的差异和组合数据。所以我进行了 24 次 t 检验,得到了合理的 p 值,主要表明两次之间没有显着差异。

然后我应用 Bonferroni 的校正因子来调整重复的 t 检验。然而,调整后的 p 值中有 22/24 现在等于 1,这对我来说似乎很奇怪。关于出了什么问题或这些调整后的值是否正确的任何想法?

这是我用来计算 Bonferroni 校正因子的代码:

data2$Bonferroni <- p.adjust(data2$raw.p, method = "bonferroni") 

我附上了我使用的数据,加上一列包括调整后的 p 值。 在此处输入图像描述

4个回答

没有出错。调整后的 p 值是正确的。调整后仅仅意味着根本没有证据可以拒绝零假设。p=1

然而

 p.adjust(data2$raw.p, method = "holm")

总是比 Bonferroni 调整好。Holm 方法是 Bonferroni 调整的逐步下降,提供与 Bonferroni 相同的错误率控制,但更强大(更小的 p 值)。正如帮助页面?p.adjust所说:

似乎没有理由使用未修改的 Bonferroni 校正,因为它受 Holm 方法的支配,这在任意假设下也是有效的。

对于您的具体实验,实际效果的证据非常少,即使使用 Holm 的方法也不会得到任何显着的结果。

感谢您阅读我 1997 年的 JASA 论文!

如果我有重来,我会重新表述我的评论,即(单步)Bonferroni 调整的 p 值不是“本身”的概率。(而且我不会再使用可怕的“本身”。Yecchhhh!)

假设完整的空模型,Bonferroni 调整后的 p 实际上是最小(随机)p 值小于(在离散情况下小于或等于)给定(固定)p 值的概率的上限描述随机性。当然,1.0 是任何概率的上限。

但我的论文更大更重要的一点是,假设经典线性模型,你可以精确地找到这些调整后的 p 值,从而解释多个检验统计量之间的相关性。当以单步方式计算时,这些精确调整的 p 值实际上是概率;见第 我的 JASA 数学论文的 302 篇。(要获得单步 p 值,您需要稍微修改表达式;请参阅我 1993 年的 Wiley-Interscience 书和我的 SAS 书)。虽然我使用增强的蒙特卡洛方法来近似这个确切的概率,但后来开发了更好的方法;请参见 Hothorn, T.、Bretz, F. 和 Westfall, P. (2008)。通用参数模型中的同时推理,生物统计学杂志 50(3),346–363。

因此,当精确计算时,单步调整的 p 值是真实的概率。

但是,除了最小的一个,降压调整的 p 值不是真正的概率。它们是由真实的概率构成的,但它们不是概率。

希望这可以帮助!

只是添加到@gordon-smyth 和@student-t 的答案。另一种看待它的方法是自己调整级别,而不是通过函数对于Bonferroni 校正,这很容易。如果您的级别是,那么您将其除以测试数,这就是您的新 Bonferroni 调整后的级别。αpp.adjust()α0.05α

在你的情况下正如您所看到的,您的 ' 没有一个能做到这一点。所以你的输出是有意义的。0.05/24=0.00208raw.p

如果您想使用Holm-Bonferroni 方法,您也可以手动快速完成(参见此处)。

一切都按预期进行,因为 Bonferroni 可以为您提供大于 1 的调整后 p 值。R 函数将其四舍五入为 1,因为超过 1 的概率没有意义。这是 Bonferroni 显示统计功效降低的示例。

您可能想尝试其他多重比较方法或调整显着性水平。