如何在R中从泊松回归提取因子各水平的95%CI率估计
提取泊松回归中X各水平的率估计及95%置信区间
你的模型采用log链接的泊松回归,且包含offset(log(time)),因此拟合的是事件率(即单位时间内的事件发生数,公式为E(outcome) = rate × time)。要提取二水平因子X各水平的率估计及95%置信区间,有两种常用方法:
方法一:用emmeans包快速计算(推荐)
emmeans包可直接计算变量的边际均值,并自动转换到响应尺度(即率的尺度):
- 安装并加载包:
install.packages("emmeans") library(emmeans)
- 计算X各水平的率估计及置信区间:
# 针对X变量计算边际均值,type="response"将结果转换为率尺度 emm_result <- emmeans(mod, ~ X, type = "response") # 查看结果 emm_result
运行后会直接输出X两个水平的率估计值、标准误及95%置信区间。
方法二:手动计算(无需额外包)
如果不想安装新包,可以手动构建预测数据并转换尺度:
- 构建包含X所有水平及协变量典型取值的数据集:
连续协变量取均值,分类协变量取参考水平,time固定为1(方便解释单位时间的率):
new_dat <- expand.grid( X = levels(dat$X), A = mean(dat$A, na.rm = TRUE), # 处理连续协变量A B = levels(dat$B)[1], # 处理分类协变量B,取参考水平 C = mean(dat$C, na.rm = TRUE), # 处理连续协变量C time = 1 # 固定time为1,对应单位时间的率 )
- 预测log尺度的估计值及置信区间:
pred_log <- predict(mod, newdata = new_dat, se.fit = TRUE, interval = "confidence")
- 将log尺度结果指数化,得到率及置信区间:
rate_est <- exp(pred_log$fit[, "fit"]) lower_ci <- exp(pred_log$fit[, "lwr"]) upper_ci <- exp(pred_log$fit[, "upr"])
- 整理成清晰的结果表格:
result_df <- data.frame( X水平 = new_dat$X, 率估计值 = rate_est, 95%置信区间下限 = lower_ci, 95%置信区间上限 = upper_ci ) print(result_df)
注意事项
- 协变量的固定值可根据需求调整:比如连续协变量用中位数,分类协变量取特定水平,只需修改
new_dat中的对应值即可。 - emmeans默认的协变量固定规则和手动计算的典型取值一致,两种方法的结果会保持一致。
内容的提问来源于stack exchange,提问作者Jordan Hackett
相关产品推荐
相关产品推荐

