Gemiddelde-imputatie

Omgaan met missende data met imputaties in R

Michal Oleszak

Machine Learning Engineer

Imputatie-terminologie

Imputatie = een onderbouwde schatting van ontbrekende waarden

  • Donor-gebaseerde imputatie - vullen met andere, complete observaties.
  • Model-gebaseerde imputatie - voorspellen met een statistisch of ML-model.

In dit hoofdstuk: donor-gebaseerde methoden:

  • Gemiddelde-imputatie
  • Hot-deck-imputatie
  • kNN-imputatie
Omgaan met missende data met imputaties in R

Gemiddelde-imputatie

Een tabel met twee kolommen: links ruwe data met één ontbrekende waarde, rechts geïmputeerde data waarin die waarde is ingevuld met het gemiddelde.

Gemiddelde-imputatie werkt goed voor tijdreeksen die willekeurig schommelen rond een langetermijngemiddelde.

Voor dwarsdoorsnede-data is gemiddelde-imputatie vaak een slechte keuze:

  • Tast relaties tussen variabelen aan.
  • Geen variantie in de geïmputeerde waarden.
Omgaan met missende data met imputaties in R

Gemiddelde-imputatie in de praktijk

Taak: imputeer het gemiddelde voor Height en Weight in NHANES.

  • Maak binaire indicatoren voor of de waarde oorspronkelijk ontbrak.
nhanes <- nhanes %>% 
  mutate(Height_imp = ifelse(is.na(Height), TRUE, FALSE)) %>% 
  mutate(Weight_imp = ifelse(is.na(Weight), TRUE, FALSE))
  • Vervang ontbrekende waarden in Height en Weight door hun respectieve gemiddelden.
nhanes_imp <- nhanes %>% 
  mutate(Height = ifelse(is.na(Height), mean(Height, na.rm = TRUE), Height)) %>% 
  mutate(Weight = ifelse(is.na(Weight), mean(Weight, na.rm = TRUE), Weight))
Omgaan met missende data met imputaties in R

NHANES-data met gemiddelde-imputatie

nhanes_imp %>%
    select(Weight, Height, Height_imp, Weight_imp) %>%
    head()
     Weight   Height Height_imp Weight_imp
1  73.20000 166.2499       TRUE      FALSE
2  72.30000 166.2499       TRUE      FALSE
3  57.70000 158.9000      FALSE      FALSE
4  88.90000 183.3000      FALSE      FALSE
5  45.10000 157.6000      FALSE      FALSE
6  66.77065 158.4000      FALSE       TRUE
Omgaan met missende data met imputaties in R

Imputatiekwaliteit beoordelen: margin plot

nhanes_imp %>% select(Weight, Height, Height_imp, Weight_imp) %>% marginplot(delimiter="imp")

Een margin plot: een scatterplot van "Height" vs "Weight", waarbij waarden die in een van beide variabelen zijn geïmputeerd, in een andere kleur zijn gemarkeerd.

Omgaan met missende data met imputaties in R

Problemen met gemiddelde-imputatie

Relatie tussen variabelen gaat verloren:

  • Na imputatie met het gemiddelde voor Height en Weight is hun positieve correlatie zwakker.
  • Modellen die de één uit de ander voorspellen, raken misleid door extreme geïmputeerde waarden en geven vertekende resultaten.

Geen variatie in geïmputeerde data:

  • Met minder variantie worden standaardfouten onderschat. Dat belemmert betrouwbare hypothesetests en betrouwbaarheidsintervallen.
Omgaan met missende data met imputaties in R

Mediaan- en modus-imputatie

  • In plaats van het gemiddelde kun je ook met de mediaan of modus imputeren.
  • Mediaan-imputatie is beter bij uitschieters.
  • Voor categorische variabelen kun je geen gemiddelde of mediaan berekenen; gebruik de modus.
  • Mediaan- en modus-imputatie hebben dezelfde nadelen als gemiddelde-imputatie.

Een margin plot: een scatterplot van "Height" vs "Weight", waarbij waarden die in een van beide variabelen zijn geïmputeerd, in een andere kleur zijn gemarkeerd.

Omgaan met missende data met imputaties in R

Laten we oefenen!

Omgaan met missende data met imputaties in R

Preparing Video For Download...