CommencezCommencez gratuitement

Régression harmonique pour des saisonnalités multiples

Les régressions harmoniques sont aussi utiles lorsque les séries chronologiques présentent plusieurs motifs saisonniers. Par exemple, taylor contient la demande d'électricité aux demi-heures en Angleterre et au Pays de Galles sur quelques mois de l'an 2000. Les périodes saisonnières sont 48 (saisonnalité quotidienne) et 7 x 48 = 336 (saisonnalité hebdomadaire). Il n'y a pas assez de données pour envisager une saisonnalité annuelle.

auto.arima() prendrait beaucoup de temps à ajuster une série aussi longue; vous allez donc plutôt ajuster un modèle de régression standard avec des termes de Fourier en utilisant la fonction tslm(). Elle est très similaire à lm(), mais conçue pour gérer des séries chronologiques. En présence de plusieurs saisonnalités, vous devez préciser l'ordre \(K\) pour chacune des périodes saisonnières.

# L'argument formula est une description symbolique
# du modèle à ajuster

> args(tslm)
function (formula, ...)

tslm() est une fonction nouvellement introduite, donc vous devriez pouvoir suivre en grande partie le code déjà écrit. Les données taylor sont chargées dans votre espace de travail.

Cette activité fait partie du cours

Prévision en R

Voir le cours

Instructions de l’exercice

  • Ajustez une régression harmonique appelée fit à taylor en utilisant l'ordre 10 pour chaque type de saisonnalité.
  • Produisez des prévisions 20 jours ouvrables à l'avance sous le nom fc. Rappelez-vous que les données sont aux demi-heures afin de définir correctement la valeur de h.
  • Créez un graphique temporel des prévisions.
  • Vérifiez les résidus de votre modèle ajusté. Comme vous pouvez le constater, auto.arima() aurait donné de meilleurs résultats.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Fit a harmonic regression using order 10 for each type of seasonality
fit <- tslm(taylor ~ fourier(___, K = c(10, 10)))

# Forecast 20 working days ahead
fc <- forecast(___, newdata = data.frame(fourier(___, K = ___, h = ___)))

# Plot the forecasts
___

# Check the residuals of fit
___
Modifier et exécuter le code