Imputation par hot-deck

Gérer les données manquantes avec des imputations en R

Michal Oleszak

Machine Learning Engineer

Historique du hot-deck

  • Remonte aux années 1950, quand les données étaient sur cartes perforées.
  • Parcourir les données aller-retour était très lent.
  • Le U.S. Census Bureau a proposé une méthode ne nécessitant qu'un seul passage.

Photo d'une ancienne carte perforée utilisée pour programmer des ordinateurs.

1 Image source: https://en.wikipedia.org/wiki/Punched_card#/media/File:Used_Punchcard_(5151286161).jpg
Gérer les données manquantes avec des imputations en R

Imputation par hot-deck

  • Pour chaque variable, remplacer toute valeur manquante par la dernière valeur observée.
  • « Hot-deck » renvoie au paquet de cartes perforées en cours de traitement.

Inconvénients

  • Supposent des données MCAR.
  • Le hot-deck « vanilla » peut détruire les relations entre variables.

Avantages

  • Rapide (un seul passage sur les données).
  • Les valeurs imputées ne sont pas constantes.
  • Des astuces simples évitent de casser les relations.
Gérer les données manquantes avec des imputations en R

Hot-deck en pratique

nhanes_imp <- hotdeck(nhanes, variable = c("Height", "Weight"))
head(nhanes_imp)
  Age Gender Weight Height Diabetes TotChol Pulse PhysActive Height_imp Weight_imp
1  16   male   73.2  172.0    FALSE    3.00    76       TRUE      FALSE      FALSE
2  17   male   72.3  176.0    FALSE    2.61    74       TRUE      FALSE      FALSE
3  12   male   57.7  158.9    FALSE    4.27    80       TRUE      FALSE      FALSE
4  16   male   88.9  183.3    FALSE    3.62    58       TRUE      FALSE      FALSE
5  13 female   45.1  157.6    FALSE    2.66    92       TRUE      FALSE      FALSE
6  16 female   48.7  180.7    FALSE    4.32    58      FALSE       TRUE      FALSE
Gérer les données manquantes avec des imputations en R

Imputer par domaines

Un tableau avec deux colonnes : PhysActive et Weight. Une valeur manquante dans Weight. Comme les lignes sont en ordre aléatoire, une ligne avec PhysActive=FALSE précède celle avec PhysActive=TRUE et le Weight manquant. Cela illustre comment le hot-deck propage la valeur de poids d'une personne inactive vers une personne active.

Un tableau avec deux colonnes : PhysActive et Weight. Une valeur manquante dans Weight. Comme les données sont groupées par PhysActive, le hot-deck propage la valeur d'une personne active à une autre personne active.

nhanes_imp <- hotdeck(
    nhanes, 
    variable = "Weight", 
    domain_var = "PhysActive"
)
Gérer les données manquantes avec des imputations en R

Trier par variables corrélées

Un tableau avec deux variables : Height et Weight. Une valeur manquante dans Weight. Comme les lignes sont en ordre aléatoire, une ligne avec une grande taille précède celle avec une petite taille et le poids manquant. Cela montre comment le hot-deck propage la valeur de poids d'une personne grande vers une personne petite.

Un tableau avec deux variables : Height et Weight. Une valeur manquante dans Weight. Comme les lignes sont triées par Height, le hot-deck propage la valeur de poids d'une personne petite vers une autre personne petite.

nhanes_imp <- hotdeck(
    nhanes, 
    variable = "Weight"
    ord_var = "Height"
)
Gérer les données manquantes avec des imputations en R

Passons à la pratique !

Gérer les données manquantes avec des imputations en R

Preparing Video For Download...