Tirage à partir d'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 se traduit par une faible variabilité dans les données imputées. Pour l'augmenter, afin que l'imputation reproduise la variabilité des données originales, on peut tirer à partir de la distribution conditionnelle. Concrètement, plutôt que de toujours prédire 1 lorsque le modèle retourne une probabilité supérieure à 0,5, on peut tirer la prédiction d'une distribution binomiale définie par la probabilité renvoyée par le modèle.
Vous travaillerez à partir du code écrit à l'exercice précédent. La ligne suivante a été retirée :
preds <- ifelse(preds >= 0.5, 1, 0)
Votre tâche est de la remplacer par un tirage à partir d'une distribution binomiale. Ce n'est qu'une seule ligne de code !
Cette activité fait partie du cours
Traitement des données manquantes par imputation dans R
Instructions de l’exercice
- Écrasez
predsen échantillonnant à partir d'une distribution binomiale. - Passez la longueur de
predscomme premier argument. - Définissez size à 1.
- Définissez
probaux probabilités renvoyées par le modèle.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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)
}