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

如何为ggformula包的geom_spline添加置信区间?

为geom_spline添加置信区间的方法

geom_spline本身没有像geom_smooth那样内置的置信区间绘制参数,需要手动拟合样条模型并计算置信区间,再用geom_ribbon添加到图中。以下是具体实现步骤:

1. 拟合模型并计算置信区间

按分组拟合样条模型,生成包含预测值和置信区间的数据集:

library(ggplot2)
library(splines)
library(dplyr)

# 按condition分组处理,拟合样条模型并计算置信区间
pred_data <- data_long4 %>%
  group_by(condition) %>%
  do({
    # 用自然样条拟合模型,df参数与geom_spline保持一致
    model <- lm(Area ~ ns(time, df = 3), data = .)
    # 生成更平滑的time序列用于预测
    new_time <- seq(min(.$time), max(.$time), length.out = 100)
    # 计算预测值及95%置信区间
    pred <- predict(model, newdata = data.frame(time = new_time), interval = "confidence")
    # 整理结果为数据框
    data.frame(
      time = new_time,
      fit = pred[, "fit"],
      lwr = pred[, "lwr"],
      upr = pred[, "upr"],
      condition = .$condition[1]
    )
  })

2. 绘制带置信区间的图形

将散点、样条曲线和置信区间组合绘制:

ggplot(data_long4, aes(x = time, y = Area, color = condition)) +
  geom_point() +
  # 绘制样条拟合曲线
  geom_spline(nknots = 5, df = 3) +
  # 添加置信区间带,alpha控制透明度
  geom_ribbon(
    data = pred_data,
    aes(y = fit, ymin = lwr, ymax = upr, fill = condition),
    alpha = 0.2,
    color = NA  # 隐藏置信区间带的边框
  )

说明

  • 这里使用ns()自然样条函数拟合模型,参数df与geom_spline中的设置保持一致,确保拟合曲线和置信区间的匹配度。
  • 如果需要使用其他类型的样条(如B样条),可替换为bs()函数,同时调整geom_spline的对应参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:45:32