为何R中modelbased包estimate_contrasts的95%CI含0但p<0.05?
线性混合效应模型中置信区间与校正p值的矛盾解释
问题背景
我使用lme4包的lmer()函数拟合了线性混合效应模型,公式为:
Response ~ Age + Gender + tOrder + Condition * Scale + (1|Participant)
随后使用modelbased包的estimate_contrasts()进行组间对比分析,代码及输出结果如下:
(mbc <- modelbased::estimate_contrasts(mdl.LMM,contrast="Condition",at="Scale"))
输出结果表格:
Level1 | Level2 | Scale | Difference | 95% CI | SE | df | t | p L1 | L2 | A | 0.31 | [-0.02, 0.65] | 0.14 | 221.15 | 2.25 | 0.076 L1 | L2 | B | 0.19 | [-0.14, 0.53] | 0.14 | 221.75 | 1.41 | 0.320 L1 | L2 | C | 0.37 | [ 0.05, 0.70] | 0.14 | 221.57 | 2.75 | 0.013 L3 | L2 | A | 0.18 | [-0.17, 0.53] | 0.14 | 221.39 | 1.27 | 0.414 L3 | L2 | B | -0.07 | [-0.43, 0.28] | 0.15 | 221.74 | -0.49 | 0.621 L3 | L2 | C | 0.67 | [ 0.32, 1.01] | 0.14 | 221.56 | 4.66 | < .001 L3 | L1 | A | -0.13 | [-0.47, 0.20] | 0.14 | 221.10 | -0.94 | 0.414 L3 | L1 | B | -0.27 | [-0.62, 0.08] | 0.15 | 221.75 | -1.84 | 0.200 L3 | L1 | C | 0.29 | [-0.04, 0.63] | 0.14 | 221.50 | 2.10 | 0.037
疑问点
- 最后一行结果中,95%置信区间包含0,但校正后的p值却小于0.05,与“置信区间和p值判断应一致”的认知冲突。
- 第一行结果中,差值和t值更大,置信区间更接近0但仍包含0,可校正后的p值却大于0.05。
- 已知
estimate_contrasts()默认采用Holm(1979)多重比较校正方法,希望解释这种矛盾或指出理解误区。
解答
核心原因:置信区间与p值的校正逻辑不匹配
estimate_contrasts()默认输出的95%置信区间未经过多重比较校正,但p值是经过Holm校正后的结果,这是两者出现矛盾的关键:
- 未校正的置信区间:基于单个对比的标准误计算,仅控制该单一对比的I类错误率为5%。
- Holm校正后的p值:通过对所有对比的p值排序并调整显著性阈值,控制整体的家族式错误率(FWER),相当于对每个对比的显著性判断进行了“从严”处理。
具体案例解析
- 最后一行(L3 vs L1,Scale C):
未校正的置信区间包含0,说明仅看这一个对比时无统计学意义;但经过Holm校正后,该对比的原始p值在所有9个对比中排序较靠前,校正后的阈值仍低于它的原始p值,因此被判定为显著(p<0.05)。 - 第一行(L1 vs L2,Scale A):
虽然差值和t值更大,但它的原始p值在所有对比中排序更靠后,Holm校正对其阈值的调整幅度更大,导致校正后的p值超过0.05,最终判定为不显著。
实现置信区间与p值判断一致的方法
若想让两者的判断逻辑统一,可以通过调整estimate_contrasts()的参数实现:
- 对置信区间也进行Holm校正:添加
adjust = "holm"参数,此时校正后的置信区间与校正后的p值判断会完全一致——置信区间不包含0的对比,p值<0.05;置信区间包含0的对比,p值>0.05。 - 不进行任何多重比较校正:设置
adjust = "none",此时p值和置信区间都基于单个对比的I类错误率控制,结果会完全匹配。
内容的提问来源于stack exchange,提问作者dstolz
相关产品推荐
相关产品推荐

