Imputace chybějících hodnot

Manipulace s časovými řadami v R

Harrison Brown

Graduate Researcher in Geography

Pravidelné a nepravidelné časové řady

Pravidelná časová řada:

  • Žádné chybějící hodnoty ani NA
  • Rovnoměrné rozestupy mezi intervaly

Problémy v praxi:

  • Selhání senzorů a zařízení
  • Povětrnostní podmínky
  • ...

Agregace:

  • Převzorkuje data na nižší časové rozlišení
  • Snižuje množství informací
  • Např. měsíční součet denních hodnot

Imputace:

  • Doplňuje chybějící hodnoty
  • Různé metody určování hodnot
Manipulace s časovými řadami v R

Imputace

Graf části datové sady Mauna Loa s chybějícími body, které způsobují mezery v linii grafu. Tyto mezery představují hodnoty NA v datech.

Přiblížená verze předchozího grafu datové sady Mauna Loa. Mezery v liniovém grafu jsou zřetelnější.

Manipulace s časovými řadami v R

Imputing values with zoo

na-dot functions from zoo:

  • zoo::na.fill()

  • zoo::na.locf()

  • zoo::na.approx()

Manipulace s časovými řadami v R

Zjišťování chybějících hodnot

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
Manipulace s časovými řadami v 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

Graf fiktivní časové řady, kde osa y představuje počet pozorování za den. V grafu jsou mezery způsobené chybějícími hodnotami NA.

Manipulace s časovými řadami v 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)

Doplněná verze grafu denních pozorování – chybějící hodnoty NA byly nahrazeny nulami metodou konstantní imputace.

Manipulace s časovými řadami v R

na.locf

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

Graf fiktivní časové řady „Měsíční výsledky testů". Linie grafu náhle končí, což naznačuje chybějící hodnoty NA po určitém bodě. Data zachycují výsledky testů od roku 2005 do 2008 s celkovým rostoucím trendem. Po roce 2007 hodnoty chybí.

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

'Filled-in' version of the 'Monthly Test Scores' graph, using LOCF, or Last Observation Carried Forward. After 2007, the values in the time series are replaced with the most recent non-NA value.

Manipulace s časovými řadami v R

Lineární interpolace

na.approx()

Snímek 1 animace znázorňující lineární interpolaci. Graf s osami x a y obsahuje hodnoty vynesené na linii s velkou mezerou mezi levou a pravou skupinou hodnot, kde jsou data NA.

Manipulace s časovými řadami v R

Lineární interpolace

na.approx()

Snímek 2 animace lineární interpolace. Mezera mezi oběma částmi dat je přemostěna červenou tečkovanou čarou, která spojuje dvě nejbližší hodnoty, jež nejsou NA, na každé straně chybějících dat.

Manipulace s časovými řadami v R

Lineární interpolace

na.approx()

Snímek 3 animace lineární interpolace. Červená tečkovaná čára je nahrazena plnou černou čarou, která znázorňuje, že chybějící hodnoty byly nahrazeny lineární interpolací.

Manipulace s časovými řadami v R

na.approx

maunaloa_approx <-
  na.approx(maunaloa_missing)

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

Graf časové řady Mauna Loa, kde chybějící hodnoty NA byly doplněny lineární interpolací. Místa původně chybějících hodnot jsou téměř nerozpoznatelná, což dokládá přesnost této metody imputace.

Manipulace s časovými řadami v R

Let's practice!

Manipulace s časovými řadami v R

Preparing Video For Download...