当我们递增地添加预测值时,获取线性回归模型的R平方值列表

当我们递增地添加预测值时,获取线性回归模型的R平方值列表,r,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 } rsqvals看起来您

我有一个基于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
}

rsqvals看起来您在第一次迭代中对data.frame进行了过多的子集设置。在您的第一次迭代中,您将得到
simtemp2,您需要在simtemp2中包含y。您是想按使R平方增加最多的预测值的顺序添加预测值,还是仅按增加列索引的顺序添加预测值?谢谢!这段代码运行得很好。我可以问一下为什么在截取对象中用“1”来预测y吗?它恰好是R用来识别没有预测变量的公式的符号。它只是告诉
lm()
如果只有一个截距项,则执行线性回归,因此得到一条水平线,即
y
列的平均值
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)