Trekken uit een conditionele verdeling
Alleen predict() aanroepen op een model geeft altijd dezelfde waarde voor dezelfde waarden van de voorspellers. Dat zorgt voor weinig variatie in geimputeerde data. Om die te vergroten, zodat de imputatie de variabiliteit van de originele data nabootst, kunnen we trekken uit de conditionele verdeling. Dat betekent dat we, in plaats van altijd 1 te voorspellen zodra het model een kans groter dan 0.5 geeft, de voorspelling trekken uit een binomiale verdeling die wordt beschreven door de door het model geretourneerde kans.
Je werkt verder op de code die je in de vorige oefening hebt geschreven. De volgende regel is verwijderd:
preds <- ifelse(preds >= 0.5, 1, 0)
Jouw taak is om deze te vervangen door een trekking uit een binomiale verdeling. Dat is maar één regel code!
Deze oefening maakt deel uit van de cursus
Omgaan met missende data met imputaties in R
Oefeninstructies
- Overschrijf
predsdoor te sampelen uit een binomiale verdeling. - Geef de lengte van
predsdoor als eerste argument. - Zet size op 1.
- Zet
probop de door het model geretourneerde kansen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)
}