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

如何在观测值上叠加绘制线性混合模型的预测值

实现步骤

你可以通过predict()计算模型预测值后,用ggplot2叠加绘制,完整操作如下:

1. 计算两类预测值

# 个体水平预测值:纳入随机截距,匹配每个ID的观测偏移(predict默认参数level=1)
mydata$pred_individual <- predict(model1)
# 总体边际预测值:仅使用固定效应,反映年龄对结局的总体平均效应
mydata$pred_marginal <- predict(model1, level = 0)

2. 绘制叠加图

版本一:同时展示个体拟合线与总体趋势

ggplot(mydata, aes(x = age, y = continuous_outcome)) +
  # 原始观测散点
  geom_point(aes(color = ID), alpha = 0.6, size = 2) +
  # 每个ID的个体拟合线
  geom_line(aes(y = pred_individual, color = ID), linewidth = 0.8) +
  # 总体平均拟合线(红色虚线)
  geom_line(aes(y = pred_marginal), color = "red", linewidth = 1.2, linetype = "dashed") +
  labs(
    x = "年龄", 
    y = "连续结局指标", 
    title = "观测值与混合模型预测值对比"
  ) +
  theme_bw() +
  theme(legend.position = "none") # ID数量过多时可隐藏图例避免杂乱

版本二:仅展示总体平均趋势

ggplot(mydata, aes(x = age, y = continuous_outcome)) +
  geom_point(alpha = 0.6, size = 2) +
  geom_line(aes(y = pred_marginal), color = "red", linewidth = 1.2) +
  labs(x = "年龄", y = "连续结局指标") +
  theme_bw()

额外适配:带2个结点样条的模型

如果你要使用提到的2个结点样条模型,只需修改模型定义部分即可,预测、绘图逻辑完全一致:

library(splines)
# 构建带2个结点的限制性立方样条模型
model_spline <- lme(
  data = mydata,
  fixed = continuous_outcome ~ ns(age, knots = quantile(age, c(1/3, 2/3))),
  random = ~1|ID
)
# 计算样条模型的边际预测值
mydata$pred_spline <- predict(model_spline, level = 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:48:04