Medelvärdesimputering

Hantering av saknade värden med imputering i R

Michal Oleszak

Machine Learning Engineer

Imputeringsterminologi

Imputering = en kvalificerad gissning om vad de saknade värdena kan vara

  • Donatorsbaserad imputering – saknade värden fylls i med hjälp av andra, fullständiga observationer.
  • Modellbaserad imputering – saknade värden förutsägs med en statistisk eller maskininlärningsmodell.

Detta kapitel fokuserar på donatorsbaserade metoder:

  • Medelvärdesimputering
  • Hot-deck-imputering
  • kNN-imputering
Hantering av saknade värden med imputering i R

Medelvärdesimputering

En tabell med två kolumner: en med rådata som innehåller ett saknat värde, och en med imputerade data där det saknade värdet ersatts med medelvärdet.

Medelvärdesimputering fungerar bra för tidsseriedata som slumpmässigt varierar kring ett långsiktigt medelvärde.

För tvärsnittdata är medelvärdesimputering ofta ett dåligt val:

  • Förstör samband mellan variabler.
  • Det saknas varians i de imputerade värdena.
Hantering av saknade värden med imputering i R

Medelvärdesimputering i praktiken

Uppgift: medelvärdesimputera Height och Weight i NHANES-data.

  • Skapa binära indikatorer för om varje värde ursprungligen saknades.
nhanes <- nhanes %>% 
  mutate(Height_imp = ifelse(is.na(Height), TRUE, FALSE)) %>% 
  mutate(Weight_imp = ifelse(is.na(Weight), TRUE, FALSE))
  • Ersätt saknade värden i Height och Weight med respektive medelvärde.
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))
Hantering av saknade värden med imputering i R

Medelvärdesimputerade NHANES-data

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
Hantering av saknade värden med imputering i R

Utvärdera imputeringskvalitet: marginplott

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

Ett marginplott – ett spridningsdiagram över "Height" mot "Weight" – där imputerade värden i någon av de två variablerna är markerade i en annan färg.

Hantering av saknade värden med imputering i R

Problem med medelvärdesimputering

Förstörda samband mellan variabler:

  • Efter medelvärdesimputering av Height och Weight är deras positiva korrelation svagare.
  • Modeller som förutsäger den ena utifrån den andra påverkas av de avvikande imputerade värdena och ger snedvridna resultat.

Ingen variation i imputerade data:

  • Med lägre varians i data underskattas alla standardfel. Det försvårar tillförlitlig hypotesprövning och beräkning av konfidensintervall.
Hantering av saknade värden med imputering i R

Median- och typvärdesimputering

  • I stället för medelvärdet kan man imputera med median eller typvärde.
  • Medianimputering är ett bättre val när det finns extremvärden i data.
  • För kategoriska variabler kan varken medelvärde eller median beräknas, så typvärdet används istället.
  • Både median- och typvärdesimputering har samma nackdelar som medelvärdesimputering.

Ett marginplott – ett spridningsdiagram över "Height" mot "Weight" – där imputerade värden i någon av de två variablerna är markerade i en annan färg.

Hantering av saknade värden med imputering i R

Nu kör vi en övning!

Hantering av saknade värden med imputering i R

Preparing Video For Download...