Я довольно новичок в R и пытаюсь использовать пакет карет для перекрестной проверки, чтобы найти оптимальную степень для подгонки полинома к данным. Мой фрейм данных называется «data», зависимой переменной является y, а независимой переменной - x. Это моя попытка, где последняя строка возвращает R ^ 2 для оптимальной степени полинома.
fitpoly <- vector("list",10)
set.seed(123)
train.control <- trainControl(method = "cv", number = 10)
for (k in 1:10){
fitpoly[[k]]<- train(y ~ poly(x, k, raw = TRUE), data = data, method = "lm", trControl = train.control)$results[[3]]
}
fitpoly <- cbind(c(1:10),unlist(fitpoly, use.names=FALSE))
max(fitpoly[,2])
При запуске l oop я получаю следующий код ошибки: Ошибка в [.data.frame
(data, all.vars (Terms), drop = FALSE): выбраны неопределенные столбцы . Я вполне уверен, что ошибка возникла из-за того, что я перебрал аргумент степени в poly, но я не совсем понимаю, как go исправить это. У меня похожая проблема с аргументом степеней свободы при выполнении аналогичного l oop со сплайнами cubi c.
fitspline <- vector("list", 10)
set.seed(123)
for (k in 1:10){
fitspline[[k]] <- train( y ~ bs(x , degree = 3, df = k+2 ), data = data , method = "lm", trControl = train.control)$results[[3]]
}
fitspline <- cbind(c(1:10),unlist(fitspline, use.names=FALSE))
max(fitspline[,2])
Благодарю всех заранее за любую помощь!