R语言如何基于PS匹配与泊松模型创建含置信区间的数据框
最简实现方法
不用手动按“系数±分位数*标准误”的公式算置信区间,直接用R内置函数提取、合并结果即可,全程代码量极少,结果和模型输出完全匹配:
- 先把summary输出的系数表转成标准数据框,把存成行名的变量名单独拆成一列,避免合并时丢失变量信息
- 用内置置信区间计算函数直接生成上下限:如果要和summary里z检验对应的Wald置信区间完全对齐,用
confint.default()即可,速度最快;如果需要更稳健的轮廓似然置信区间,换成confint()就行,带权重的泊松模型跑这个会稍慢一点 - 按变量名匹配合并系数表和置信区间表,筛选需要的列就得到最终结果
对应代码如下:
# 提取系数表,保留变量名 coef_df <- as.data.frame(summary(model)$coef) coef_df$variable <- rownames(coef_df) # 计算95%置信区间,需要改置信水平直接加level参数即可,比如level=0.99就是99%CI ci_df <- as.data.frame(confint.default(model)) colnames(ci_df) <- c("ci_low", "ci_high") ci_df$variable <- rownames(ci_df) # 合并得到最终结果,列顺序按需调整即可 result <- merge(coef_df, ci_df, by = "variable")[, c("variable", "Estimate", "ci_low", "ci_high")]
如果你后续需要输出泊松模型对应的率比(RR)和RR的置信区间,不用重新跑模型,直接对系数和置信区间取指数即可:
result$rr <- exp(result$Estimate) result$rr_ci_low <- exp(result$ci_low) result$rr_ci_high <- exp(result$ci_high)
内容的提问来源于stack exchange,提问作者a_todd12
相关产品推荐
相关产品推荐

