Ziehen aus der bedingten Verteilung
Ein einfaches predict() auf einem Modell liefert für gleiche Prädiktorwerte immer den gleichen Wert. Dadurch entsteht nur eine geringe Variabilität in den imputierten Daten. Um diese zu erhöhen – damit die Imputation die Variabilität der Originaldaten besser nachbildet –, können wir aus der bedingten Verteilung ziehen. Das bedeutet: Anstatt immer 1 vorherzusagen, sobald die vom Modell ausgegebene Wahrscheinlichkeit größer als 0,5 ist, ziehen wir die Vorhersage aus einer binomialverteilten Zufallsvariable, deren Parameter die vom Modell zurückgegebene Wahrscheinlichkeit ist.
Du arbeitest mit dem Code aus der vorherigen Übung. Die folgende Zeile wurde entfernt:
preds <- ifelse(preds >= 0.5, 1, 0)
Deine Aufgabe ist es, diese Stelle durch ein Ziehen aus einer Binomialverteilung zu ersetzen. Das ist nur eine einzige Codezeile!
Diese Übung ist Teil des Kurses
Fehlende Daten mit Imputationen in R behandeln
Anleitung zur Übung
- Überschreibe
preds, indem du aus einer Binomialverteilung samplest. - Übergib die Länge von
predsals erstes Argument. - Setze size auf 1.
- Setze
probauf die vom Modell zurückgegebenen Wahrscheinlichkeiten.
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 <- is.na(df[imp_var])
# Fit logistic regression mode
logreg_model <- glm(formula, data = df, family = binomial)
# Predict the response
preds <- predict(logreg_model, type = "response")
# Sample the predictions from binomial distribution
preds <- ___(___, size = ___, prob = ___)
# Impute missing values with predictions
df[missing_imp_var, imp_var] <- preds[missing_imp_var]
return(df)
}