Kom igångKom igång gratis

Modellera en interaktion (2)

I den här övningen jämför du prestandan hos interaktionsmodellen du anpassade i föregående övning med en modell som bara innehåller huvudeffekter. Eftersom datamängden är liten använder vi korsvalidering för att simulera prediktioner på data som modellen inte tränats på.

Du kommer att börja använda paketet dplyr för beräkningar.

  • mutate() (docs) lägger till nya kolumner i en tbl (en typ av dataram)
  • group_by() (docs) anger hur rader grupperas i en tbl
  • summarize() (docs) beräknar sammanfattande statistik för en kolumn

Du kommer också att använda tidyr:s pivot_longer() (docs), som tar flera kolumner och komprimerar dem till nyckel-värde-par. Dataramen alcohol samt formlerna fmla_add och fmla_interaction har förinsatts.

Den här övningen är en del av kursen

Övervakad inlärning i R: Regression

Visa kurs

Övningsinstruktioner

  • Använd kWayCrossValidation() (docs) för att skapa en uppdelningsplan för en 3-faldig korsvalidering.
    • Det första argumentet är antalet rader som ska delas.
    • Det andra argumentet är antalet folds för korsvalideringen.
    • Du kan sätta det 3:e och 4:e argumentet till NULL.
  • Granska och kör exempelkoden för att få de 3-faldiga korsvalideringsprediktorerna för en modell utan interaktioner, och tilldela dem till kolumnen pred_add.
  • Hämta de 3-faldiga korsvalideringsprediktorerna för modellen med interaktioner. Tilldela prediktorerna till kolumnen pred_interaction.
    • Exempelkoden visar hur du går tillväga.
    • Använd samma splitPlan som du redan har skapat.
  • Fyll i luckorna för att
    • pivot_longer:a prediktorerna till en enda kolumn pred.
    • lägga till en kolumn med residualer (faktiskt utfall minus prediktorerat utfall).
    • beräkna RMSE för korsvalideringsprediktorerna för varje modelltyp.
  • Jämför RMSE-värdena. Vilken modell bör du använda baserat på resultaten?

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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 = ___(___(___)))
Redigera och kör kod