Extragere din distribuția condiționată
Apelând pur și simplu predict() pe un model, vei obține întotdeauna aceeași valoare pentru aceleași valori ale predictorilor. Acest lucru duce la o variabilitate redusă în datele imputate. Pentru a o crește, astfel încât imputarea să replice variabilitatea din datele originale, putem extrage valori din distribuția condiționată. Concret, în loc să prezicem întotdeauna 1 atunci când modelul returnează o probabilitate mai mare de 0,5, putem extrage predicția dintr-o distribuție binomială descrisă de probabilitatea returnată de model.
Vei lucra pe codul scris în exercițiul anterior. Următoarea linie a fost eliminată:
preds <- ifelse(preds >= 0.5, 1, 0)
Sarcina ta este să înlocuiești această linie cu o extragere dintr-o distribuție binomială. E vorba de o singură linie de cod!
Acest exercițiu face parte din cursul
Gestionarea datelor lipsă prin imputare în R
Instrucțiuni pentru exercițiu
- Suprascrie
predsprin eșantionare dintr-o distribuție binomială. - Transmite lungimea lui
predsca prim argument. - Setează size la 1.
- Setează
probla probabilitățile returnate de model.
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 <- 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)
}