Hot-deck-imputatie

Omgaan met missende data met imputaties in R

Michal Oleszak

Machine Learning Engineer

Geschiedenis van hot-deck

  • Ontstaan in de jaren 50, toen data op ponskaarten stond.
  • Door de data heen bladeren was zeer traag.
  • Het U.S. Census Bureau bedacht een methode met slechts één keer door de data.

Een foto van een oude ponskaart die werd gebruikt om computers te programmeren.

1 Beeldbron: https://en.wikipedia.org/wiki/Punched_card#/media/File:Used_Punchcard_(5151286161).jpg
Omgaan met missende data met imputaties in R

Hot-deck-imputatie

  • Vervang voor elke variabele elke missende waarde door de laatst geobserveerde waarde.
  • Hot-deck verwijst naar het dek ponskaarten dat werd verwerkt.

Nadelen

  • Vereist MCAR-data.
  • Simpele hot-deck kan relaties tussen variabelen verstoren.

Voordelen

  • Snel (slechts één pass door de data).
  • Geïmputeerde waarden zijn niet constant.
  • Eenvoudige trucs voorkomen gebroken relaties.
Omgaan met missende data met imputaties in R

Hot-deck in de praktijk

nhanes_imp <- hotdeck(nhanes, variable = c("Height", "Weight"))
head(nhanes_imp)
  Age Gender Weight Height Diabetes TotChol Pulse PhysActive Height_imp Weight_imp
1  16   male   73.2  172.0    FALSE    3.00    76       TRUE      FALSE      FALSE
2  17   male   72.3  176.0    FALSE    2.61    74       TRUE      FALSE      FALSE
3  12   male   57.7  158.9    FALSE    4.27    80       TRUE      FALSE      FALSE
4  16   male   88.9  183.3    FALSE    3.62    58       TRUE      FALSE      FALSE
5  13 female   45.1  157.6    FALSE    2.66    92       TRUE      FALSE      FALSE
6  16 female   48.7  180.7    FALSE    4.32    58      FALSE       TRUE      FALSE
Omgaan met missende data met imputaties in R

Imputeren binnen domeinen

Een tabel met twee kolommen: PhysActive en Weight. Er ontbreekt één waarde in Weight. Omdat de rijen in willekeurige volgorde staan, komt een rij met PhysActive=FALSE vóór die met PhysActive=TRUE en het ontbrekende gewicht. Dit laat zien hoe hot-deck het gewicht van een niet-actieve persoon doorgeeft aan een actieve persoon.

Een tabel met twee kolommen: PhysActive en Weight. Er ontbreekt één waarde in Weight. Omdat de data gegroepeerd zijn op PhysActive, geeft hot-deck de waarde van een actieve persoon door aan een andere actieve persoon.

nhanes_imp <- hotdeck(
    nhanes, 
    variable = "Weight", 
    domain_var = "PhysActive"
)
Omgaan met missende data met imputaties in R

Sorteren op gecorreleerde variabelen

Een tabel met twee variabelen: Height en Weight. Er ontbreekt één waarde in Weight. Omdat de rijen in willekeurige volgorde staan, komt een rij met grote lengte vóór een met kleine lengte en het ontbrekende gewicht. Dit laat zien hoe hot-deck het gewicht van een lange persoon doorgeeft aan een korte persoon.

Een tabel met twee variabelen: Height en Weight. Er ontbreekt één waarde in Weight. Omdat de rijen op Height gesorteerd zijn, geeft hot-deck het gewicht van een korte persoon door aan een andere korte persoon.

nhanes_imp <- hotdeck(
    nhanes, 
    variable = "Weight"
    ord_var = "Height"
)
Omgaan met missende data met imputaties in R

Laten we hot-deck-imputeren!

Omgaan met missende data met imputaties in R

Preparing Video For Download...