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
Instructions de l’exercice
- Ajustez une régression harmonique appelée
fitàtayloren 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 deh. - 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
___