【问题标题】:R block resampling by unique identifier for bootstrapR块通过引导的唯一标识符重新采样
【发布时间】:2014-02-02 08:30:44
【问题描述】:

我正在尝试使用 R 阻止引导数据集。我有一个县公司的数据框。我想对有替换的县进行抽样,然后用该县样本中的所有公司(有替换)建立一个数据集。我对新数据集进行回归。然后我再次采样。

我有一个像这样工作的 for 循环:

for(j in 1:10000){
y=NULL
for(i in 1:length(unique(data$firm_id))){
    y=rbind(y, data[which(data$county_id==sample(unique(data$county_id), replace=T)[i]),])
}
    a=rbind(a, lm(profit~employees, data=y)$coefficients)
}

不幸的是,R 中的这种 for 循环非常慢且计算量大。是否可以使用更高效的 apply 函数来实现这一点?

【问题讨论】:

  • 请提供一个可重现的小例子。
  • 有一个library(boot) 包可以回答你的问题。但是,您可能可以使用sample 来解决问题并简化您的代码。没有一个小例子,不知道如何提供帮助。
  • 还可以查看burns-stat.com/pages/Tutor/R_inferno.pdf,了解如何优化代码的一些技巧。
  • 谢谢!不知道我是怎么错过这个问题的。加上下面的代码帮助我弄清楚了。

标签: r for-loop statistics regression apply


【解决方案1】:

这样的事情可能会有所帮助:

positions<-replicate(1000, sample(1:nrow(df), nrow(df), T))

apply(positions, 2, function(i) lm(yvar[i]~xvar[i], df)$coef)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2010-11-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多