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

使用ggemmeans绘制线性混合效应模型交互项的问题咨询

线性混合效应模型交互项绘图问题解决方案

背景代码

构建LMM模型

## create data    
iris$group = c(rep('A', each = 75),
               rep('B', each = 75))

iris$id = rep(c(1:10), each = 15)

## assign contrasts
iris$group <- factor(iris$group, levels=c('A', 'B'))
(contrasts(iris$group) <- matrix(dimnames=list(levels(iris$group), c('.sum.group')), c(-0.5, 0.5), nrow=2))

## build the model
  
LMM = lmer(Sepal.Length ~ 1 +
             Sepal.Width +
             Petal.Length +
             Petal.Width + 
             group*Petal.Width +
             (1|id),
           data = iris,
           control=lmerControl(optimizer="bobyqa",
                               optCtrl=list(maxfun=2e5)),
           REML = FALSE)

原绘图代码

ggemmeans(LMM, terms = c("Petal.Width", "group")) %>% plot()+ 
  geom_line(aes(linetype=group))+ 
  aes(linetype = group)+
  theme(legend.title = element_text(size=30),
        legend.position = 'top',
        legend.key.size = unit('1.5', 'cm'),
        axis.title.y = element_text(size = rel(2), angle = 90),
        axis.title.x = element_text(size = rel(2)),
        axis.text.x = element_text(size=20),
        axis.text.y = element_text(size=20))+ 
  scale_colour_manual(values = c("orangered", "purple"))

问题解决与修改后的代码

针对三个问题,逐一调整代码:

  1. 移除重复线条:原代码中ggemmeans(...) %>% plot()已经自动绘制了对应group的线条,额外添加geom_line()会导致线条重复(细虚线+粗虚线)。只需去掉重复的geom_line()和冗余的aes(linetype=group),并在plot()中直接指定linetype = "group"。

  2. 置信区间颜色匹配线条:通过在plot()中设置colour = "group",让线条和置信区间边框颜色与group绑定,再配合scale_colour_manual指定对应颜色;若需要填充置信区间,可额外设置fill = "group"并添加scale_fill_manual(可选)。

  3. 确保95%置信区间:在ggemmeans()中显式设置conf.level = 0.95,强制生成95%置信区间(默认虽为0.95,显式指定更稳妥)。

修改后的完整绘图代码

# 生成边际均值并指定95%置信区间
ggemmeans(LMM, terms = c("Petal.Width", "group"), conf.level = 0.95) %>%
  # 绘制时绑定颜色、线型到group,避免重复图层
  plot(colour = "group", linetype = "group", conf.int = TRUE) +
  # 自定义线条与置信区间边框颜色
  scale_colour_manual(values = c("orangered", "purple")) +
  # 可选:若需要置信区间填充色匹配,添加以下行
  # scale_fill_manual(values = c("orangered2", "purple2")) +
  # 主题设置
  theme(legend.title = element_text(size=30),
        legend.position = 'top',
        legend.key.size = unit('1.5', 'cm'),
        axis.title.y = element_text(size = rel(2), angle = 90),
        axis.title.x = element_text(size = rel(2)),
        axis.text.x = element_text(size=20),
        axis.text.y = element_text(size=20))

补充说明

  • 若希望置信区间仅显示边框而非填充,可在plot()中添加ribbon.args = list(fill = NA),这样只会保留与线条同色的置信区间边框。
  • ggemmeans()的conf.level参数直接控制置信区间水平,0.95对应95%置信区间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:45:34