Доверительные интервалы для пакета Caret - PullRequest
0 голосов
/ 30 апреля 2020

Я использую пакет Caret для проведения регрессионного анализа. Я посмотрел онлайн, но теперь смог найти решение. Мой код ниже. Есть ли способ вычислить доверительные интервалы для этой модели?

set.seed(123)
# Set up repeated k-fold cross-validation
train.control <- trainControl(method = "cv", number = 10,
                              predictionBounds = c(0, NA), verboseIter = TRUE)
# Train the model
step.model <- train(`likes` ~., data = reduced_Data,
                    method = "leapSeq", 
                    tuneGrid = data.frame(nvmax = 1:13),
                    trControl = train.control)


step.model$results

step.model$bestTune

summary(step.model$finalModel)

coef(step.model$finalModel, 2)

Я пытался использовать функцию прогнозирования из базового пакета, но безуспешно

predict(step.model$finalModel, my_data, interval = "confidence")

1 Ответ

0 голосов
/ 30 апреля 2020

То, что у вас есть, это класс regsubset, есть результаты из разных подмножеств терминов, и вам нужны критерии, чтобы выбрать, какая модель является лучшей, переформулируйте модель и сделайте свои прогнозы, например:

library(caret)
train.control <- trainControl(method = "cv",number=3)
step.model <- train(mpg ~., data = mtcars,
method = "leapSeq",trControl = train.control)

Допустим, мы используем модель с максимальным r-квадратом:

res = summary(step.model$finalModel)
bestm = which.max(res$adjr2)
terms_to_use = names(which(res$which[bestm,]))[-1]
terms_to_use
1] "cyl" "hp"  "wt"

Подгонка окончательной модели:

final_form = as.formula(paste("mpg ~",paste(terms_to_use,collapse="+")))
fit = lm(final_form,data=mtcars)

Чтобы получить набор подгонки:

predict(fit,se=TRUE)

Чтобы получить 95 ci коэффициентов:

confint(fit)
                 2.5 %       97.5 %
(Intercept) 35.0915623 42.412012412
cyl         -2.0701179  0.186884238
hp          -0.0423655  0.006289293
wt          -4.6839740 -1.649972191
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...