Bootstrap代码不报告偏差或标准错误

时间:2014-12-21 23:50:06

标签: r regression statistics-bootstrap

我在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-sample,但是我的结果没有偏差而没有std返回。

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

有人能发现问题吗?

1 个答案:

答案 0 :(得分:2)

您的公式不正确。当您使用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的公式中,您将获得更新的值。

相关问题