Сравните модели с 5-кратной перекрестной проверкой - PullRequest
0 голосов
/ 18 апреля 2019

Я новичок в статистических прогнозах и хотел бы попросить вас помочь исправить мой код для реализации 5-кратной перекрестной проверки.

У меня есть 8 моделей для прогнозов. Вот мой код:

apgar_data_1 <-apgar_data_1[sample(nrow(apgar_data_1)),]
apgar_data_1
folds <- cut(seq(1,nrow(apgar_data_1)),breaks=5,labels=FALSE)

big_mat <- data.for(i in 1:5){ 
testIndexes <- which(folds == i,arr.ind=TRUE)
testData <- apgar_data_1[testIndexes, ]
trainData <- apgar_data_1[-testIndexes, ]

reg1 <- lm(apg_less_8 ~ bthwght_nm, trainData)
reg2 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2,trainData )
reg3 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2 + bthwght_nm^3, 
trainData)
reg4 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2 + bthwght_nm^3 + 
bthwght_nm^4, trainData)
reg5 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2 + bthwght_nm^3 + 
bthwght_nm^4 + bthwght_nm^5, trainData)
reg6 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2 + bthwght_nm^3 + 
bthwght_nm^4 + bthwght_nm^5 + bthwght_nm^6, trainData)
reg7 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2 + bthwght_nm^3 + 
bthwght_nm^4 + high_bthwght_nm +low_bthwght_nm, trainData)
reg8 <- lm(apg_less_8 ~ bthwght_nm + bthwght_nm^2 + bthwght_nm^3 + 
bthwght_nm^4 + height, trainData)

for(j in seq(from=1, to=40, by=8)) {
 big_mat[,j] <- reg1 %>% predict(testData)
 big_mat[,j+1] <- reg2 %>% predict(testData)
  big_mat[,j+2] <- reg3 %>% predict(testData)
    big_mat[,j+3] <- reg4 %>% predict(testData)
   big_mat[,j+4] <- reg5 %>% predict(testData)
   big_mat[,j+5] <- reg6 %>% predict(testData)
   big_mat[,j+6] <- reg7 %>% predict(testData)
   big_mat[,j+7] <- reg8 %>% predict(testData)
   }

 }

big_mat

В конце дня я бы хотел вычислить RMSE. Тем не менее, я продолжаю получать эту ошибку, которую я не понимаю (и проверяю, что у меня нет NA в наборе данных)

   Error in `[<-.data.frame`(`*tmp*`, , j, value = c(`31918` = 
   0.0686259916969135,  : 
   replacement has 9694 rows, data has 0

Спасибо.

...