You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何sjPlot的tab_model()与Anova()输出的LMM p值不一致?

LMM中tab_model与Anova() p值不匹配的解决方法

核心原因分析

你的问题大概率来自以下两种差异:

  1. 检验对象不同:
    • car::Anova()默认输出固定效应的整体联合检验p值(比如多分类因子的整体显著性);而tab_model()默认输出单个参数的Wald检验p值(比如因子每个水平相对于参照组的显著性)。这是最常见的不一致原因。
  2. 检验方法与参数设置差异:
    • 两者默认的检验统计量、自由度近似方法、平方和类型可能不同:Anova()默认用Type II平方和的卡方/F检验,而tab_model()默认用Wald z/t检验,即使指定df.method,统计量的计算逻辑仍可能存在差异。

具体解决步骤

1. 统一检验对象:让tab_model输出整体效应p值

如果Anova()的显著结果是针对某个多分类因子的整体效应,在tab_model()中添加test = "anova"参数,切换到整体效应检验模式,与Anova()的输出对齐:

tab_model(my_lmm,
          seed = 42,
          show.se = TRUE, 
          show.stat = FALSE,
          show.intercept = FALSE, 
          show.df = FALSE,
          show.re.var = FALSE,
          show.icc = TRUE,
          show.obs = FALSE,
          p.style = "scientific",
          p.threshold = c(0.05),
          p.adjust = NULL,
          df.method = "satterthwaite",
          digits = 6, 
          digits.p = 3,
          test = "anova")  # 关键参数:输出整体效应的ANOVA p值

2. 统一检验方法与参数设置

如果是单个参数的p值不一致,需要让两者的检验逻辑完全对齐:

  • 对Anova()显式指定平方和类型、检验统计量和自由度近似方法:
    # 使用Type II平方和、Satterthwaite近似的F检验,与tab_model的df.method匹配
    car::Anova(my_lmm, type = "II", test.statistic = "F", df.method = "satterthwaite")
    
  • 确保tab_model()的df.method与Anova()一致,同时关闭p值校正(你已经设置p.adjust = NULL,这一步没问题)。

3. 手动验证统计量

如果仍有差异,可以手动计算单个参数的检验统计量验证:

  • 从summary(my_lmm)中提取固定效应的估计值和标准误,计算t值(估计值/标准误);
  • 用pt()函数结合Satterthwaite自由度计算p值,对比tab_model()和Anova()的结果,定位差异来源。

内容的提问来源于stack exchange,提问作者Merle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:12:46