【问题标题】:How to find confidence interval from the simulation of linear model如何从线性模型的模拟中找到置信区间
【发布时间】:2021-10-14 16:45:34
【问题描述】:
我使用了 arm 包 sim() 函数来创建线性模型的模拟。仿真结果包含系数和残差。我想找到系数的 95% 置信区间。如何找到它?
下面提供了我用来运行模拟的代码。
mod <- lm(y ~ normal_dist + uniform_dist)
sims <- arm::sim(mod, n = 1000)
【问题讨论】:
标签:
r
arm
linear-regression
simulation
confidence-interval
【解决方案1】:
您可以通过计算arm::sim() 模拟的系数的分位数来检索近似 CI:
library(arm)
t(apply(sims@coef, 2, quantile, c(0.025, 0.975)))
2.5% 97.5%
(Intercept) 33.394308 42.024628
cyl -3.485516 -2.169014
(@coef 检索系数;apply(., 2, quantile, c(0.025, 0.975)) 计算每列的分位数;t() 转置结果)
但是,这是非常低效且有点倒退的,因为模拟是通过基于系数的采样协方差矩阵绘制多元正态模拟得出的(因此,这些限制也不包括使用的有限大小校正t 分布而不是正态分布)。您可以更轻松地获得置信区间:
> confint(mod)
2.5 % 97.5 %
(Intercept) 33.649223 42.119930
cyl -3.534237 -2.217343
>
【解决方案2】:
这就是你要找的吗?具有数据 iris 的系数的 95% CI,用您选择的系数替换petal.length
fit <- lm(Petal.Width ~Petal.Length,iris)
confint(fit,'Petal.Length',level=0.95)
输出
2.5 % 97.5 %
Petal.Length 0.3968193 0.4346915