Urval från betingad fördelning
Att anropa predict() på en modell ger alltid samma värde för samma prediktorvärden. Det leder till liten variabilitet i imputerad data. För att öka variabiliteten – så att imputeringen återspeglar variabiliteten i originaldata – kan vi i stället göra urval från den betingade fördelningen. Det innebär att vi, i stället för att alltid förutsäga 1 när modellen returnerar en sannolikhet över 0,5, drar förutsägelsen från en binomialfördelning baserad på sannolikheten som modellen returnerar.
Du arbetar vidare på koden från föregående övning. Följande rad har tagits bort:
preds <- ifelse(preds >= 0.5, 1, 0)
Din uppgift är att ersätta den med ett urval från en binomialfördelning. Det är bara en rad kod!
Den här övningen är en del av kursen
Hantering av saknade värden med imputering i R
Övningsinstruktioner
- Skriv över
predsgenom att sampla från en binomialfördelning. - Skicka längden på
predssom första argument. - Sätt size till 1.
- Sätt
probtill sannolikheterna som modellen returnerar.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)
}