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 hinzugroup_by()(docs) legt fest, wie Zeilen in einer tbl gruppiert werdensummarize()(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>Ü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
NULLsetzen.
- 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_addzu. - Ermittle die 3-fach-Cross-Validation-Vorhersagen des Modells mit Interaktionen. Weise die Vorhersagen der Spalte
pred_interactionzu.- 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_longerin einer einzelnen Spaltepredzu sammeln. - eine Spalte mit Residuen hinzuzufügen (tatsächliches Ergebnis − vorhergesagtes Ergebnis).
- das RMSE der Cross-Validation-Vorhersagen für jeden Modelltyp zu berechnen.
- die Vorhersagen mit
- 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 = ___(___(___)))