Začněte nyníZačněte zdarma

Modelování interakce (2)

V tomto cvičení porovnáš výkon modelu s interakcí, který jsi sestavil/a v předchozím cvičení, s výkonem modelu obsahujícího pouze hlavní efekty. Protože je tato datová sada malá, použijeme křížovou validaci k simulaci předpovědí na datech mimo trénovací sadu.

Začneme používat balíček dplyr pro výpočty.

  • mutate() (docs) přidá do tbl (typ datového rámce) nové sloupce
  • group_by() (docs) určuje, jak jsou řádky v tbl seskupeny
  • summarize() (docs) vypočítá souhrnné statistiky sloupce

Použ také funkci pivot_longer() z balíčku tidyr (docs), která sloučí více sloupců do dvojic klíč–hodnota. Datový rámec alcohol a vzorce fmla_add a fmla_interaction jsou již načteny.

Toto cvičení je součástí kurzu

Supervised Learning in R: Regression

Zobrazit kurz

Pokyny k cvičení

  • Pomocí kWayCrossValidation() (docs) vytvoř plán rozdělení pro 3násobnou křížovou validaci.
    • První argument je počet řádků k rozdělení.
    • Druhý argument je počet foldů pro křížovou validaci.
    • 3. a 4. argument funkce můžeš nastavit na NULL.
  • Prohlédni si a spusť ukázkový kód, který získá předpovědi z 3násobné křížové validace pro model bez interakcí, a přiřaď je do sloupce pred_add.
  • Získej předpovědi z 3násobné křížové validace pro model s interakcemi. Předpovědi přiřaď do sloupce pred_interaction.
    • Postup ti ukazuje ukázkový kód.
    • Použij stejný splitPlan, který jsi už vytvořil/a.
  • Doplň prázdná místa, aby kód:
    • pomocí pivot_longer sloučil předpovědi do jediného sloupce pred,
    • přidal sloupec reziduálů (skutečný výsledek – předpovězený výsledek),
    • vypočítal RMSE předpovědí křížové validace pro každý typ modelu.
  • Porovnej hodnoty RMSE. Na základě výsledků – který model bys zvolil/a?

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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 = ___(___(___)))
Upravit a spustit kód