Imputations multiples par bootstrap

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

Michal Oleszak

Machine Learning Engineer

Incertitude liée à l'imputation

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

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

Dans presque la moitié des études, les résultats clés disparaissent

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

Bootstrap

Bootstrap = échantillonner des lignes avec remise pour obtenir une taille d'origine

Deux data frames factices. À gauche, « données d'origine », chaque ligne a une couleur différente. À droite, « échantillon bootstrap » : certaines lignes colorées de « données d'origine » apparaissent plusieurs fois, d'autres pas du tout.

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

Imputations multiples par bootstrap

Schéma en cinq étapes d'imputation par bootstrap. D'un data frame factice « données d'origine », trois flèches mènent vers « échantillons bootstrap différents ». Chacun pointe vers « Imputation », puis vers « Modélisation / analyse », puis vers un nœud final « Distribution des résultats ».

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

Imputation bootstrap : avantages et limites

Avantages :

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

Limites :

  • Lent avec de nombreuses réplicas ou des calculs lourds.
Gérer les données manquantes avec des imputations en R

Bootstrap en pratique

calc_correlation <- function(data, indices) {






  # Return the correlation coefficient
  return(corr_coeff)
}
Gérer les données manquantes avec des imputations en R

Bootstrap en pratique

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




  # Return the correlation coefficient
  return(corr_coeff)
}
Gérer les données manquantes avec des imputations en 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)
}
Gérer les données manquantes avec des imputations en 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)
}
Gérer les données manquantes avec des imputations en R

Bootstrap en pratique

library(boot)
boot_results <- boot(nhanes, statistic = calc_correlation, R = 50)
print(boot_results)
BOOTSTRAP NON PARAMÉTRIQUE ORDINAIRE

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

Statistiques du bootstrap :
      original      biais    écart-type
t1* 0.03028306 0.007385452  0.04207152
Gérer les données manquantes avec des imputations en 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.

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

Bootstrap : intervalles de confiance

boot_ci <- boot.ci(boot_results, conf = 0.95, type = "norm")
print(boot_ci)
CALCUL DES INTERVALLES DE CONFIANCE PAR BOOTSTRAP
Basé sur 50 réplicas bootstrap

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

Intervalles : 
Niveau      Normal        
95%   (-0.0596,  0.1054 )  
Calculs et intervalles sur l'échelle d'origine
Gérer les données manquantes avec des imputations en R

Passons à la pratique avec le bootstrap !

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

Preparing Video For Download...