Imputarea prin medie

Gestionarea datelor lipsă prin imputare în R

Michal Oleszak

Machine Learning Engineer

Vocabularul imputării

Imputarea = estimarea valorilor lipsă pe baza informațiilor disponibile

  • Imputarea bazată pe donatori - valorile lipsă sunt completate cu observații complete existente.
  • Imputarea bazată pe modele - valorile lipsă sunt estimate cu un model statistic sau de învățare automată.

Acest capitol se concentrează pe metodele bazate pe donatori:

  • Imputarea prin medie
  • Imputarea hot-deck
  • Imputarea kNN
Gestionarea datelor lipsă prin imputare în R

Imputarea prin medie

Un tabel cu două coloane: una cu date brute, conținând o valoare lipsă, și alta cu date imputate, identică, dar cu valoarea lipsă înlocuită prin medie.

Imputarea prin medie funcționează bine pentru datele de tip serie temporală care fluctuează aleatoriu în jurul unei medii pe termen lung.

Pentru datele transversale, imputarea prin medie este adesea o alegere slabă:

  • Distruge relațiile dintre variabile.
  • Nu există varianță în valorile imputate.
Gestionarea datelor lipsă prin imputare în R

Imputarea prin medie în practică

Sarcină: imputarea prin medie a Height și Weight în datele NHANES.

  • Creați indicatori binari pentru a marca valorile inițial lipsă.
nhanes <- nhanes %>% 
  mutate(Height_imp = ifelse(is.na(Height), TRUE, FALSE)) %>% 
  mutate(Weight_imp = ifelse(is.na(Weight), TRUE, FALSE))
  • Înlocuiți valorile lipsă din Height și Weight cu mediile respective.
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))
Gestionarea datelor lipsă prin imputare în R

Date NHANES imputate prin medie

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
Gestionarea datelor lipsă prin imputare în R

Evaluarea calității imputării: grafic de marjă

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

Un grafic de marjă, adică un grafic de dispersie „Height" vs „Weight", în care valorile imputate pentru oricare dintre cele două variabile sunt evidențiate cu o culoare diferită.

Gestionarea datelor lipsă prin imputare în R

Probleme ale imputării prin medie

Distrugerea relației dintre variabile:

  • După imputarea prin medie a Height și Weight, corelația pozitivă dintre ele slăbește.
  • Modelele care prezic una pe baza celeilalte vor fi induse în eroare de valorile imputate extreme și vor produce rezultate distorsionate.

Nicio variabilitate în datele imputate:

  • Cu o varianță mai redusă, toate erorile standard vor fi subestimate. Acest lucru împiedică testarea fiabilă a ipotezelor și calculul intervalelor de încredere.
Gestionarea datelor lipsă prin imputare în R

Imputarea prin mediană și mod

  • În locul mediei, se poate imputa cu mediana sau modul.
  • Imputarea prin mediană este preferabilă când există valori extreme în date.
  • Pentru variabilele categorice, nu se poate calcula nici media, nici mediana, deci se utilizează modul.
  • Atât imputarea prin mediană, cât și prin mod prezintă aceleași dezavantaje ca imputarea prin medie.

Un grafic de marjă, adică un grafic de dispersie „Height" vs „Weight", în care valorile imputate pentru oricare dintre cele două variabile sunt evidențiate cu o culoare diferită.

Gestionarea datelor lipsă prin imputare în R

Să exersăm!

Gestionarea datelor lipsă prin imputare în R

Preparing Video For Download...