【问题标题】:bootstrap standard errors of a linear regression in RR中线性回归的引导标准误差
【发布时间】:2018-11-07 12:30:17
【问题描述】:

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

已编辑:总而言之,我想“修改”我的 lm 对象,方法是让我在原始数据上运行的原始 lm 对象具有相同的 beta 系数,但具有自举标准误差(以及相关的 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 次(重复)来估计它们。

有没有办法做到这一点?谁能帮帮我?

感谢您的宝贵时间。 马可

【问题讨论】:

  • 您想从lm 对象还是从原始数据中引导标准错误?请使用该重要信息编辑问题
  • 我想每次在不同的子样本上运行 lm 对象 1000 次(有替换),以获得新的标准错误,这些错误将替换原始 lm 对象中的那些(错误)。

标签: r


【解决方案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

我相信可以使用上面的代码来满足大多数带有数字响应和预测器的需求。

【讨论】:

  • 非常感谢瑞,你真的帮了我很多!我应该放什么而不是索引?从我的数据框中放置随机行(例如 sample(nrow(df),100))是否正确,以便每次复制仅使用数据框的这个子集来估计模型?
  • 换句话说,我想通过仅使用观察的子集来估计模型,即用“sample(nrow(df), 300)”之类的东西“替换”索引。你能解释一下我应该在哪里指定这个吗?
  • @MarcoMello 不!函数boot 自行完成。这就是包boot 存在的主要原因。您所要做的就是用dataindices(或任何其他名称)作为第一个和第二个参数 编写一个函数。在函数中,像我的boot_function 一样开始,通过子集data。然后你就有了计算统计数据的说明。
  • 函数boot::boot随机行进行采样(例如sample(nrow(df),100)),不用担心。
  • 非常感谢Rui,这很完美,你很乐意向我解释这一切!很抱歉为最后一个小问题打扰您。有没有办法指定要子集的行数?我知道 boot 是自己做的,但我不明白它是根据什么决定使用每个复制的 obs。可能,根据您的说法,它只是在内部通过每次创建不同的模拟数据集(这是我原始数据集的子集)并使用它来计算自举统计数据来做到这一点。
猜你喜欢
  • 2013-08-20
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2018-05-14
相关资源
最近更新 更多