Přístup imputace pomocí modelu

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

Michal Oleszak

Machine Learning Engineer

Imputace pomocí modelu

  • Každá proměnná je imputována jiným statistickým modelem.
  • Schopnost zohlednit vztahy v datech, které jsou předem známy.
Práce s chybějícími daty pomocí imputace v R

Postup imputace pomocí modelu

  • Procházení proměnných ve smyčce.
  • Pro každou proměnnou vytvoření modelu, který ji vysvětluje.
  • Použití modelu k předpovědi chybějících hodnot.
  • Iterace přes proměnné – imputace tam, kde data původně chyběla.
Práce s chybějícími daty pomocí imputace v R

Imputace pomocí modelu krok za krokem

Datový rámec se čtyřmi proměnnými (A, B, C a D) a pěti řádky s testovacími daty. Dvě proměnné (A a C) mají vždy dvě chybějící hodnoty, každá v jiném řádku.

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

Imputace pomocí modelu krok za krokem

Datový rámec se čtyřmi proměnnými (A, B, C a D) a pěti řádky s testovacími daty. Chybějící hodnoty v A byly imputovány.

  1. Předpovězení chybějících hodnot v A.
Práce s chybějícími daty pomocí imputace v R

Imputace pomocí modelu krok za krokem

Datový rámec se čtyřmi proměnnými (A, B, C a D) a pěti řádky s testovacími daty. Chybějící hodnoty v A i C byly imputovány.

  1. Předpovězení chybějících hodnot v A.
  2. Imputovaná data v A jsou považována za pozorovaná – předpověď chybějících hodnot v C.
Práce s chybějícími daty pomocí imputace v R

Imputace pomocí modelu krok za krokem

Datový rámec se čtyřmi proměnnými (A, B, C a D) a pěti řádky s testovacími daty. Chybějící hodnoty v C byly imputovány.

  1. Předpovězení chybějících hodnot v A.
  2. Imputovaná data v A jsou považována za pozorovaná – předpověď chybějících hodnot v C.
  3. Imputovaná data v C jsou považována za pozorovaná – znovu předpověď A tam, kde původně chybělo.
  4. Pokračování až do konvergence.
Práce s chybějícími daty pomocí imputace v R

Výběr modelu

Model pro každou proměnnou závisí na jejím typu:

  • Spojité proměnné – lineární regrese
  • Binární proměnné – logistická regrese
  • Kategorické proměnné – multinomická logistická regrese
  • Počítací proměnné – Poissonova regrese
Práce s chybějícími daty pomocí imputace v R

Imputace jednoduchou lineární regresí

Imputace Height a Weight v nhanes lineárním modelem:

library(simputation)
nhanes_imp <- impute_lm(nhanes, Height + Weight ~ .)

Ověření, zda byly skutečně imputovány:

nhanes_imp %>% 
  is.na() %>% 
  colSums()
Age     Gender     Weight     Height   Diabetes    TotChol      Pulse PhysActive 
  0          0         32         30          1         85         32         26
Práce s chybějícími daty pomocí imputace v R

Imputace lineární regresí v praxi

Inicializace chybějících hodnot pomocí hotdeck a uložení pozic chybějících hodnot:

nhanes_imp <- hotdeck(nhanes)
missing_height <- nhanes_imp$Height_imp
missing_weight <- nhanes_imp$Weight_imp

Iterace přes Height a Weight 5krát – imputace na původně chybějících pozicích:

for (i in 1:5) {
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes_imp, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes_imp, Weight ~ Age + Gender + Height)
}
Práce s chybějícími daty pomocí imputace v R

Detekce konvergence



for (i in 1:5) {

  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


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

Detekce konvergence

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {

  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


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

Detekce konvergence

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {
  prev_iter <- nhanes_imp
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


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

Detekce konvergence

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {
  prev_iter <- nhanes_imp
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)
  diff_height <- c(diff_height, mapc(prev_iter$Height, nhanes_imp$Height))
  diff_weight <- c(diff_weight, mapc(prev_iter$Weight, nhanes_imp$Weight))
}
Práce s chybějícími daty pomocí imputace v R

Detekce konvergence

Spojnicový graf se dvěma liniemi – jednou pro proměnnou Pulse a druhou pro TotChol. Osa x zobrazuje počet iterací, osa y průměrnou absolutní procentuální změnu imputovaných hodnot napříč iteracemi. Po první iteraci obě proměnné vykazují změnu. Od druhé iterace se již nemění.

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

Procvičme imputaci lineární regresí!

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

Preparing Video For Download...