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

使用contr_sum构建III型ANOVA模型后因子名称显示异常的解决方法

解决sjPlot中contr.sum对比下因子名称显示异常的问题

针对使用contr.sum构建III型ANOVA模型后,sjPlot的tab_model输出因子名称(如pH1)而非实际水平名称的问题,提供两种可行的解决方法:

方法一:使用tab_model的terms参数手动重命名

直接在tab_model函数中通过terms参数映射模型项与自定义显示名称,精准替换每个对比项的显示文本:

library(sjPlot)
library(stats)

# 生成数据并构建模型(你的原代码)
data <- data.frame(pH = rep(c(7.5, 7.75, 8.1), each = 10),
                 Photoperiod = rep(c("Day", "Night"), times = 15),
                 Phase = rep(c(1, 2), each = 15),
                 GR = runif(30, min = 0, max = 1))
data$pH <- as.factor(data$pH)
data$Photoperiod <- as.factor(data$Photoperiod)
data$Phase <- as.factor(data$Phase)
mod <- lm(GR ~ pH * Photoperiod * Phase, data=data, contrasts=list(pH=contr.sum, Photoperiod=contr.sum, Phase = contr.sum))

# 自定义显示名称
tab_model(mod,
          terms = list(
            "pH1" = "pH 7.5",
            "pH2" = "pH 7.75",
            "Photoperiod1" = "光周期:白天",
            "Phase1" = "阶段 1",
            "pH1:Photoperiod1" = "pH 7.5 × 白天",
            "pH2:Photoperiod1" = "pH 7.75 × 白天",
            "pH1:Phase1" = "pH 7.5 × 阶段 1",
            "pH2:Phase1" = "pH 7.75 × 阶段 1",
            "Photoperiod1:Phase1" = "白天 × 阶段 1",
            "pH1:Photoperiod1:Phase1" = "pH 7.5 × 白天 × 阶段 1",
            "pH2:Photoperiod1:Phase1" = "pH 7.75 × 白天 × 阶段 1"
          ))

说明:

  • 模型中pH1对应因子pH的第一个水平(7.5),pH2对应第二个水平(7.75),第三个水平(8.1)作为参照组(由前两个水平的负和体现);
  • 其他因子同理,Photoperiod1对应Day,Phase1对应1,可根据需求调整显示文本的表述。

方法二:提前设置因子水平的对比名称(进阶)

通过contrasts函数手动指定对比项的名称,替代默认的1、2后缀,这样tab_model会直接使用自定义的对比名称:

# 为pH因子设置带名称的sum对比
contrasts(data$pH) <- setNames(contr.sum(3), c("pH_7.5", "pH_7.75"))
# 为光周期设置带名称的sum对比
contrasts(data$Photoperiod) <- setNames(contr.sum(2), c("Photoperiod_Day"))
# 为阶段设置带名称的sum对比
contrasts(data$Phase) <- setNames(contr.sum(2), c("Phase_1"))

# 重新构建模型
mod <- lm(GR ~ pH * Photoperiod * Phase, data=data)

# 直接输出,此时模型项名称已自定义
tab_model(mod)

说明:

  • 这种方法在构建因子对比时就定义好名称,后续模型输出会自动沿用这些名称,无需在tab_model中重复映射;
  • 注意contr.sum的维度:3水平因子对应2个对比项,2水平因子对应1个对比项,命名数量要匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:40:25