НачатьНачать бесплатно

Моделирование взаимодействия (2)

В этом упражнении вы сравните качество модели взаимодействия, которую построили в предыдущем упражнении, с качеством модели, учитывающей только основные эффекты. Поскольку набор данных небольшой, мы воспользуемся перекрёстной проверкой, чтобы смоделировать предсказания на новых данных.

Вы начнёте работать с пакетом dplyr для выполнения вычислений.

  • mutate() (docs) добавляет новые столбцы в объект tbl (разновидность фрейма данных)
  • group_by() (docs) задаёт способ группировки строк в tbl
  • summarize() (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 = ___(___(___)))
Редактировать и запускать код