如何在ggplot中添加nlme模型拟合线并显示置信区间?
解决nlme模型拟合线置信区间不显示的问题
问题根源
你当前代码中使用stat_smooth(method = "lm")是在ggpredict_data基础上重新拟合了普通线性模型,而非调用ggpredict已计算好的置信区间数据,因此设置se = TRUE不会生效。ggpredict输出结果已包含预测值(predicted)以及置信/预测区间的上下限(lower和upper列),直接用这些数据绘图即可。
修正后的绘图代码
# 生成模型预测及区间数据 ggpredict_data <- ggpredict(my_model, c("time", "group"), type = "re") ggplot() + # 绘制置信区间填充区域 geom_ribbon(data = ggpredict_data, aes(x = x, ymin = lower, ymax = upper, fill = group), alpha = 0.2) + # 半透明填充,避免遮挡原始数据点 # 绘制模型拟合线 geom_line(data = ggpredict_data, aes(x = x, y = predicted, colour = group), linewidth = 1) + # 绘制原始数据点 geom_point(data = my_data, aes(x = time, y = metric, colour = group)) + labs(x = "time", y = "metric") # 可根据需求修改坐标轴标签
关键说明
geom_ribbon是绘制区间填充的专用图层,通过ymin和ymax映射ggpredict_data中的lower和upper列生成置信/预测区间。type = "re"表示包含随机效应的预测区间,若需要群体水平的置信区间,可改为type = "fe",ggpredict会自动计算对应上下限。- 调整
alpha参数可改变填充区域透明度,让原始数据点更清晰。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

