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
Instrucțiuni pentru exercițiu
- Creează o mască booleană pentru locurile în care
df[imp_var]are valori lipsă și asign-o variabileimissing_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
familypentru a obține o regresie logistică (transmite-l fără ghilimele); asignează modelul variabileilogreg_model. - Calculează răspunsul prezis cu ajutorul modelului și asignează-l variabilei
preds; nu uita să setezi tipul de predicție potrivit prin argumentultype. - Folosește
predsîmpreună cumissing_imp_varpentru 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)
}