Hersampelen en aggregeren van observaties

Tijdreeksgegevens bewerken in R

Harrison Brown

Graduate Researcher in Geography

Bemonsteringsfrequentie

Frequentie:

  • Aantal observaties per jaar
  • Bijv. wekelijks, dagelijks, maandelijks, ...

Tijdresolutie:

  • "Hoog" = vaak bemonsterd
  • "Laag" = zelden bemonsterd
  • "Hoog" en "laag" zijn subjectief

Conceptueel diagram met twee rasters: één met lage resolutie en één met hoge resolutie. Dit benadrukt vaker vs. minder vaak bemonsterde data.

Tijdreeksgegevens bewerken in R

Aggregatie

  • Hoge resolutie -> lage resolutie
  • Past een functie toe, zoals mean, sum, max, op het gekozen interval
  • Bijv.:
    • Maandelijkse sum van dagelijkse data
    • Wekelijkse mean van uurlijkse waarden
    • ...
  • Aggregatie kun je niet omkeren
  • Maandtotaal -> dagelijkse waarden?
  • Levert statistieken om patronen te beschrijven
  • Aggregatie vermindert informatie
Tijdreeksgegevens bewerken in R

Data aggregeren met xts

xts:

  • eXtensible Time Series
  • Breidt het zoo-pakket en de zoo-klasse uit
  • apply.*()-functies
yearly_mean <-
  apply.yearly(x = maunaloa,
               FUN = mean)
autoplot(yearly_mean) + 
  labs(...)

Grafiek van de Mauna Loa-dataset, geaggregeerd naar het jaarlijkse gemiddelde. In plaats van sterke variatie per jaar in de ruwe data, toont deze grafiek een vloeiende lijn door de lagere bemonsteringsfrequentie.

Tijdreeksgegevens bewerken in R

Data aggregeren met xts

Grafiek van de Mauna Loa-tijdreeks met wekelijks bemeten CO₂-concentraties. De grafiek stijgt in het algemeen en heeft elk jaar een seizoenspiek.

Grafiek van de Mauna Loa-dataset, geaggregeerd naar het jaarlijkse gemiddelde. In plaats van sterke variatie per jaar in de ruwe data, toont deze grafiek een vloeiende lijn door de lagere bemonsteringsfrequentie.

Tijdreeksgegevens bewerken in R

apply-dot-functies

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)
Tijdreeksgegevens bewerken in R

Endpoints en 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
...
Tijdreeksgegevens bewerken in R

Laten we oefenen!

Tijdreeksgegevens bewerken in R

Preparing Video For Download...