嵌套的for循环:这是做我认为的吗?

时间:2015-10-28 23:42:53

标签: r

所以我有一个数据集(数据),其中包含322个6个变量的观测值。我在“保留”上回归称为“水”的结果。 (对于任何好奇的人来说,这是关于印度的女政治家是否比男性政治家更经常选择水处理政策。)

我的目的是运行1000个回归,每个回归具有322个观察值的随机大小样本,并将这1000个系数存储在向量(coefs)中。接下来,我想重复之前的计算10次 - 每次取coefs的平均值并将其放在向量中(temp_mean)。

我的下面的代码是否真的实现了这一目标?我是否将temp_mean [j]放在第二个到最后一个括号内或外面? (当我运行它时,结果都是相同的。)

这似乎是我想要的功能,但我想得到一些其他的输入。顺便说一句,我知道有更快的方法可以使用其他软件包和apply,但我想练习嵌套for循环的概念。

coefs <- vector()
temp_mean <- vector()
for (j in 1:10){
  for (i in 1:1000){
    df <- data[sample(nrow(data), sample(nrow(data), 1)),]
    my_reg <- lm(water ~ reserved, data=df)
    coefs[i] <- my_reg[[1]][2]
  }
  temp_mean[j] <- mean(coefs, na.rm=T)
}

1 个答案:

答案 0 :(得分:1)

考虑到内循环,在我看来,每次迭代都是使用sample(nrow(data),1)选择随机行数。这意味着如果样本(nrow(数据),1)= 1并且您的回归不那么准确,则回归数据集可能会小到1。如果您打算每次我建议使用

随机选择322个观察值
df <- data[sample(nrow(data), 322, replace = FALSE),]