LoslegenKostenlos starten

Interaktion modellieren (2)

In dieser Übung vergleichst du die Leistung des Interaktionsmodells aus der vorherigen Übung mit der eines Modells nur mit Haupteffekten. Weil dieser Datensatz klein ist, verwenden wir Cross-Validation, um Vorhersagen auf Out-of-Sample-Daten zu simulieren.

Du beginnst, das Paket dplyr für Berechnungen zu verwenden.

  • mutate() (docs) fügt einer tbl (eine Art Data Frame) neue Spalten hinzu
  • group_by() (docs) legt fest, wie Zeilen in einer tbl gruppiert werden
  • summarize() (docs) berechnet Zusammenfassungsstatistiken einer Spalte

Außerdem verwendest du pivot_longer() aus tidyr (docs), das mehrere Spalten in Schlüssel-Wert-Paare umwandelt. Der Data Frame alcohol sowie die Formeln fmla_add und fmla_interaction wurden bereits geladen.

Diese Übung ist Teil des Kurses

<Kurs>Überwachtes Lernen in R: Regression</Kurs>
Kurs ansehen

Übungsanweisungen

  • Verwende kWayCrossValidation() (docs), um einen Splitting-Plan für eine 3-fach-Cross-Validation zu erstellen.
    • Das erste Argument ist die Anzahl der zu splittenden Zeilen.
    • Das zweite Argument ist die Anzahl der Folds für die Cross-Validation.
    • Du kannst das 3. und 4. Argument der Funktion auf NULL setzen.
  • Sieh dir den Beispielcode an und führe ihn aus, um die 3-fach-Cross-Validation-Vorhersagen eines Modells ohne Interaktionen zu erhalten, und weise sie der Spalte pred_add zu.
  • Ermittle die 3-fach-Cross-Validation-Vorhersagen des Modells mit Interaktionen. Weise die Vorhersagen der Spalte pred_interaction zu.
    • Der Beispielcode zeigt dir das Vorgehen.
    • Verwende denselben splitPlan, den du bereits erstellt hast.
  • Fülle die Lücken aus, um
    • die Vorhersagen mit pivot_longer in einer einzelnen Spalte pred zu sammeln.
    • eine Spalte mit Residuen hinzuzufügen (tatsächliches Ergebnis − vorhergesagtes Ergebnis).
    • das RMSE der Cross-Validation-Vorhersagen für jeden Modelltyp zu berechnen.
  • Vergleiche die RMSEs. Welches Modell solltest du auf Basis dieser Ergebnisse verwenden?

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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 = ___(___(___)))
Code bearbeiten und ausführen