Ponowne próbkowanie i agregowanie obserwacji

Manipulowanie danymi szeregów czasowych w R

Harrison Brown

Graduate Researcher in Geography

Częstotliwość próbkowania

Częstotliwość:

  • Liczba obserwacji na rok
  • np. tygodniowa, dzienna, miesięczna, ...

Rozdzielczość czasowa:

  • „Wysoka rozdzielczość" – częste próbkowanie
  • „Niska rozdzielczość" – rzadkie próbkowanie
  • „Wysoka" i „niska" są pojęciami względnymi

Diagram koncepcyjny przedstawiający dwie siatki: o niskiej i wysokiej rozdzielczości. Ilustruje ideę danych próbkowanych częściej lub rzadziej.

Manipulowanie danymi szeregów czasowych w R

Agregacja

  • Wysoka rozdzielczość -> niska rozdzielczość
  • Stosuje funkcję, np. mean, sum, max, do wybranego przedziału
  • np.:
    • Miesięczna sum danych dziennych
    • Tygodniowa mean wartości godzinowych
    • ...
  • Agregacji nie można cofnąć
  • Miesięczna suma -> wartości dzienne?
  • Dostarcza statystyk opisujących wzorce w danych
  • Agregacja zmniejsza ilość informacji
Manipulowanie danymi szeregów czasowych w R

Agregowanie danych przy użyciu xts

xts:

  • eXtensible Time Series
  • Rozszerza pakiet zoo i klasę obiektów zoo
  • Funkcje apply.*()
yearly_mean <-
  apply.yearly(x = maunaloa,
               FUN = mean)
autoplot(yearly_mean) + 
  labs(...)

Wykres zbioru danych Mauna Loa zagregowanego do rocznych średnich. W przeciwieństwie do danych oryginalnych, gdzie zmienność wewnątrzroczna była duża, linia jest bardzo gładka ze względu na niższą rozdzielczość próbkowania.

Manipulowanie danymi szeregów czasowych w R

Agregowanie danych przy użyciu xts

Wykres szeregu czasowego Mauna Loa przedstawiający stężenie dwutlenku węgla próbkowane co tydzień. Wykres ma ogólny trend wzrostowy z okresowym, sezonowym szczytem każdego roku.

Wykres zbioru danych Mauna Loa zagregowanego do rocznych średnich. W przeciwieństwie do danych oryginalnych, gdzie zmienność wewnątrzroczna była duża, linia jest bardzo gładka ze względu na niższą rozdzielczość próbkowania.

Manipulowanie danymi szeregów czasowych w R

Funkcje apply-dot

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

Punkty końcowe i 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
...
Manipulowanie danymi szeregów czasowych w R

Czas na ćwiczenia!

Manipulowanie danymi szeregów czasowych w R

Preparing Video For Download...