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

使用偏移变量时,如何在R中绘制负二项回归拟合值及95%置信带?

使用偏移变量时提取负二项模型拟合值置信限并绘图的方法

你可以借助predict()函数在链接尺度(log尺度)上提取拟合值与标准误,再转换回响应尺度并结合偏移变量调整,无需手动推导置信区间公式。以下是具体步骤:

1. 准备预测数据集

为了得到平滑的拟合曲线,建议创建包含连续x序列的新数据集,若要聚焦x对响应的影响,可将偏移变量固定为均值:

# 创建预测用数据集,x取序列值,offset固定为原始数据均值
pred_data <- data.frame(
  x = seq(min(x), max(x), length.out = 100),
  offset_1 = mean(offset_1)
)

2. 提取链接尺度的拟合值与标准误

在链接尺度(log)下计算置信区间更可靠(近似正态分布),通过se.fit = TRUE参数获取标准误:

# 获取log尺度的拟合值和标准误
pred_log <- predict(nb.model, newdata = pred_data, type = "link", se.fit = TRUE)

# 计算95%置信区间(log尺度)
pred_log$upper <- pred_log$fit + 1.96 * pred_log$se.fit
pred_log$lower <- pred_log$fit - 1.96 * pred_log$se.fit

3. 转换为单位偏移的响应尺度

由于模型中使用了offset(log(offset_1)),需将log尺度结果转换为响应尺度后,再除以偏移变量得到单位偏移的响应值:

# 转换到响应尺度,并除以offset得到单位值
pred_data$fit <- exp(pred_log$fit) / pred_data$offset_1
pred_data$upper <- exp(pred_log$upper) / pred_data$offset_1
pred_data$lower <- exp(pred_log$lower) / pred_data$offset_1

4. 绘制拟合曲线与置信区间

以ggplot2为例,同时展示原始数据点和拟合结果:

library(ggplot2)

ggplot(pred_data, aes(x = x)) +
  geom_point(data = newdata, aes(y = y / offset_1), color = "gray50") +  # 原始单位偏移数据点
  geom_line(aes(y = fit), color = "blue", linewidth = 1) +  # 拟合线
  geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.2, fill = "blue") +  # 95%置信区间
  labs(x = "x", y = "单位偏移的响应值", title = "负二项模型拟合结果") +
  theme_bw()

关键提示

  • 不建议直接在响应尺度计算置信区间:负二项模型的响应尺度数据不符合正态分布,在链接尺度计算后再转换,结果更准确。
  • 若需保留原始数据的偏移值进行预测,只需将pred_data中的offset_1替换为对应原始值即可,其余步骤不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:48:14