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

R中扩展模型绘图X轴时,如何同步延伸模型线与置信区间?

解决ggplot扩展X轴后模型线与置信区间不延伸的问题

问题根源

你当前的预测数据wpred仅基于原始数据集的Year范围(1967-2019)生成,扩展X轴到2100后,超出原始数据范围的部分没有对应的拟合值和置信区间,因此模型线和置信区间无法延伸。

解决步骤

需要生成覆盖1967到2100的完整Year序列,用该序列重新预测模型的拟合值与置信区间,再基于新数据绘图:

  1. 生成扩展范围的Year序列
# 创建包含1967到2100所有年份的新数据框
new_data <- data.frame(Year = seq(from = 1967, to = 2100, by = 1))
  1. 基于新序列预测拟合值与置信区间
# 使用drm模型预测扩展范围的结果,包含95%置信区间
wpred_extended <- predict(wmod, newdata = new_data, interval = 'conf', level = 0.95)
# 合并新年份数据与预测结果
y_extended <- cbind(new_data, wpred_extended)
  1. 重新绘制图形
    注:原代码中geom_line(aes(y=fitted(w2)))的w2应为wmod(笔误修正),绘图时用原始数据点,用扩展后的预测数据画模型线和置信区间:
ggplot() +
  # 绘制原始数据点
  geom_point(data = women, aes(x = Year, y = Time)) +
  # 绘制扩展范围的模型拟合线
  geom_line(data = y_extended, aes(x = Year, y = fit)) +
  # 绘制扩展范围的置信区间
  geom_ribbon(data = y_extended, aes(x = Year, ymin = Lower, ymax = Upper), 
              alpha = 0.3, fill = "pink") +
  theme_minimal() +
  ggtitle('Womens Fitted Model') +
  theme(plot.title = element_text(hjust = 0.5, face = "bold")) +
  # 设置X轴范围
  scale_x_continuous(limits = c(1967, 2100))

额外说明

  • 你使用的Year-1967是中心化处理,predict函数会自动识别新数据中的Year并完成中心化计算,无需手动转换。
  • 如果需要更平滑的曲线,可以调整seq的by参数(比如设为0.5),生成更密集的Year序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:35:17