Losowanie z rozkładu warunkowego
Samo wywołanie funkcji predict() na modelu zawsze zwróci tę samą wartość dla tych samych wartości predyktorów. Powoduje to małą zmienność w imputowanych danych. Aby ją zwiększyć – tak żeby imputacja odzwierciedlała zmienność z oryginalnych danych – możemy losować z rozkładu warunkowego. Oznacza to, że zamiast zawsze przewidywać 1, gdy model zwraca prawdopodobieństwo większe niż 0,5, losujemy przewidywaną wartość z rozkładu dwumianowego opisanego prawdopodobieństwem zwróconym przez model.
Będziesz pracować na kodzie napisanym w poprzednim ćwiczeniu. Usunięto z niego następującą linię:
preds <- ifelse(preds >= 0.5, 1, 0)
Twoim zadaniem jest zastąpienie jej losowaniem z rozkładu dwumianowego. To tylko jedna linijka kodu!
To ćwiczenie jest częścią kursu
Obsługa brakujących danych z imputacją w R
Instrukcje do ćwiczenia
- Nadpisz
preds, próbkując z rozkładu dwumianowego. - Przekaż długość
predsjako pierwszy argument. - Ustaw size na 1.
- Ustaw
probna prawdopodobieństwa zwrócone przez model.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)
}