Imputation fondée sur un modèle

Traitement des données manquantes par imputation dans R

Michal Oleszak

Machine Learning Engineer

Imputation fondée sur un modèle

  • Imputer chaque variable avec un modèle statistique différent.
  • Tenir compte des relations connues dans les données.
Traitement des données manquantes par imputation dans R

Procédure d'imputation fondée sur un modèle

  • Parcourir les variables.
  • Pour chaque variable, créer un modèle qui l'explique.
  • Utiliser le modèle pour prédire les valeurs manquantes.
  • Itérer sur les variables en imputant aux emplacements manquants d'origine.
Traitement des données manquantes par imputation dans R

Imputation fondée sur un modèle : étape par étape

Une trame de données avec quatre variables (A, B, C et D) et cinq lignes, remplie de données factices. Deux variables (A et C) ont chacune deux valeurs manquantes, toutes à des lignes différentes.

Traitement des données manquantes par imputation dans R

Imputation fondée sur un modèle : étape par étape

Une trame de données avec quatre variables (A, B, C et D) et cinq lignes, remplie de données factices. Les valeurs manquantes de A ont été imputées.

  1. Prédire les valeurs manquantes de A.
Traitement des données manquantes par imputation dans R

Imputation fondée sur un modèle : étape par étape

Une trame de données avec quatre variables (A, B, C et D) et cinq lignes, remplie de données factices. Les valeurs manquantes de A et C ont été imputées.

  1. Prédire les valeurs manquantes de A.
  2. Considérer les données imputées de A comme observées et prédire les valeurs manquantes de C.
Traitement des données manquantes par imputation dans R

Imputation fondée sur un modèle : étape par étape

Une trame de données avec quatre variables (A, B, C et D) et cinq lignes, remplie de données factices. Les valeurs manquantes de C ont été imputées.

  1. Prédire les valeurs manquantes de A.
  2. Considérer les données imputées de A comme observées et prédire les valeurs manquantes de C.
  3. Considérer les données imputées de C comme observées et prédire de nouveau A là où il manquait à l'origine.
  4. Continuer jusqu'à convergence.
Traitement des données manquantes par imputation dans R

Comment choisir le modèle

Le modèle pour chaque variable dépend de son type :

  • Variables continues : régression linéaire
  • Variables binaires : régression logistique
  • Variables catégorielles : régression logistique multinomiale
  • Variables de comptage : régression de Poisson
Traitement des données manquantes par imputation dans R

Imputation par régression linéaire simple

Imputer Height et Weight dans nhanes avec un modèle linéaire :

library(simputation)
nhanes_imp <- impute_lm(nhanes, Height + Weight ~ .)

Vérifier qu'elles ont bien été imputées :

nhanes_imp %>% 
  is.na() %>% 
  colSums()
Age     Gender     Weight     Height   Diabetes    TotChol      Pulse PhysActive 
  0          0         32         30          1         85         32         26
Traitement des données manquantes par imputation dans R

Imputation par régression linéaire en pratique

Initialiser les valeurs manquantes avec hotdeck et enregistrer les emplacements manquants :

nhanes_imp <- hotdeck(nhanes)
missing_height <- nhanes_imp$Height_imp
missing_weight <- nhanes_imp$Weight_imp

Itérer 5 fois sur Height et Weight, en les imputant aux emplacements manquants d'origine :

for (i in 1:5) {
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes_imp, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes_imp, Weight ~ Age + Gender + Height)
}
Traitement des données manquantes par imputation dans R

Détecter la convergence



for (i in 1:5) {

  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


}
Traitement des données manquantes par imputation dans R

Détecter la convergence

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {

  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


}
Traitement des données manquantes par imputation dans R

Détecter la convergence

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {
  prev_iter <- nhanes_imp
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


}
Traitement des données manquantes par imputation dans R

Détecter la convergence

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {
  prev_iter <- nhanes_imp
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)
  diff_height <- c(diff_height, mapc(prev_iter$Height, nhanes_imp$Height))
  diff_weight <- c(diff_weight, mapc(prev_iter$Weight, nhanes_imp$Weight))
}
Traitement des données manquantes par imputation dans R

Détecter la convergence

Un graphique linéaire avec deux courbes, une pour les variables Pulse et TotChol. L'axe des x montre le nombre d'itérations, l'axe des y montre la variation absolue moyenne en pourcentage des valeurs imputées d'une itération à l'autre. Après la première itération, les deux variables changent. À partir de l'itération 2, elles ne changent plus.

Traitement des données manquantes par imputation dans R

Passons à la pratique : imputation par régression linéaire !

Traitement des données manquantes par imputation dans R

Preparing Video For Download...