Comment décomposer une série chronologique avec plusieurs composantes saisonnières?

22

J'ai une série chronologique qui contient des composantes saisonnières doubles et je voudrais décomposer la série en composantes chronologiques suivantes (tendance, composante saisonnière 1, composante saisonnière 2 et composante irrégulière). Pour autant que je sache, la procédure STL de décomposition d'une série en R ne permet qu'une seule composante saisonnière, j'ai donc essayé de décomposer la série deux fois. Tout d'abord, en définissant la fréquence comme première composante saisonnière à l'aide du code suivant:

ser = ts(data, freq=48)
dec_1 = stl(ser, s.window="per")

Ensuite, j'ai décomposé la composante irrégulière de la série décomposée ( dec_1) en définissant la fréquence comme la deuxième composante saisonnière, de sorte que:

ser2 = ts(dec_1$time.series[,3], freq=336)
dec_2 = stl(ser2, s.window="per")

Je ne suis pas très confiant avec cette approche. Et je voudrais savoir s'il existe d'autres moyens de décomposer une série qui a plusieurs saisonnalités. De plus, j'ai remarqué que la tbats()fonction dans le package de prévisions R permet d'ajuster un modèle à une série avec plusieurs saisons, mais elle ne dit pas comment décomposer une série avec elle.

ace
la source
Bonjour et bienvenue sur le site. Pour vos deux composantes saisonnières, ont-elles une périodicité différente, par exemple une hebdomadaire et une autre mensuelle?
Michelle
1
Le chapitre 14 de Rob Hyndman, Koehler, Ord & Snyder "Prévision avec lissage exponentiel" couvre cela. Hyndman a également un package de prévisions dans R. Je semble me rappeler que Hyndman a posté sur ce site sur ce sujet, mais il aurait pu être sur son blog.
zbicyclist
@Michelle Salut merci pour la réponse. Oui, les deux composantes saisonnières ont une périodicité différente. Le premier a une périodicité de 48 (saisonnalité quotidienne), tandis que le second a une périodicité de 336 (saisonnalité hebdomadaire). Il s'agit d'une série chronologique d'une demi-heure.
as
@zbicyclist Je pense que le package de prévisions dont vous parlez est le package de "prévisions" que j'ai mentionné dans le message d'origine. J'ai jeté un œil à la fonction tbats de ce paquet mais il ne dit pas comment l'utiliser pour la décomposition. Je vais consulter le livre pour voir si je peux trouver d'autres illustrations.
as
2
Voici à quoi je pensais. C'était sur le blog de Hyndman. robjhyndman.com/papers/complex-seasonality
zbicyclist

Réponses:

13

forecastbats()tbats()X(t)t

Voir http://robjhyndman.com/papers/complex-seasonality/ pour les formules et Hyndman et al (2008) pour une meilleure description des modèles ETS. BATS et TBATS sont une extension d'ETS.

Par exemple:

fit <- bats(myTimeseries)
fit$x

Dans ce cas, chaque ligne de xsera sur une harmonique de type Fourier.

Il y a aussi plot.tbats()et plot.bats()fonctions pour décomposer automatiquement et afficher les composants.

Puissance
la source