Imputazione multipla con bootstrap

Gestione dei dati mancanti con imputazioni in R

Michal Oleszak

Machine Learning Engineer

Incertezza dall'imputazione

  • L'imputazione è di solito il primo passo prima di analisi o modellazione.
  • I valori mancanti sono stimati con incertezza.
  • Questa incertezza va considerata in ogni analisi su dati imputati.

L'intestazione della pagina del titolo dell'articolo di Ranjit Lall, "How Multiple Imputation Makes a Difference."

In quasi metà degli studi, i risultati chiave scompaiono

Gestione dei dati mancanti con imputazioni in R

Bootstrap

Bootstrap = campionare righe con reinserimento per ottenere dati della dimensione originale

Due data frame di esempio. A sinistra, "dati originali" con ogni riga di colore diverso, a indicare valori diversi. A destra, "campione bootstrap": alcune righe colorate dei "dati originali" compaiono più volte, altre non compaiono.

Gestione dei dati mancanti con imputazioni in R

Imputazione multipla con bootstrap

Diagramma in cinque fasi dell'imputazione con bootstrap. Da un data frame di esempio, "dati originali", tre frecce puntano a tre data frame "campioni bootstrap diversi". Da ciascuno, una freccia porta a "Imputazione". Da lì, frecce verso "Modellazione / analisi" e poi verso "Distribuzione dei risultati".

Gestione dei dati mancanti con imputazioni in R

Imputazione bootstrap: pro e contro

Pro:

  • Funziona con qualsiasi metodo di imputazione.
  • Può approssimare quantità difficili da calcolare analiticamente.
  • Funziona con dati MCAR e MAR.

Contro:

  • Lento con molte repliche o calcoli pesanti.
Gestione dei dati mancanti con imputazioni in R

Bootstrap in pratica

calc_correlation <- function(data, indices) {






  # Restituisci il coefficiente di correlazione
  return(corr_coeff)
}
Gestione dei dati mancanti con imputazioni in R

Bootstrap in pratica

calc_correlation <- function(data, indices) {
  # Ottieni il campione bootstrap
  data_boot <- data[indices, ]




  # Restituisci il coefficiente di correlazione
  return(corr_coeff)
}
Gestione dei dati mancanti con imputazioni in R

Bootstrap in pratica

calc_correlation <- function(data, indices) {
  # Ottieni il campione bootstrap
  data_boot <- data[indices, ]
  # Imputa con kNN
  data_imp <- kNN(data_boot)


  # Restituisci il coefficiente di correlazione
  return(corr_coeff)
}
Gestione dei dati mancanti con imputazioni in R

Bootstrap in pratica

calc_correlation <- function(data, indices) {
  # Ottieni il campione bootstrap
  data_boot <- data[indices, ]
  # Imputa con kNN
  data_imp <- kNN(data_boot)
  # Calcola la correlazione tra Weight e TotChol
  corr_coeff <- cor(data_imp$Weight, data_imp$TotChol)
  # Restituisci il coefficiente di correlazione
  return(corr_coeff)
}
Gestione dei dati mancanti con imputazioni in R

Bootstrap in pratica

library(boot)
boot_results <- boot(nhanes, statistic = calc_correlation, R = 50)
print(boot_results)
BOOTSTRAP NON PARAMETRICO ORDINARIO

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

Statistiche bootstrap:
      originale      bias    errore std.
t1* 0.03028306 0.007385452  0.04207152
Gestione dei dati mancanti con imputazioni in R

Grafico dei risultati bootstrap

plot(boot_results)

Un istogramma e un Q-Q plot mostrano la distribuzione dei risultati bootstrap. Entrambi indicano una distribuzione quasi normale.

Gestione dei dati mancanti con imputazioni in R

Intervalli di confidenza con bootstrap

boot_ci <- boot.ci(boot_results, conf = 0.95, type = "norm")
print(boot_ci)
CALCOLO DEGLI INTERVALLI DI CONFIDENZA BOOTSTRAP
Basato su 50 repliche bootstrap

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

Intervalli: 
Livello      Normale        
95%   (-0.0596,  0.1054 )  
Calcoli e intervalli sulla scala originale
Gestione dei dati mancanti con imputazioni in R

Esercitiamoci con il bootstrap!

Gestione dei dati mancanti con imputazioni in R

Preparing Video For Download...