Моделирование взаимодействия (2)
В этом упражнении вы сравните качество модели взаимодействия, которую построили в предыдущем упражнении, с качеством модели, учитывающей только основные эффекты. Поскольку набор данных небольшой, мы воспользуемся перекрёстной проверкой, чтобы смоделировать предсказания на новых данных.
Вы начнёте работать с пакетом dplyr для выполнения вычислений.
mutate()(docs) добавляет новые столбцы в объект tbl (разновидность фрейма данных)group_by()(docs) задаёт способ группировки строк в tblsummarize()(docs) вычисляет сводные статистики для столбца
Вы также воспользуетесь функцией pivot_longer() из пакета tidyr (docs), которая объединяет несколько столбцов в пары «ключ — значение». Фрейм данных alcohol, а также формулы fmla_add и fmla_interaction уже загружены.
Это упражнение является частью курса
Обучение с учителем в R: регрессия
Инструкции к упражнению
- Используйте
kWayCrossValidation()(docs), чтобы создать план разбиения для 3-блочной перекрёстной проверки.- Первый аргумент — количество строк для разбиения.
- Второй аргумент — количество блоков для перекрёстной проверки.
- Третий и четвёртый аргументы функции можно задать равными
NULL.
- Изучите пример кода и запустите его, чтобы получить прогнозы 3-блочной перекрёстной проверки для модели без взаимодействий; сохраните их в столбце
pred_add. - Получите прогнозы 3-блочной перекрёстной проверки для модели с взаимодействиями. Сохраните прогнозы в столбце
pred_interaction.- Следуйте процедуре, показанной в примере кода.
- Используйте тот же
splitPlan, который вы уже создали.
- Заполните пропуски, чтобы:
- применить
pivot_longerи свести прогнозы в один столбецpred; - добавить столбец остатков (фактическое значение минус прогнозируемое);
- вычислить RMSE прогнозов перекрёстной проверки для каждого типа модели.
- применить
- Сравните значения RMSE. Какую модель следует выбрать на основе полученных результатов?
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# alcohol is available
summary(alcohol)
# Both the formulae are available
fmla_add
fmla_interaction
# Create the splitting plan for 3-fold cross validation
set.seed(34245) # set the seed for reproducibility
splitPlan <- ___(___(___), ___, ___, ___)
# Sample code: Get cross-val predictions for main-effects only model
alcohol$pred_add <- 0 # initialize the prediction vector
for(i in 1:3) {
split <- splitPlan[[i]]
model_add <- lm(fmla_add, data = alcohol[split$train, ])
alcohol$pred_add[split$app] <- predict(model_add, newdata = alcohol[split$app, ])
}
# Get the cross-val predictions for the model with interactions
alcohol$pred_interaction <- 0 # initialize the prediction vector
for(i ___ ___) {
split <- ___
model_interaction <- lm(___, data = alcohol[split$train, ])
alcohol$___[split$app] <- predict(___, newdata = alcohol[split$app, ])
}
# Get RMSE
alcohol %>%
pivot_longer(cols=c('pred_add', 'pred_interaction'), names_to='modeltype', values_to='pred') %>%
mutate(residuals = ____) %>%
group_by(modeltype) %>%
summarize(rmse = ___(___(___)))