Převzorkování a agregace pozorování

Manipulace s časovými řadami v R

Harrison Brown

Graduate Researcher in Geography

Frekvence vzorkování

Frekvence:

  • Počet pozorování za rok
  • např. týdenní, denní, měsíční, ...

Časové rozlišení:

  • „Vysoké rozlišení" – vzorkováno často
  • „Nízké rozlišení" – vzorkováno méně často
  • „Vysoké" a „nízké" jsou relativní pojmy

Konceptuální diagram znázorňující dvě mřížky: jednu s nízkým a jednu s vysokým rozlišením. Diagram ilustruje rozdíl mezi méně a více frekventovaným vzorkováním dat.

Manipulace s časovými řadami v R

Agregace

  • Vysoké rozlišení -> nízké rozlišení
  • Aplikuje funkci jako mean, sum, max na zvolený interval
  • Příklady:
    • Měsíční sum denních dat
    • Týdenní mean hodinových hodnot
    • ...
  • Agregaci nelze „vrátit zpět"
  • Měsíční součet -> denní hodnoty?
  • Poskytuje statistiky pro popis vzorců v datech
  • Agregace snižuje množství informací
Manipulace s časovými řadami v R

Agregace dat pomocí xts

xts:

  • eXtensible Time Series
  • Rozšiřuje balíček zoo a třídu objektů zoo
  • Funkce apply.*()
yearly_mean <-
  apply.yearly(x = maunaloa,
               FUN = mean)
autoplot(yearly_mean) + 
  labs(...)

Graf datasetu Mauna Loa agregovaného na roční průměry. Oproti původním datům s výraznou vnitroroční variabilitou je tato křivka velmi hladká díky nižšímu rozlišení vzorkování.

Manipulace s časovými řadami v R

Agregace dat pomocí xts

Graf časové řady Mauna Loa znázorňující týdenní koncentrace oxidu uhličitého. Graf vykazuje celkový vzestupný trend s pravidelným sezónním vrcholem každý rok.

Graf datasetu Mauna Loa agregovaného na roční průměry. Oproti původním datům s výraznou vnitroroční variabilitou je tato křivka velmi hladká díky nižšímu rozlišení vzorkování.

Manipulace s časovými řadami v R

Funkce apply.*

daily_total <-
  apply.daily(hourly_sales,
              FUN = sum)
weekly_max <-
  apply.weekly(daily_temperature,
               FUN = max)
monthly_average <-
  apply.monthly(daily_price,
               FUN = mean)
apply.quarterly(sales_report,
                FUN = sum)
apply.yearly(monthly_salary,
             FUN = sum)
Manipulace s časovými řadami v R

Endpoints a period.apply

xts::endpoints()

xts::period.apply()

biweekly_eps <-
  endpoints(x = daily_data,
            on = "weeks",
            k = 2)
biweekly_data <-
  period.apply(x = daily_data,
               INDEX = biweekly_eps,
               FUN = mean)
biweekly_data
2002-05-05 8.148611
2002-05-19 8.146776
2002-06-02 8.060020
2002-06-16 8.028224
2002-06-30 7.944792
2002-07-14 7.930159
...
Manipulace s časovými řadami v R

Pojďme si procvičit!

Manipulace s časovými řadami v R

Preparing Video For Download...