Imputation multiple par bootstrap

Traitement des données manquantes par imputation dans R

Michal Oleszak

Machine Learning Engineer

Incertitude liée à l'imputation

  • L'imputation est généralement une première étape avant l'analyse ou la modélisation.
  • Les valeurs manquantes sont estimées avec une incertitude.
  • Cette incertitude doit être prise en compte dans toute analyse menée sur des données imputées.

L'en-tête de la page-titre de l'article de Ranjit Lall intitulé « How Multiple Imputation Makes a Difference. »

Dans près de la moitié des études, les résultats clés disparaissent

Traitement des données manquantes par imputation dans R

Bootstrap

Bootstrap = échantillonner des lignes avec remise pour obtenir des données de taille originale

Deux tableaux fictifs. Celui de gauche, « original data », a chaque ligne d'une couleur différente. À droite, « bootstrapped sample », certaines lignes colorées de « original data » apparaissent plusieurs fois, d'autres pas du tout.

Traitement des données manquantes par imputation dans R

Imputation multiple par bootstrap

Schéma en cinq étapes de l'imputation par bootstrap. D'un tableau fictif « original data », trois flèches mènent à « different bootstrap samples ». De chacun, une flèche mène à « Imputation », puis à « Modeling / analysis », puis à un nœud final « Distribution of results ».

Traitement des données manquantes par imputation dans R

Imputation bootstrap : pour et contre

Avantages :

  • Fonctionne avec toute méthode d'imputation.
  • Approche des quantités difficiles à calculer analytiquement.
  • Fonctionne avec des données MCAR et MAR.

Inconvénients :

  • Lent avec de nombreuses réplicas ou des calculs lourds.
Traitement des données manquantes par imputation dans R

Bootstrap en pratique

calc_correlation <- function(data, indices) {






  # Return the correlation coefficient
  return(corr_coeff)
}
Traitement des données manquantes par imputation dans R

Bootstrap en pratique

calc_correlation <- function(data, indices) {
  # Get bootstrap sample
  data_boot <- data[indices, ]




  # Return the correlation coefficient
  return(corr_coeff)
}
Traitement des données manquantes par imputation dans R

Bootstrap en pratique

calc_correlation <- function(data, indices) {
  # Get bootstrap sample
  data_boot <- data[indices, ]
  # Impute with kNN imputation
  data_imp <- kNN(data_boot)


  # Return the correlation coefficient
  return(corr_coeff)
}
Traitement des données manquantes par imputation dans R

Bootstrap en pratique

calc_correlation <- function(data, indices) {
  # Get bootstrap sample
  data_boot <- data[indices, ]
  # Impute with kNN imputation
  data_imp <- kNN(data_boot)
  # Calculate correlation between Weight and TotChol
  corr_coeff <- cor(data_imp$Weight, data_imp$TotChol)
  # Return the correlation coefficient
  return(corr_coeff)
}
Traitement des données manquantes par imputation dans R

Bootstrap en pratique

library(boot)
boot_results <- boot(nhanes, statistic = calc_correlation, R = 50)
print(boot_results)
ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = nhanes, statistic = calc_correlation, R = 50)

Bootstrap Statistics :
      original      bias    std. error
t1* 0.03028306 0.007385452  0.04207152
Traitement des données manquantes par imputation dans R

Tracer les résultats du bootstrap

plot(boot_results)

Un histogramme et un Q-Q plot montrant la distribution des résultats bootstrap. Les deux suggèrent une distribution proche de la normale.

Traitement des données manquantes par imputation dans R

Intervalles de confiance par bootstrap

boot_ci <- boot.ci(boot_results, conf = 0.95, type = "norm")
print(boot_ci)
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 50 bootstrap replicates

CALL : 
boot.ci(boot.out = boot_results, conf = 0.95, type = "norm")

Intervals : 
Level      Normal        
95%   (-0.0596,  0.1054 )  
Calculations and Intervals on Original Scale
Traitement des données manquantes par imputation dans R

Passons à la pratique !

Traitement des données manquantes par imputation dans R

Preparing Video For Download...