为何Benjamini Hochberg与Bonferroni校正的p.adjusted结果一致?
BH与Bonferroni校正结果相同的原因
核心原因是你只做了1次两两比较。
- Bonferroni校正逻辑:校正后p值 = 原始p值 × 检验次数
- BH校正逻辑:对排序后的多个p值依次调整,但仅当存在多个检验时才会改变原始p值
你的数据里只有a和b两个组别,pairwise.t.test只执行了1次t检验。此时:
- Bonferroni校正:原始p值 × 1 = 原始p值
- BH校正:唯一的p值不需要调整,结果等于原始p值
因此两种方法输出的p值完全一致。
如果要观察两种校正方法的差异,只需增加组别数量(比如3组及以上),此时会产生多次两两比较,两种方法的结果就会明显不同。示例代码如下:
# 生成3组差异数据 dpnd <- c(rnorm(25, mean = 0), rnorm(25, mean = 1), rnorm(25, mean = 2)) indpnd <- c(rep("a",25), rep("b",25), rep("c",25)) # 分别用两种方法校正 bonf_result <- pairwise.t.test(dpnd, indpnd, p.adjust.method="bonferroni") bh_result <- pairwise.t.test(dpnd, indpnd, p.adjust.method="BH") # 查看结果 bonf_result bh_result
运行后你会发现,Bonferroni校正后的p值普遍比BH校正的更高——因为Bonferroni是更保守的多重检验校正方法,而BH方法在控制假发现率的同时,保留了更高的统计效力。
内容的提问来源于stack exchange,提问作者Chemokine1
相关产品推荐
相关产品推荐

