Как сохранить RMSE, MSE после каждого шага k-кратной перекрестной проверки в R? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь сравнить несколько индексов растительности, чтобы найти лучшее для прогнозирования урожайности. Это означает, что у меня есть один столбец с данными о доходности и несколько других столбцов с индексами. Я создаю линейную модель ( доходность против индекс1 , затем доходность против индекса2 и т. Д. c. Это не множественная регрессия, поскольку я всегда сравниваю только один индекс с доходностью), затем я сделать k-кратную перекрестную проверку и посчитать RMSE, MSE и R ^ 2. Ниже приведен код:

  folds <- cut(seq(1,nrow(tabulka)),breaks=10,labels=FALSE)
    for(i in 1:10){
  testIndexes <- which(folds==i,arr.ind=TRUE)
  testData <- tabulka[testIndexes, ]
  trainData <- tabulka[-testIndexes, ]
  trenmodel1 <- lm(YIELD ~ INDEX1, data=trainData)  # build the model
  distPred <- predict(trenmodel1, testData)  # predict distance
  summary(trenmodel1)
  actuals_preds <- data.frame(cbind(actuals=testData$VYNOS, predicteds=distPred))
  correlation_accuracy <- cor(actuals_preds)
  d <- actuals_preds$actuals-actuals_preds$predicted
  mse = mean((d)^2)
  mae = mean(abs(d))
  rmse = sqrt(mse)
  R2 = 1-(sum((d)^2)/sum((actuals_preds$actuals-mean(actuals_preds$actuals))^2))
}

Поскольку у меня есть 10 сгибов, я хочу получить 10 различных значений для ошибок в отдельном списке, но с этим кодом у меня есть только одно значение (я не уверен, что это последнее значение или среднее значение). И есть ли способ запустить функцию для всех индексов одновременно (index1-index7), чтобы иметь один список для всех индексов для всех ошибок - 7 индексов, 10 крат = 70 значений RMSE, MSE, R2?

Я знаю, что есть пакет каретки, но, поскольку я не очень хорошо знаком с R, мне легче увидеть, как скрипт на самом деле выглядит и работает без каретки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...