Imputarea valorilor lipsă

Manipularea datelor de tip serie de timp în R

Harrison Brown

Graduate Researcher in Geography

Serii de timp regulate și neregulate

Serii de timp regulate:

  • Fără valori lipsă sau NA
  • Intervale uniforme

Probleme din lumea reală:

  • Defecțiuni ale senzorilor și echipamentelor
  • Condiții meteorologice
  • ...

Agregare:

  • Reeșantionează datele la rezoluție temporală mai mică
  • Reduce informațiile
  • ex. suma lunară a valorilor zilnice

Imputare:

  • Completează valorile lipsă
  • Diferite metode de determinare a valorilor
Manipularea datelor de tip serie de timp în R

Imputare

Graficul unei porțiuni din setul de date Mauna Loa. Această versiune prezintă puncte lipsă, care creează „goluri" în linie. Aceste goluri reprezintă valori NA din date.

Versiune mărită a graficului anterior al setului de date Mauna Loa. Golurile din grafic sunt mai vizibile.

Manipularea datelor de tip serie de timp în R

Imputarea valorilor cu zoo

Funcții na. din zoo:

  • zoo::na.fill()

  • zoo::na.locf()

  • zoo::na.approx()

Manipularea datelor de tip serie de timp în R

Identificarea valorilor lipsă

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
2017-01-06  2
2017-01-07 NA
2017-01-08  1
2017-01-09  2
2017-01-10  2
...
sum(is.na(observations))
[1] 23
Manipularea datelor de tip serie de timp în R

na.fill

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
...
table(observations, useNA = 'ifany')
   1    2    3    4    5    6 <NA> 
  43   29   17   13    1    2   23

Graficul unei serii de timp fictive în care axa y reprezintă numărul de observații zilnice. Există lacune între observații, cauzate de valorile lipsă (NA) din set.

Manipularea datelor de tip serie de timp în R

na.fill

observations_fill <-
  na.fill(object = observations,
          fill = 0)

table(observations_fill)
 0  1  2  3  4  5  6 
23 43 29 17 13  1  2
autoplot(observations_fill)

Versiunea „completată" a graficului „Observații zilnice" — valorile lipsă (NA) au fost înlocuite cu zero prin metoda de imputare cu constantă.

Manipularea datelor de tip serie de timp în R

na.locf

autoplot(scores)
Warning message:
Removed 12 row(s) containing
missing values (geom_path).

Graficul seriei de timp fictive „Scoruri lunare la teste". Linia graficului se întrerupe brusc, indicând valori lipsă (NA) după un anumit punct. Datele acoperă perioada 2005–2008, cu o tendință generală ascendentă. După 2007, valorile lipsesc.

scores_locf <- na.locf(scores)
autoplot(scores_locf)

Versiunea „completată" a graficului „Scoruri lunare la teste", folosind LOCF (Last Observation Carried Forward). După 2007, valorile lipsă sunt înlocuite cu ultima valoare non-NA.

Manipularea datelor de tip serie de timp în R

Interpolare liniară

na.approx()

Primul diapozitiv dintr-o „animație" care ilustrează procesul de interpolare liniară. Imaginea prezintă un grafic conceptual cu axele x și y și valori trasate pe o linie. Există o lacună mare între valorile din stânga și cele din dreapta, unde datele sunt NA.

Manipularea datelor de tip serie de timp în R

Interpolare liniară

na.approx()

Al doilea diapozitiv dintr-o „animație" despre interpolarea liniară. Lacuna dintre cele două jumătăți ale datelor este acoperită de o linie roșie punctată, indicând că interpolarea liniară conectează cele mai apropiate valori non-NA de o parte și de alta a datelor lipsă.

Manipularea datelor de tip serie de timp în R

Interpolare liniară

na.approx()

Al treilea diapozitiv dintr-o „animație" despre interpolarea liniară. Linia roșie punctată este înlocuită de o linie neagră continuă, indicând că valorile lipsă au fost înlocuite prin interpolare liniară.

Manipularea datelor de tip serie de timp în R

na.approx

maunaloa_approx <-
  na.approx(maunaloa_missing)

autoplot(maunaloa_approx) +
  labs(
    x = "Index",
    y = "CO2 Concentration",
    title = "Approximated Data Points"
  )

Graficul seriei de timp Mauna Loa, unde valorile lipsă (NA) au fost completate prin interpolare liniară. Este aproape imposibil de identificat unde se aflau valorile lipsă, ceea ce demonstrează precizia acestei metode de imputare.

Manipularea datelor de tip serie de timp în R

Să exersăm!

Manipularea datelor de tip serie de timp în R

Preparing Video For Download...