IniziaInizia gratis

Imputazione con regressione logistica

Una scelta diffusa per imputare variabili binarie è la regressione logistica. Purtroppo, non esiste una funzione simile a impute_lm() che lo faccia. Ecco perché scriverai tu stesso una funzione!

Chiamiamo la funzione impute_logreg(). Il suo primo argomento sarà un data frame df, i cui valori mancanti sono stati inizializzati e che contiene valori mancanti solo nella colonna da imputare. Il secondo argomento sarà una formula per il modello di regressione logistica.

La funzione farà quanto segue:

  • Mantieni le posizioni dei valori mancanti.
  • Costruisci il modello.
  • Fai le previsioni.
  • Sostituisci i valori mancanti con le previsioni.

Non preoccuparti della riga che crea imp_var - è solo un modo per estrarre dal formula il nome della colonna da imputare. Facciamo un po' di programmazione funzionale!

Questo esercizio fa parte del corso

Gestione dei dati mancanti con imputazioni in R

Visualizza il corso

Istruzioni dell'esercizio

  • Crea una maschera booleana per i casi in cui df[imp_var] è mancante e assegnala a missing_imp_var.
  • Stima un modello di regressione logistica usando la formula e i dati che la funzione riceverà come argomenti, ricordandoti di impostare il family corretto per assicurarti che venga stimata una regressione logistica (passalo senza virgolette); assegna il modello a logreg_model.
  • Predici la risposta con il modello e assegnala a preds; ricorda di impostare il type di previsione appropriato.
  • Usa preds insieme a missing_imp_var per imputare i valori mancanti.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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)
}
Modifica ed esegui il codice