CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Écrasez preds en échantillonnant à partir d'une distribution binomiale.
  • Passez la longueur de preds comme premier argument.
  • Définissez size à 1.
  • Définissez prob aux 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)
}
Modifier et exécuter le code