Imputacja brakujących wartości

Manipulowanie danymi szeregów czasowych w R

Harrison Brown

Graduate Researcher in Geography

Regularne i nieregularne szeregi czasowe

Regularny szereg czasowy:

  • Brak wartości NA
  • Równe odstępy między interwałami

Problemy w praktyce:

  • Awarie czujników i urządzeń
  • Warunki pogodowe
  • ...

Agregacja:

  • Próbkuje dane do niższej rozdzielczości czasowej
  • Zmniejsza ilość informacji
  • np. miesięczna suma wartości dziennych

Imputacja:

  • Uzupełnia brakujące wartości
  • Różne metody wyznaczania wartości
Manipulowanie danymi szeregów czasowych w R

Imputacja

Wykres fragmentu zbioru danych Mauna Loa z brakującymi punktami, które tworzą przerwy w linii wykresu. Przerwy te reprezentują wartości NA w danych.

Powiększona wersja poprzedniego wykresu zbioru danych Mauna Loa. Przerwy w linii wykresu są wyraźniej widoczne.

Manipulowanie danymi szeregów czasowych w R

Imputacja wartości za pomocą zoo

Funkcje na. z pakietu zoo:

  • zoo::na.fill()

  • zoo::na.locf()

  • zoo::na.approx()

Manipulowanie danymi szeregów czasowych w R

Wykrywanie brakujących wartości

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
Manipulowanie danymi szeregów czasowych w 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

Wykres fikcyjnego szeregu czasowego, gdzie oś Y przedstawia liczbę obserwacji dziennie. Luki między obserwacjami wynikają z brakujących wartości NA w zbiorze danych.

Manipulowanie danymi szeregów czasowych w 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)

Wersja poprzedniego wykresu z uzupełnionymi danymi — brakujące wartości NA zastąpiono zerami metodą imputacji stałą wartością.

Manipulowanie danymi szeregów czasowych w R

na.locf

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

Wykres fikcyjnego szeregu czasowego „Miesięczne wyniki testów". Linia kończy się gwałtownie, co wskazuje na brakujące wartości NA po pewnym punkcie. Dane obejmują lata 2005–2008 z ogólnym trendem wzrostowym; po 2007 roku wartości są niedostępne.

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

Uzupełniona wersja wykresu „Miesięczne wyniki testów" z użyciem LOCF (Last Observation Carried Forward). Po 2007 roku brakujące wartości zastąpiono ostatnią dostępną wartością inną niż NA.

Manipulowanie danymi szeregów czasowych w R

Interpolacja liniowa

na.approx()

Slajd 1 animacji ilustrującej interpolację liniową. Wykres koncepcyjny z osiami x i y pokazuje dane z dużą luką między lewą a prawą częścią, gdzie wartości są NA.

Manipulowanie danymi szeregów czasowych w R

Interpolacja liniowa

na.approx()

Slajd 2 animacji ilustrującej interpolację liniową. Luka między obiema częściami danych jest połączona czerwoną przerywaną linią, która łączy dwie najbliższe wartości inne niż NA po obu stronach brakujących danych.

Manipulowanie danymi szeregów czasowych w R

Interpolacja liniowa

na.approx()

Slajd 3 animacji ilustrującej interpolację liniową. Czerwona przerywana linia zostaje zastąpiona czarną ciągłą linią, wskazując, że brakujące wartości uzupełniono metodą interpolacji liniowej.

Manipulowanie danymi szeregów czasowych w R

na.approx

maunaloa_approx <-
  na.approx(maunaloa_missing)

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

Wykres szeregu czasowego Mauna Loa z uzupełnionymi wartościami NA metodą interpolacji liniowej. Miejsca brakujących wartości są praktycznie niewidoczne, co świadczy o dokładności tej metody imputacji.

Manipulowanie danymi szeregów czasowych w R

Czas na ćwiczenia!

Manipulowanie danymi szeregów czasowych w R

Preparing Video For Download...