同一lmer模型在summary、modelsummary与sjPlot的p值差异问题
lmer模型p值在summary()与modelsummary/sjPlot中存在差异的原因分析
核心原因
两者的p值差异源于统计量计算的精度处理或自由度近似逻辑的细微不同,并非工具直接提取模型输出的问题。
具体机制
lmerTest的summary()输出:默认采用Satterthwaite方法计算自由度,计算过程中保留了更多中间步骤的数值精度,直接基于模型对象内部存储的精确自由度和t统计量计算p值,结果精度更高。modelsummary/sjPlot的结果提取:这类工具底层依赖broom.mixed包解析模型对象。broom.mixed处理lmerTest模型时,可能对t统计量或自由度进行了四舍五入,或是采用了与summary()略有差异的自由度近似实现,最终导致p值出现细微偏差。
解决建议
如果结果接近显著性阈值,优先以summary(modelZ)输出的p值为准;也可以手动计算验证:使用summary()给出的t值和自由度,通过pt(abs(t_value), df=df_value, lower.tail=FALSE)*2计算双侧p值,确保结果精确性。
内容的提问来源于stack exchange,提问作者ThijsZ
相关产品推荐
相关产品推荐

