如何从线性模型模拟结果计算系数95%置信区间(使用arm包sim函数)
基于arm包sim()结果计算系数95%置信区间的实现方法
arm::sim()返回的模拟对象sims中@coef槽存储了所有次模拟生成的系数结果,每一行对应1次模拟的全量系数值,每一列对应线性模型中的1个变量(顺序和lm()返回的模型系数顺序完全一致)。
你可以通过计算每列系数模拟值的2.5%、97.5%分位数得到对应系数的95%置信区间,完整代码如下:
# 1. 提取所有模拟得到的系数矩阵 sim_coefs <- sims@coef # 2. 逐列计算95%分位数区间 ci_95 <- apply(sim_coefs, MARGIN = 2, FUN = function(col) { quantile(col, probs = c(0.025, 0.975), na.rm = TRUE) }) # 3. 转置为易读格式(行对应变量,列对应置信区间上下限) ci_95 <- t(ci_95) colnames(ci_95) <- c("下限(2.5%)", "上限(97.5%)") # 打印结果 print(ci_95)
补充说明
- 该置信区间属于贝叶斯后验置信区间,和频率派
confint(mod)的计算结果非常接近,模拟次数n越大,二者的一致性越高。 - 如果需要查看单个变量的置信区间,直接提取对应行即可,比如查看
normal_dist的95%置信区间:ci_95["normal_dist", ]
内容的提问来源于stack exchange,提问作者Mehedi Hassan
相关产品推荐
相关产品推荐

