Meervoudige imputatie via bootstrapping

Omgaan met missende data met imputaties in R

Michal Oleszak

Machine Learning Engineer

Onzekerheid door imputatie

  • Imputatie is meestal de eerste stap vóór analyse of modelleren.
  • Missende waarden worden met onzekerheid geschat.
  • Houd rekening met die onzekerheid in alle analyses op geïmputeerde data.

De kop van de titelpagina van het artikel van Ranjit Lall, "How Multiple Imputation Makes a Difference."

In bijna de helft van de studies verdwijnen kernresultaten

Omgaan met missende data met imputaties in R

Bootstrap

Bootstrapping = rijen trekken met teruglegging tot originele grootte

Twee voorbeeld-dataframes. Links, "originele data", heeft elke rij een andere kleur. Rechts, "bootstrapsteekproef", komen sommige gekleurde rijen meerdere keren voor en ontbreken andere.

Omgaan met missende data met imputaties in R

Meervoudige imputatie via bootstrapping

Een schema met vijf stappen van imputatie via bootstrapping. Vanuit een voorbeeld-dataframe "originele data" wijzen drie pijlen naar drie andere frames, "verschillende bootstrapsteekproeven". Van elk gaat een pijl naar "Imputatie". Vandaar pijlen naar "Modelleren / analyse" en vervolgens naar één eindknoop: "Verdeling van resultaten".

Omgaan met missende data met imputaties in R

Bootstrap-imputatie: plus- en minpunten

Voordelen:

  • Werkt met elke imputatiemethode.
  • Benadert grootheden die analytisch lastig zijn.
  • Werkt met MCAR- en MAR-data.

Nadelen:

  • Traag bij veel herhalingen of tijdrovende berekeningen.
Omgaan met missende data met imputaties in R

Bootstrapping in de praktijk

calc_correlation <- function(data, indices) {






  # Geef de correlatiecoëfficiënt terug
  return(corr_coeff)
}
Omgaan met missende data met imputaties in R

Bootstrapping in de praktijk

calc_correlation <- function(data, indices) {
  # Neem bootstrap-steekproef
  data_boot <- data[indices, ]




  # Geef de correlatiecoëfficiënt terug
  return(corr_coeff)
}
Omgaan met missende data met imputaties in R

Bootstrapping in de praktijk

calc_correlation <- function(data, indices) {
  # Neem bootstrap-steekproef
  data_boot <- data[indices, ]
  # Imputeer met kNN-imputatie
  data_imp <- kNN(data_boot)


  # Geef de correlatiecoëfficiënt terug
  return(corr_coeff)
}
Omgaan met missende data met imputaties in R

Bootstrapping in de praktijk

calc_correlation <- function(data, indices) {
  # Neem bootstrap-steekproef
  data_boot <- data[indices, ]
  # Imputeer met kNN-imputatie
  data_imp <- kNN(data_boot)
  # Bereken correlatie tussen Weight en TotChol
  corr_coeff <- cor(data_imp$Weight, data_imp$TotChol)
  # Geef de correlatiecoëfficiënt terug
  return(corr_coeff)
}
Omgaan met missende data met imputaties in R

Bootstrapping in de praktijk

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
Omgaan met missende data met imputaties in R

Bootstrapresultaten plotten

plot(boot_results)

Een histogram en Q-Q-plot van de verdeling van de bootstrapresultaten. Beide suggereren een bijna normale verdeling.

Omgaan met missende data met imputaties in R

Betrouwbaarheidsintervallen via bootstrapping

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
Omgaan met missende data met imputaties in R

Laten we oefenen!

Omgaan met missende data met imputaties in R

Preparing Video For Download...