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

如何用marginaleffects绘制双组含95%CI的单张群体预测图?

解决方案

要把CONTROL和INT两组的预测轨迹及置信区间放在同一张图里,核心是调整预测数据的生成方式,再用ggplot的分组映射替代分面,具体步骤如下:

1. 生成包含两组的群体水平预测数据

使用marginaleffects::predictions()时,明确指定要生成所有group水平在time_cont全范围内的预测值,同时通过re_formula = NA固定随机效应,得到群体水平的结果:

library(marginaleffects)
library(tidyr)
library(ggplot2)

# 假设你的混合模型包含time_cont与group的交互项(适配轨迹比较需求)
model <- lmer(outcome ~ time_cont * group + (1 + time_cont | subject), data = your_data)

# 生成预测数据:crossing生成time_cont序列和group两个水平的所有组合
pred_data <- predictions(
    model,
    newdata = crossing(
        time_cont = seq(min(your_data$time_cont), max(your_data$time_cont), length.out = 100),
        group = c("CONTROL", "INT")
    ),
    re_formula = NA  # 生成群体水平预测,忽略随机效应
)

2. 用ggplot绘制同图双组轨迹

不再使用facet_wrap,而是将group映射到颜色(或线型),同时用geom_ribbon绘制置信区间,geom_line绘制预测线:

ggplot(pred_data, aes(x = time_cont, y = estimate, color = group)) +
    # 绘制95%置信区间
    geom_ribbon(
        aes(ymin = conf.low, ymax = conf.high, fill = group),
        alpha = 0.2, color = NA
    ) +
    # 绘制预测线
    geom_line(linewidth = 1) +
    # 调整标签与主题
    labs(
        x = "连续时间",
        y = "预测结果",
        color = "分组",
        fill = "分组"
    ) +
    theme_minimal()

关键说明

  • crossing()函数确保生成time_cont和group的全组合,让两组都有完整的预测序列
  • re_formula = NA是混合模型生成群体水平预测的核心参数,避免随机效应带来的个体差异干扰
  • 用color区分线条、fill区分置信区间填充色,搭配alpha调整透明度,避免区间遮挡线条

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:20:25