如何从线性模型的模拟中找到置信区间

How to find confidence interval from the simulation of linear model

我使用了 arm 包 sim() 函数来创建线性模型的模拟。仿真结果包含系数和残差。我想找到系数的 95% 置信区间。我如何找到它?

下面提供了我用来运行模拟的代码。

mod <- lm(y ~ normal_dist + uniform_dist)
sims <- arm::sim(mod, n = 1000)

这是您要找的吗? 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

可以通过计算由arm::sim():

模拟的系数的分位数来检索近似置信区间
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
>