Imputation mit logistischer Regression
Eine beliebte Methode zur Imputation binärer Variablen ist die logistische Regression. Leider gibt es keine Funktion ähnlich wie impute_lm(), die das übernimmt. Deshalb schreibst du so eine Funktion selbst!
Nennen wir die Funktion impute_logreg(). Das erste Argument ist ein Data Frame df, dessen fehlende Werte initialisiert wurden und nur in der zu imputierenden Spalte fehlen. Das zweite Argument ist eine formula für das logistische Regressionsmodell.
Die Funktion soll Folgendes tun:
- Positionen der fehlenden Werte merken.
- Das Modell erstellen.
- Vorhersagen erzeugen.
- Fehlende Werte durch Vorhersagen ersetzen.
Mach dir keine Sorgen um die Zeile, die imp_var erzeugt – das ist nur eine Möglichkeit, den Namen der zu imputierenden Spalte aus der Formel zu extrahieren. Los geht’s mit etwas funktionaler Programmierung!
Diese Übung ist Teil des Kurses
Fehlende Daten mit Imputationen in R behandeln
Anleitung zur Übung
- Erstelle eine boolesche Maske für die fehlenden Werte in
df[imp_var]und weise siemissing_imp_varzu. - Fitte ein logistisches Regressionsmodell mit der Formel und den Daten, die die Funktion als Argumente erhält, und denke daran, die richtige
familyzu setzen, damit eine logistische Regression gefittet wird (ohne Anführungszeichen übergeben); weise das Modelllogreg_modelzu. - Sage die Zielvariable mit dem Modell voraus und weise sie
predszu; achte darauf, den passenden Vorhersage-typezu setzen. - Nutze
predszusammen mitmissing_imp_var, um fehlende Werte zu imputieren.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
impute_logreg <- function(df, formula) {
# Extract name of response variable
imp_var <- as.character(formula[2])
# Save locations where the response is missing
missing_imp_var <- ___
# Fit logistic regression mode
logreg_model <- ___(___, data = ___, family = ___)
# Predict the response and convert it to 0s and 1s
preds <- predict(___, type = ___)
preds <- ifelse(preds >= 0.5, 1, 0)
# Impute missing values with predictions
df[missing_imp_var, imp_var] <-___[___]
return(df)
}