Imputation multiple par équations en chaîne

Traitement des données manquantes par imputation dans R

Michal Oleszak

Machine Learning Engineer

L'algorithme MICE

Un graphique décrivant quatre étapes de l'algorithme MICE. À partir du nœud « incomplete data », trois flèches mènent à trois nœuds « imputed data », avec la fonction « mice() » sur les flèches. Chacun de ces nœuds est relié à un nœud « analysis results » par une flèche étiquetée « with() ». Chacun de ces nœuds pointe vers le même nœud final « pooled results » avec une flèche « pooled() ».

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
Traitement des données manquantes par imputation dans R

MICE : avantages et limites

Avantages :

  • Moins de répétitions que le bootstrap.
  • Fonctionne pour des données MAR et MCAR.
  • Permet une analyse de sensibilité pour les données MNAR.

Inconvénients :

  • Ne fonctionne qu'avec certaines méthodes d'imputation.
  • Exige plus d'ajustements (choix du modèle, des prédicteurs).
Traitement des données manquantes par imputation dans R

Enchaînement mice - with - pool

Imputer nhanes 20 fois :

library(mice)
hhanes_multiimp <- mice(nhanes, m = 20)

Ajuster une régression linéaire à chaque ensemble imputé :

lm_multiimp <- with(nhanes_multiimp, lm(Weight ~ Height + TotChol + PhysActive))

Regrouper les résultats de régression :

lm_pooled <- pool(lm_multiimp)
Traitement des données manquantes par imputation dans R

Analyser les résultats regroupés

summary(lm_pooled, conf.int = TRUE, conf.level = 0.95)
            estimate std.error statistic      df p.value    2.5 %   97.5 %
(Intercept) -122.964    10.933   -11.247 735.389   0.000 -144.428 -101.500
Height         1.086     0.060    18.158 796.106   0.000    0.968    1.203
TotChol        2.653     0.884     3.003 305.460   0.003    0.915    4.392
PhysActive    -1.746     1.422    -1.228 733.957   0.220   -4.536    1.045
Traitement des données manquantes par imputation dans R

MICE : méthodes disponibles

Un tableau de l'article de van Buuren et al. présentant les modèles d'imputation offerts dans MICE. Chaque modèle est décrit par son nom, mot-clé, type de variable pris en charge et s'il est l'option par défaut.

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
Traitement des données manquantes par imputation dans R

Choisir les méthodes par type de variable

mice() accepte l'argument defaultMethod : un vecteur de 4 chaînes indiquant les méthodes pour :

  1. Variables continues
  2. Variables binaires
  3. Variables catégorielles (facteurs non ordonnés)
  4. Variables factorielles (facteurs ordonnés)
nhanes_multiimp <- mice(nhanes, m = 20, 
                        defaultMethod = c("pmm", "logreg", "polyreg", "polr"))
Traitement des données manquantes par imputation dans R

Matrice des prédicteurs

La predictorMatrix détermine quelles variables servent à en imputer d'autres.

nhanes_multiimp <- mice(nhanes, m = 20)
nhanes_multiimp$predictorMatrix
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      1      1      1        1       1     1          1
Gender       1      0      1      1        1       1     1          1
Weight       1      1      0      1        1       1     1          1
Height       1      1      1      0        1       1     1          1
Diabetes     1      1      1      1        0       1     1          1
TotChol      1      1      1      1        1       0     1          1
Pulse        1      1      1      1        1       1     0          1
PhysActive   1      1      1      1        1       1     1          0
Traitement des données manquantes par imputation dans R

Choisir les prédicteurs pour chaque variable

  • Idéalement, il faut faire une vraie sélection de modèles.
  • Alternative rapide : utiliser les variables corrélées à la cible.
pred_mat <- quickpred(nhanes, mincor = 0.25)
nhanes_multiimp <- mice(nhanes, m = 20, predictorMatrix = pred_mat)
print(pred_mat)
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      0      0      0        0       0     0          0
Gender       0      0      0      0        0       0     0          0
Weight       1      1      0      0        0       0     1          0
...
Traitement des données manquantes par imputation dans R

Passons à la pratique avec MICE !

Traitement des données manquantes par imputation dans R

Preparing Video For Download...