R中线性回归的自举标准误

时间:2018-11-07 12:30:17

标签: r

我有一个lm对象,我只想引导其标准错误。在实践中,我只想在每次复制中仅使用部分样本(并替换),并获得标准错误的分布。然后,如果可能的话,我想显示原始线性回归的摘要,但带有自举标准误差和相应的p值(换句话说,β系数相同,但标准误差不同)。

编辑:总而言之,我想通过与原始数据上运行的原始lm对象具有相同的beta系数来“修改”我的lm对象,但具有自举标准错误(以及相关的t-stats和p-值)是通过在不同的子样本上多次(通过替换)计算lm回归获得的。

所以我的lm对象看起来像

    Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      3.812793   0.095282  40.016  < 2e-16 ***
x                                -0.904729   0.284243  -3.183  0.00147 ** 
z                                0.599258   0.009593  62.466  < 2e-16 ***
x*z                              0.091511   0.029704   3.081  0.00208 ** 

但是相关的标准误差是错误的,我想通过在不同的子样本上(通过替换)将此线性回归重复1000次(重复)来估算它们。

有没有办法做到这一点?有人可以帮我吗?

谢谢您的时间。 马可

1 个答案:

答案 0 :(得分:1)

您的要求可以按照下面的代码行完成。
由于您尚未发布示例数据集或模型,因此我将使用内置数据集mtcars一个带有两个连续预测变量的简单公式。

library(boot)

boot_function <- function(data, indices, formula){
  d <- data[indices, ]
  obj <- lm(formula, d)
  coefs <- summary(obj)$coefficients
  coefs[, "Std. Error"]
}

set.seed(8527)

fmla <- as.formula("mpg ~ hp * cyl")
seboot <- boot(mtcars, boot_function, R = 1000, formula = fmla)

colMeans(seboot$t)
##[1] 6.511530646 0.068694001 1.000101450 0.008804784

我相信可以将上面的代码用于大多数需要数字响应和预测变量的代码。