Kom igångKom igång gratis

Imputering med logistisk regression

Ett populärt val för imputering av binära variabler är logistisk regression. Tyvärr finns det ingen färdig funktion liknande impute_lm() som hanterar detta. Därför ska du skriva en sådan funktion själv!

Låt oss kalla funktionen impute_logreg(). Det första argumentet är en dataram df vars saknade värden har initierats och som endast innehåller saknade värden i den kolumn som ska imputeras. Det andra argumentet är en formula för den logistiska regressionsmodellen.

Funktionen ska göra följande:

  • Spara platserna för de saknade värdena.
  • Bygga modellen.
  • Göra prediktioner.
  • Ersätta saknade värden med prediktionerna.

Oro dig inte för raden som skapar imp_var – det är bara ett sätt att extrahera namnet på den kolumn som ska imputeras från formeln. Nu kör vi lite funktionell programmering!

Den här övningen är en del av kursen

Hantering av saknade värden med imputering i R

Visa kurs

Övningsinstruktioner

  • Skapa en boolesk mask för var df[imp_var] saknar värden och tilldela den till missing_imp_var.
  • Anpassa en logistisk regressionsmodell med den formel och de data som funktionen tar emot som argument; kom ihåg att ange rätt family för att säkerställa att en logistisk regression anpassas (ange den utan citationstecken) och tilldela modellen till logreg_model.
  • Prediktera responsen med modellen och tilldela resultatet till preds; kom ihåg att ange lämplig prediktionstyp med type.
  • Använd preds tillsammans med missing_imp_var för att imputera de saknade värdena.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
}
Redigera och kör kod