Rééchantillonner et agréger des observations

Manipuler des séries temporelles en R

Harrison Brown

Graduate Researcher in Geography

Fréquence d'échantillonnage

Fréquence :

  • Nombre d'observations par an
  • ex. : hebdo, quotidien, mensuel, …

Résolution temporelle :

  • « Haute résolution » = échantillonné souvent
  • « Basse résolution » = échantillonné rarement
  • « Haute » et « basse » sont subjectives

Schéma conceptuel avec deux grilles : l'une en basse résolution et l'autre en haute résolution. Le schéma illustre des données échantillonnées plus ou moins fréquemment.

Manipuler des séries temporelles en R

Agrégation

  • Haute résolution -> basse résolution
  • Applique une fonction comme mean, sum, max à l'intervalle choisi
  • ex. :
    • sum mensuel de données quotidiennes
    • mean hebdo de valeurs horaires
    • …
  • Impossible d'« inverser » l'agrégation
  • Total mensuel -> valeurs quotidiennes ?
  • Donne des statistiques pour décrire les motifs des données
  • L'agrégation réduit l'information
Manipuler des séries temporelles en R

Agréger des données avec xts

xts :

  • eXtensible Time Series
  • Étend le package zoo et la classe d'objets zoo
  • Fonctions apply.*()
yearly_mean <-
  apply.yearly(x = maunaloa,
               FUN = mean)
autoplot(yearly_mean) + 
  labs(...)

Graphique du jeu de données Mauna Loa agrégé pour obtenir la moyenne annuelle. Contrairement aux données d'origine, avec une forte variation intra‑annuelle, cette courbe est très lisse car la résolution d'échantillonnage est bien plus faible.

Manipuler des séries temporelles en R

Agréger des données avec xts

Série temporelle Mauna Loa représentant les concentrations de dioxyde de carbone échantillonnées chaque semaine. Tendance générale à la hausse, avec un pic saisonnier annuel.

Graphique du jeu de données Mauna Loa agrégé pour obtenir la moyenne annuelle. Contrairement aux données d'origine, avec une forte variation intra‑annuelle, cette courbe est très lisse car la résolution d'échantillonnage est bien plus faible.

Manipuler des séries temporelles en R

Fonctions 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)
Manipuler des séries temporelles en R

Endpoints et 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
...
Manipuler des séries temporelles en R

Passons à la pratique !

Manipuler des séries temporelles en R

Preparing Video For Download...