Я использую пакет caret с пакетом leaps, чтобы получить количество переменных, используемых в линейной регрессии.Как извлечь модель с наименьшим среднеквадратичным средним значением, использующим число переменных mdl $ bestTune?Если это не может быть сделано, есть ли функции в других пакетах, которые вы бы порекомендовали включить в цикл пошаговой линейной регрессии и фактически позволить мне найти окончательную модель?
Ниже приведен воспроизводимый код.Из этого я могу сказать из mdl$bestTune
, что число переменных должно быть 4 (хотя я бы надеялся на 3).Кажется, что я должен быть в состоянии извлечь переменные из третьей строки summary(mdl$finalModel)
, но я не уверен, как бы я сделал это в общем случае, а не только в этом примере.
library(caret)
set.seed(101)
x <- matrix(rnorm(36*5), nrow=36)
colnames(x) <- paste0("V", 1:5)
y <- 0.2*x[,1] + 0.3*x[,3] + 0.5*x[,4] + rnorm(36) * .0001
train.control <- trainControl(method="LOOCV")
mdl <- train(x=x, y=y, method="leapSeq", trControl = train.control, trace=FALSE)
coef(mdl$finalModel, as.double(mdl$bestTune))
mdl$bestTune
summary(mdl$finalModel)
mdl$results
Вот контекст моего вопроса на случай, если он будет интересен.У меня есть исторические ежемесячные возвраты сотен взаимных фондов.Доходность каждого фонда будет зависимой переменной, которую я хотел бы регрессировать против набора доходностей по нескольким (например, 5) факторам.Для каждого фонда я хочу провести пошаговую регрессию.Я ожидаю, что только один из трех факторов будет значительным для любого фонда.