ПочатиПочніть безкоштовно

Моделювання взаємодії (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 = ___(___(___)))
Редагувати та запускати код