0
我使用Leaps包中的10倍交叉验证和regsubsets函数进行最佳子集选择。我想在拟合我的模型后计算RSS。我不想为这个10倍交叉验证使用任何软件包。我想我们不能使用rgsubsets对象的预测函数。所以我试着用下面的代码来计算我的模型的rss,但是有一个错误。使用k折叠交叉验证获取模型的RSS,而无需在R中使用任何包
mydata <- Hitters[sample(nrow(Hitters)),]
folds <- cut(seq(1, nrow(mydata)), breaks = 10, labels = F)
for (i in 1:10) {
testindex <- which(folds == i)
testdata <- mydata[testindex,]
traindata <- mydata[ - testindex,]
#there may be an error after this
best.fits11 <- regsubsets(Salary ~ ., data = traindata, nvmax=19)
test[i]<-coef(best.fits11, id = 19) * testdata
train[i]<-traindata
}
for (i in 1:10) {
err.rss <-mean((test[i]-train[i])^2)
}
嗨,感谢您的帮助。我正在使用ISLR包中的数据集Hitters。数据集中有20列,其中19个是预测变量,薪水是回答。该算法将运行10次迭代,并且在每次迭代中要计算train [i]和test [i],以便可以计算RSS。我想在每次迭代时使用traindata的估计来评分我的测试数据,但是我的代码测试[i] < - coef(best.fits11,id = 19)* testdata可能是错误的 – abhi