Wielokrotna imputacja przez bootstrap

Obsługa brakujących danych z imputacją w R

Michal Oleszak

Machine Learning Engineer

Niepewność wynikająca z imputacji

  • Imputacja jest zazwyczaj pierwszym krokiem przed analizą lub modelowaniem.
  • Brakujące wartości są szacowane z pewną niepewnością.
  • Niepewność tę należy uwzględnić w analizach przeprowadzanych na danych po imputacji.

Nagłówek strony tytułowej artykułu Ranjita Lalla zatytułowanego „How Multiple Imputation Makes a Difference".

W prawie połowie badań kluczowe wyniki znikają

Obsługa brakujących danych z imputacją w R

Bootstrap

Bootstrap = losowanie wierszy ze zwracaniem w celu uzyskania danych oryginalnego rozmiaru

Dwie przykładowe ramki danych. Lewa, oznaczona „oryginalne dane", ma wiersze w różnych kolorach. Prawa, oznaczona „próba bootstrapowa", zawiera niektóre kolorowe wiersze z oryginalnych danych więcej niż raz, a innych brakuje.

Obsługa brakujących danych z imputacją w R

Wielokrotna imputacja przez bootstrap

Diagram przedstawiający pięć etapów imputacji przez bootstrap. Z przykładowej ramki danych, nazwanej „oryginalne dane", trzy strzałki wskazują na trzy inne ramki oznaczone „różne próby bootstrapowe". Z każdej z nich strzałka wskazuje na etap „Imputacja". Stamtąd strzałki prowadzą do etapu „Modelowanie / analiza", a następnie do jednego końcowego węzła „Rozkład wyników".

Obsługa brakujących danych z imputacją w R

Imputacja bootstrapowa: wady i zalety

Zalety:

  • Działa z dowolną metodą imputacji.
  • Pozwala przybliżać wielkości trudne do obliczenia analitycznie.
  • Działa z danymi MCAR i MAR.

Wady:

  • Wolne przy dużej liczbie replikacji lub czasochłonnych obliczeniach.
Obsługa brakujących danych z imputacją w R

Bootstrap w praktyce

calc_correlation <- function(data, indices) {






  # Return the correlation coefficient
  return(corr_coeff)
}
Obsługa brakujących danych z imputacją w R

Bootstrap w praktyce

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




  # Return the correlation coefficient
  return(corr_coeff)
}
Obsługa brakujących danych z imputacją w R

Bootstrap w praktyce

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)
}
Obsługa brakujących danych z imputacją w R

Bootstrap w praktyce

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)
}
Obsługa brakujących danych z imputacją w R

Bootstrap w praktyce

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
Obsługa brakujących danych z imputacją w R

Wizualizacja wyników bootstrapu

plot(boot_results)

Histogram i wykres Q-Q przedstawiające rozkład wyników bootstrapu. Oba wykresy sugerują, że rozkład jest zbliżony do normalnego.

Obsługa brakujących danych z imputacją w R

Przedziały ufności bootstrapu

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
Obsługa brakujących danych z imputacją w R

Czas na ćwiczenia z bootstrapem!

Obsługa brakujących danych z imputacją w R

Preparing Video For Download...