刚编辑以简化方法 . 假设我们有一个data.table,结构如下:

library(data.table)
 library(foreach)
 set.seed(123)
 dt=foreach(i=1:length(letters),.combine='rbind')%do%{
   group=rep(letters[i],runif(1, 1, 10))
   data.table(group)
 }
 dt$y<-round(runif(nrow(dt), 10, 20), digits=0)
 dt$x<-round(runif(nrow(dt), 30, 40), digits=0)
 dt[,.N, by=group][order(N)]

我想在'foreach'循环中对需要根据以下规则构建的不同样本运行一系列回归:

  • 创建一个包含26个新观察值的初始样本,每个观察一个随机选择 . 没有替代品 .

  • 下一个样本应该越来越多地添加一组26个观察,如(1)中所示,直到每个组中至少有一个案例为止 .

  • 当一个小组没有留下任何案件时,从其他小组中抽取其他案件,直到完成26个观察 . 观察次数最少的群体应优先考虑 .

  • 每次绘制新样本时,在x上回退y,直到我们在dt中使用整个案例 .

最后,我希望有一个列表('模型'),其中包含每个样本中回归的结果,理想情况下使用'foreach'和'data.table'来扩展方法,但愿意考虑数据 . 解决方案,当然还有基础R技巧 .