ÎncepețiÎncepe gratuit

Imputare prin regresie logistică

O alegere populară pentru imputarea variabilelor binare este regresia logistică. Din păcate, nu există o funcție similară cu impute_lm() care să facă acest lucru automat. De aceea, vei scrie tu însuți o astfel de funcție!

Hai să o numim impute_logreg(). Primul argument va fi un data frame df, ale cărui valori lipsă au fost inițializate și care conține valori lipsă doar în coloana ce urmează să fie imputată. Al doilea argument va fi o formula pentru modelul de regresie logistică.

Funcția va realiza următoarele:

  • Va păstra locațiile valorilor lipsă.
  • Va construi modelul.
  • Va face predicții.
  • Va înlocui valorile lipsă cu predicțiile.

Nu te îngrijora în privința liniei care creează imp_var – aceasta este doar o modalitate de a extrage din formulă numele coloanei de imputat. Să facem puțină programare funcțională!

Acest exercițiu face parte din cursul

Gestionarea datelor lipsă prin imputare în R

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează o mască booleană pentru locurile în care df[imp_var] are valori lipsă și asign-o variabilei missing_imp_var.
  • Antrenează un model de regresie logistică folosind formula și datele primite ca argumente ale funcției, asigurându-te că setezi corect argumentul family pentru a obține o regresie logistică (transmite-l fără ghilimele); asignează modelul variabilei logreg_model.
  • Calculează răspunsul prezis cu ajutorul modelului și asignează-l variabilei preds; nu uita să setezi tipul de predicție potrivit prin argumentul type.
  • Folosește preds împreună cu missing_imp_var pentru a imputa valorile lipsă.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
}
Editează și rulează codul