Tirer depuis une distribution conditionnelle
Appeler simplement predict() sur un modèle renverra toujours la même valeur pour les mêmes valeurs des prédicteurs. Cela entraîne une faible variabilité dans les données imputées. Pour l’augmenter, afin que l’imputation reproduise la variabilité des données d’origine, nous pouvons tirer depuis la distribution conditionnelle. Concrètement, au lieu de prédire systématiquement 1 dès que le modèle renvoie une probabilité supérieure à 0,5, nous pouvons tirer la prédiction d’une distribution binomiale définie par la probabilité renvoyée par le modèle.
Vous allez reprendre le code que vous avez écrit à l’exercice précédent. La ligne suivante a été supprimée :
preds <- ifelse(preds >= 0.5, 1, 0)
Votre tâche est de la remplacer par un tirage dans une distribution binomiale. Une seule ligne de code suffit !
Cet exercice fait partie du cours
Gérer les données manquantes avec des imputations en R
Instructions
- Écrasez
predsen échantillonnant depuis une distribution binomiale. - Passez la longueur de
predscomme premier argument. - Définissez size à 1.
- Fixez
probaux probabilités renvoyées par le modèle.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)
}