Imputarea multiplă prin ecuații înlănțuite

Gestionarea datelor lipsă prin imputare în R

Michal Oleszak

Machine Learning Engineer

Algoritmul MICE

Un grafic care descrie cele patru etape ale algoritmului MICE. Din nodul etichetat „date incomplete", trei săgeți indică trei noduri numite „date imputate", cu funcția „mice()" ca etichetă. Fiecare dintre aceste noduri este conectat la un nod „rezultate analiză" printr-o săgeată etichetată cu funcția „with()". Fiecare dintre aceste noduri este conectat la același nod final numit „rezultate agregate" printr-o săgeată etichetată „pooled()".

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
Gestionarea datelor lipsă prin imputare în R

MICE: avantaje și dezavantaje

Avantaje:

  • Necesită mai puține replicări decât bootstrap.
  • Funcționează pentru date MAR și MCAR.
  • Permite analiza de sensibilitate pentru date MNAR.

Dezavantaje:

  • Funcționează doar cu metode de imputare selectate.
  • Necesită mai mult efort de reglare (selecția modelului, alegerea predictorilor).
Gestionarea datelor lipsă prin imputare în R

Fluxul mice: mice - with - pool

Imputați nhanes de 20 de ori:

library(mice)
nhanes_multiimp <- mice(nhanes, m = 20)

Ajustați un model de regresie liniară pentru fiecare set de date imputat:

lm_multiimp <- with(nhanes_multiimp, lm(Weight ~ Height + TotChol + PhysActive))

Agregați rezultatele regresiei:

lm_pooled <- pool(lm_multiimp)
Gestionarea datelor lipsă prin imputare în R

Analiza rezultatelor agregate

summary(lm_pooled, conf.int = TRUE, conf.level = 0.95)
            estimate std.error statistic      df p.value    2.5 %   97.5 %
(Intercept) -122.964    10.933   -11.247 735.389   0.000 -144.428 -101.500
Height         1.086     0.060    18.158 796.106   0.000    0.968    1.203
TotChol        2.653     0.884     3.003 305.460   0.003    0.915    4.392
PhysActive    -1.746     1.422    -1.228 733.957   0.220   -4.536    1.045
Gestionarea datelor lipsă prin imputare în R

MICE: metode disponibile

Un tabel din articolul lui van Buuren et al. care prezintă modelele de imputare disponibile în MICE. Fiecare model este descris prin nume, cuvânt cheie, tipul variabilei pentru care poate fi utilizat și dacă este opțiunea implicită.

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
Gestionarea datelor lipsă prin imputare în R

Alegerea metodelor pe tip de variabilă

mice() acceptă argumentul defaultMethod: un vector de 4 șiruri, care specifică metodele pentru:

  1. Variabile continue
  2. Variabile binare
  3. Variabile categoriale (factori neordonați)
  4. Variabile factor (factori ordonați)
nhanes_multiimp <- mice(nhanes, m = 20, 
                        defaultMethod = c("pmm", "logreg", "polyreg", "polr"))
Gestionarea datelor lipsă prin imputare în R

Matricea de predictori

predictorMatrix determină ce variabile sunt utilizate pentru a imputa alte variabile.

nhanes_multiimp <- mice(nhanes, m = 20)
nhanes_multiimp$predictorMatrix
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      1      1      1        1       1     1          1
Gender       1      0      1      1        1       1     1          1
Weight       1      1      0      1        1       1     1          1
Height       1      1      1      0        1       1     1          1
Diabetes     1      1      1      1        0       1     1          1
TotChol      1      1      1      1        1       0     1          1
Pulse        1      1      1      1        1       1     0          1
PhysActive   1      1      1      1        1       1     1          0
Gestionarea datelor lipsă prin imputare în R

Alegerea predictorilor pentru fiecare variabilă

  • Ideal, ar trebui efectuată o selecție adecvată a modelului.
  • O alternativă rapidă: utilizarea variabilelor corelate cu ținta.
pred_mat <- quickpred(nhanes, mincor = 0.25)
nhanes_multiimp <- mice(nhanes, m = 20, predictorMatrix = pred_mat)
print(pred_mat)
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      0      0      0        0       0     0          0
Gender       0      0      0      0        0       0     0          0
Weight       1      1      0      0        0       0     1          0
...
Gestionarea datelor lipsă prin imputare în R

Să exersăm imputarea cu MICE!

Gestionarea datelor lipsă prin imputare în R

Preparing Video For Download...