LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Erstelle eine boolesche Maske für die fehlenden Werte in df[imp_var] und weise sie missing_imp_var zu.
  • Fitte ein logistisches Regressionsmodell mit der Formel und den Daten, die die Funktion als Argumente erhält, und denke daran, die richtige family zu setzen, damit eine logistische Regression gefittet wird (ohne Anführungszeichen übergeben); weise das Modell logreg_model zu.
  • Sage die Zielvariable mit dem Modell voraus und weise sie preds zu; achte darauf, den passenden Vorhersage-type zu setzen.
  • Nutze preds zusammen mit missing_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)
}
Code bearbeiten und ausführen