获取线性回归模型的R平方值列表,我们逐步添加预测变量

时间:2018-03-07 00:00:08

标签: r

我有一个基于14个x值(x1到x14)预测y的回归。我想编写一个回归循环,循环的每次迭代都会为回归添加一个预测变量,然后告诉我r平方是什么。这是我的代码:

rsqvals <- rep(NA, 15)
for (i in 1:15){
  simtemp2 <- simdata[, 1:i]
  modeL <- lm(y ~ ., data=simtemp2)
  rsqvals[i] <- summary(modeL)$r.squared
}

其中simdata是我的数据框,simtemp2是我想要的列。我怀疑这个问题与我无法输入simdata[, 1:i]的事实有关,但我不确定为什么不这样做。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

看起来你在第一次迭代时过多地对data.frame进行了子集化。在第一次迭代中,您将获得simtemp2 <- simdata[,1:1]。此操作的结果是simtemp2中的向量。即使您将simtemp2转换回data.framelm()也不会将其视为参数。尝试从2开始,看看是否有效:

rsqvals <- rep(NA, 15)

interceptonly <- lm(y~1,data=simdata) ### no features, only the intercept
### this isn't statistically meaningful, but I put it here for completeness
rsqvals[1] <- summary(interceptonly)$r.squared
for (i in 2:15){
   simtemp2 <- simdata[, 1:i]
   modeL <- lm(y ~ ., data=simtemp2)
   rsqvals[i] <- summary(modeL)$r.squared
}
print(rsqvals)