Replikace variability dat

Práce s chybějícími daty pomocí imputace v R

Michal Oleszak

Machine Learning Engineer

Variabilita imputovaných dat

Okrajový graf – bodový diagram „Height" vs „Weight", kde hodnoty imputované v některé z proměnných jsou zvýrazněny jinou barvou.

  • Imputovaná data nemají žádnou variabilitu.
  • Imputace by měla replikovat variabilitu pozorovaných dat.
  • U modelové imputace vedou stejné hodnoty prediktorů ke stejné imputované hodnotě.
  • Řešení: výběr z podmíněných rozdělení.
Práce s chybějícími daty pomocí imputace v R

Co je to předpověď

Většina statistických modelů odhaduje podmíněné rozdělení závislé proměnné:

$p(y|X)$

Pro vytvoření jediné předpovědi je podmíněné rozdělení sumarizováno:

  • Lineární regrese: střední hodnota podmíněného rozdělení.
  • Logistická regrese: třída s nejvyšší pravděpodobností.

Místo toho lze z těchto rozdělení vzorkovat a zvýšit variabilitu.

Práce s chybějícími daty pomocí imputace v R

Výběr z podmíněných rozdělení

Graf hustoty pravděpodobnosti normálního rozdělení se zvýrazněnou střední hodnotou 25.

Práce s chybějícími daty pomocí imputace v R

Výběr z podmíněných rozdělení

Tabulka se čtyřmi sloupci: pravděpodobnost předpovědi z logistické regrese (0,7 pro všechny řádky), příznak, zda je pravděpodobnost větší než 0,5 (TRUE pro všechny), imputovaná hodnota na základě prahu (1 pro všechny) a imputovaná hodnota výběrem z podmíněného rozdělení (1 pro většinu řádků, 0 pro některé).

Práce s chybějícími daty pomocí imputace v R

Imputace logistickou regresí

Úkol: imputovat PhysActive z dat nhanes pomocí logistické regrese.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
Práce s chybějícími daty pomocí imputace v R

Imputace logistickou regresí

Úkol: imputovat PhysActive z dat nhanes pomocí logistické regrese.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
Práce s chybějícími daty pomocí imputace v R

Imputace logistickou regresí

Úkol: imputovat PhysActive z dat nhanes pomocí logistické regrese.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
Práce s chybějícími daty pomocí imputace v R

Imputace logistickou regresí

Úkol: imputovat PhysActive z dat nhanes pomocí logistické regrese.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
Práce s chybějícími daty pomocí imputace v R

Imputace logistickou regresí

Úkol: imputovat PhysActive z dat nhanes pomocí logistické regrese.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Práce s chybějícími daty pomocí imputace v R

Imputace logistickou regresí

Variabilita imputovaných dat:

table(preds[missing_physactive])
 1 
26

Variabilita pozorovaných dat PhysActive:

table(nhanes$PhysActive)
  0   1 
181 610
Práce s chybějícími daty pomocí imputace v R

Výběr z pravděpodobností tříd

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Práce s chybějícími daty pomocí imputace v R

Výběr z pravděpodobností tříd

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")

nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Práce s chybějícími daty pomocí imputace v R

Výběr z pravděpodobností tříd

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- rbinom(length(preds), size = 1, prob = preds)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Práce s chybějícími daty pomocí imputace v R

Výběr z pravděpodobností tříd

Variabilita imputovaných dat:

table(preds[missing_physactive])
0  1 
5 21

Variabilita pozorovaných dat PhysActive:

table(nhanes$PhysActive)
  0   1 
181 610
Práce s chybějícími daty pomocí imputace v R

Procvičte si replikaci variability dat!

Práce s chybějícími daty pomocí imputace v R

Preparing Video For Download...