Я новичок в R, я ценю любую помощь по следующему коду. Я пытаюсь запустить этот код, чтобы сгенерировать и оценить MSE, рассчитанную на основе различных обучающих / тестовых наборов. Однако, когда я запускаю следующий код, я получаю следующую ошибку:
Ошибка whichSum [,, jSelect] + summary (rsTrain) $ which: несовместимые массивы
Я не уверенна то, что изменить в коде, чтобы он работал. Любая помощь приветствуется.
Спасибо!
dfTmp <- NULL
whichSum <- array(0,dim=c(15,12,4),
dimnames=list(NULL,colnames(model.matrix(contrib~.,lgmyfrcDat)),
c("exhaustive", "backward", "forward", "seqrep")))
# Split data into training and test 30 times:
nTries <- 30
for ( iTry in 1:nTries ) {
bTrain <- sample(rep(c(TRUE,FALSE),length.out=nrow(lgmyfrcDat)))
# Try each method available in regsubsets
# to select the best model of each size:
for ( jSelect in c("exhaustive", "backward", "forward", "seqrep") ) {
rsTrain <- regsubsets(contrib~.,lgmyfrcDat[bTrain,],nvmax=15,method=jSelect)
# Add up variable selections:
whichSum[,,jSelect] <- whichSum[,,jSelect] + summary(rsTrain)$which
# Calculate test error for each set of variables
# using predict.regsubsets implemented above:
for ( kVarSet in 1:15 ) {
# make predictions:
testPred <- predict(rsTrain,lgmyfrcDat[!bTrain,],id=kVarSet)
# calculate MSE:
mseTest <- mean((testPred-lgmyfrcDat[!bTrain,"contrib"])^2)
# add to data.frame for future plotting:
dfTmp <- rbind(dfTmp,data.frame(sim=iTry,sel=jSelect,vars=kVarSet,
mse=c(mseTest,summary(rsTrain)$rss[kVarSet]/sum(bTrain)),trainTest=c("test","train")))
}
}
}