我有一个需要校正多重比较的 p 值向量;基于阅读Noble (2009),我正在尝试应用基于 Benjamini-Hochberg FDR 的校正。
我的向量(为便于可视化按升序排序)是:
ps <- c(0.019, 0.022, 0.023, 0.023, 0.025, 0.025, 0.027, 0.028, 0.029, 0.030, 0.030, 0.030, 0.031, 0.033, 0.034, 0.035, 0.036, 0.037, 0.037, 0.039, 0.051, 0.060, 0.063 , 0.065, 0.085, 0.110, 0.170, 0.196, 0.241, 0.316, 0.318, 0.325, 0.694)
当我运行 R 命令时
p.adjust(ps, method="BH")
I get the output:
0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06426316 0.06435000 0.08014286 0.08937500 0.08937500 0.08937500 0.11220000 0.13961538 0.20777778 0.23100000 0.27424138 0.33515625 0.33515625 0.33515625 0.69400000
该输出显然具有某些过度代表的值。鉴于它们与小数点后 8 位相同,我认为这不可能是偶然发生的。如果我绘制原始值和调整后的值,它们都遵循相同的地形,但只要原始值具有小斜率,调整后的值就会平稳。
绘图(ps~order(ps))
点(p.adjust(ps,method =“BH”)~order(ps),add = TRUE,col =“red”)
通常,当原始 p 值与次高值的差异 <0.01 时,校正值似乎相同。不过,我不明白为什么;我已经阅读并深入研究了 p.adjust 代码,但想不出什么会导致这种效果。任何见解将不胜感激!

这些将在相同的阈值处被拒绝并对应于相同的最小