【问题标题】:Bootstrap code not reporting bias or standard error引导代码不报告偏差或标准错误
【发布时间】:2015-02-20 02:22:59
【问题描述】:

我用 R 写了这段代码:

library(boot)

bs <- function(formula, data, indices) {
  d <- data[indices,] # allows boot to select sample 
  fit <- lm(formula, data=d)
 return(coef(fit)) 
}
results <- boot(data=z, statistic=bs, 
 R=1000, formula=z[,1]~z[,2])

我正在尝试使用包含我的响应和我的预测器的数据帧进行随机 x 重采样,但是我的结果返回时没有偏差和标准。

Bootstrap Statistics :
      original  bias    std. error
t1* 83.5466254       0           0
t2* -0.6360426       0           0

谁能发现问题?

【问题讨论】:

    标签: r regression statistics-bootstrap


    【解决方案1】:

    您的公式不正确。当您使用z[,1]~z[,2] 时,您实际上是在指定一个公式,其中z 的第一列作为响应,z 的第二列作为自变量。请注意,z 永远不会改变。 data= 参数正在改变。此外,公式语法不适用于这样的位置索引。您需要使用变量名。这是一些示例数据

    z <- data.frame(a=runif(50), b=runif(50))
    

    请注意这不起作用

    results <- boot(data=z, statistic=bs, 
     R=10, formula=z[,1]~z[,2])
    results
    
    # Bootstrap Statistics :
    #       original  bias    std. error
    # t1* 0.45221233       0           0
    # t2* 0.08818014       0           0
    

    它只是一遍又一遍地重新调整相同的值,这与使用填充数据集时相同

    lm(a~b, z)
    
    # Coefficients:
    # (Intercept)            b  
    #     0.45221      0.08818  
    

    你想要的是

    results <- boot(data=z, statistic=bs, 
     R=10, formula=a~b)
    results
    
    # Bootstrap Statistics :
    #       original      bias    std. error
    # t1* 0.45221233  0.01024794  0.08853861
    # t2* 0.08818014 -0.01546608  0.16376128
    

    这允许boot 函数每次传入不同的数据集,并且由于文字向量值不包含在专门引用z data.frame 的公式中,因此您将获得更新的值.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多