Quelle méthode peut être utilisée pour détecter la saisonnalité dans les données?


56

Je veux détecter la saisonnalité dans les données que je reçois. Il existe certaines méthodes que j'ai trouvées, telles que le graphe de sous-séries saisonnière et le graphe d'autocorrélation, mais je ne comprends pas comment lire le graphique. Quelqu'un peut-il aider? L'autre chose est, existe-t-il d'autres méthodes pour détecter la saisonnalité avec ou sans le résultat final dans le graphique?


1
vous pouvez inclure le graphique que vous avez du mal à comprendre.
Karl

Plus préférablement, les données d'origine qui peuvent être utilisées pour générer le fichier ACF "problématique".
IrishStat le


1
voir: journals.ametsoc.org/doi/abs/10.1175/JCLI-D-10-05012.1 Qian, C., Z Wu, C Fu et D Wang, 2011: À propos de l'évolution d'El Niño: un point de vue annuel cycle, variabilité interannuelle et état moyen. J. Climate, 24 (24), 6486–6500

Réponses:


70

Un très bon moyen de trouver la périodicité dans une série de données régulière consiste à inspecter son spectre de puissance après avoir supprimé toute tendance générale . (Cela se prête bien au filtrage automatisé lorsque la puissance totale est normalisée à une valeur standard, telle que l'unité.) L'élimination préliminaire de la tendance (et la différenciation facultative pour éliminer la corrélation en série) est essentielle pour éviter les périodes de confusion avec d'autres comportements.

Le spectre de puissance est la transformée de Fourier discrète de la fonction d'autovariance d'une version lissée de manière appropriée de la série d'origine. Si vous considérez la série temporelle comme un échantillonnage d'une forme d'onde physique, vous pouvez estimer la quantité de puissance totale de la vague transportée dans chaque fréquence. Le spectre de puissance (ou périodogramme ) trace la puissance en fonction de la fréquence. Les cycles (c'est-à-dire les modèles répétitifs ou saisonniers) apparaîtront comme de grandes pointes situées à leurs fréquences.

A titre d'exemple, considérons cette série temporelle (simulée) de résidus à partir d'une mesure journalière prise pendant un an (365 valeurs).

série de résidus

0

Voici un autre graphique des mêmes données, dessiné pour nous aider à voir les modèles périodiques possibles.

série de résidus, remplie à 0

Si vous regardez très fort, vous pourrez peut-être discerner un motif bruyant mais répétitif qui se produit 11 à 12 fois. Les longues séquences de valeurs supérieures à zéro et inférieures à zéro suggèrent au moins une autocorrélation positive, montrant que cette série n'est pas complètement aléatoire.

Voici le périodogramme, indiqué pour des fréquences allant jusqu'à 91 (un quart de la longueur totale de la série). Il a été construit avec une fenêtre de Welch et normalisé en fonction de la surface de l'unité (pour tout le périodogramme, pas seulement pour la partie montrée ici).

périodogramme

Le pouvoir ressemble à du "bruit blanc" (petites fluctuations aléatoires) plus deux pics saillants. Ils sont difficiles à manquer, n'est-ce pas? Le plus grand survient à une période de 12 ans et le plus petit à une période de 52 ans. Cette méthode a ainsi détecté un cycle mensuel et un cycle hebdomadaire dans ces données. C'est vraiment tout ce qu'il y a à faire. Pour automatiser la détection des cycles ("saisonnalité"), il suffit de scanner le périodogramme (qui est une liste de valeurs) à la recherche de maxima locaux relativement grands.

Il est temps de révéler comment ces données ont été créées.

Données décomposées en signal plus bruit

Les valeurs sont générées à partir d'une somme de deux ondes sinusoïdales, une de fréquence 12 (d'amplitude au carré 3/4) et une autre de fréquence 52 (d'amplitude au carré 1/4). Ce sont les pics détectés dans le périodogramme. Leur somme est représentée par la courbe noire épaisse. Le bruit normal de variance 2 a ensuite été ajouté, comme indiqué par les barres gris clair s'étendant de la courbe noire aux points rouges. Ce bruit a introduit les bas niveaux de bascule au bas du périodogramme, qui autrement serait juste un zéro 0. Au moins les deux tiers de la variation totale des valeurs sont non périodiques et aléatoires, ce qui est très bruyant: si difficile de distinguer la périodicité simplement en regardant les points. Néanmoins (en partie parce qu'il y a trop de données), trouver les fréquences avec le périodogramme est facile et le résultat est clair.

Des instructions et des conseils judicieux pour le calcul des périodogrammes figurent sur le site de recettes numériques : consultez la section "Estimation du spectre de puissance à l’aide de la FFT". Ra un code pour l'estimation de périodogramme . Ces illustrations ont été créées dans Mathematica 8; le périodogramme a été calculé avec sa fonction "Fourier".


2
L'hypothèse "après suppression de toute tendance globale" est celle du talon d'Achille, car il peut y avoir de nombreuses tendances temporelles, de nombreux changements de niveau ayant tous été exclus de votre exemple. L'idée que les séries d'entrées sont de nature déterministe va de présence d'une structure ARIMA saisonnière et régulière. Les valeurs uniques inhabituelles non traitées fausseront tout schéma d'identification basé sur un périodogramme en raison d'un biais vers le bas des estimations de périodogramme produisant des résultats non significatifs
IrishStat le

@Irish Je pense que votre commentaire peut exagérer quelque peu. Il est extrêmement élémentaire de rechercher et de traiter des "valeurs uniques inhabituelles" (c’est-à-dire des valeurs aberrantes). C’est pourquoi il convient de souligner que certains estimateurs de séries chronologiques peuvent être sensibles aux valeurs aberrantes. "De nature déterministe" déforme les idées de base: personne ne suppose qu'il existe un déterminisme (comme en témoigne l'énorme quantité de bruit dans la simulation). La simulation incorpore un signal périodique défini comme modèle - toujours approximatif dans la réalité - uniquement pour illustrer le lien entre le périodogramme et la saisonnalité. (Suite ...)
whuber

2
Oui, les changements de saisonnalité peuvent masquer le périodogramme (et l'acf, etc.), en particulier les changements de fréquence (peu probable) ou de phase (possible). Les références de mon article fournissent une solution pour y remédier: elles recommandent l’utilisation d’une fenêtre mobile pour l’estimation par périodogramme. Comme vous le préconisez, il existe un art, et il y a clairement des écueils, de sorte que beaucoup d'analyses de séries chronologiques bénéficieront d'un traitement expert. Mais la question se pose de savoir s’il existe «d’autres méthodes de détection de la saisonnalité» et qu’il est indéniable que le périodogramme est une option statistiquement puissante, informatiquement performante et facilement interprétable.
whuber

Dans mon monde, utiliser des sinus / cosinus est un "effet déterministe" un peu comme les indicateurs du mois de l'année. L'ajustement de tout modèle prédéfini limite les valeurs ajustées à un modèle spécifié par l'utilisateur, souvent inférieur à la norme. Les données doivent être "écoutées" pour aider l'analyste / logiciel avancé à discerner efficacement les entrées fixes et stochastiques nb de la série. À mon avis, l'utilisation du périodogramme "survente" la modélisation statistique simple
IrishStat

2
@whuber Répéter la même chose pourrait ne pas être utile. Cependant, il serait peut-être bon aussi de fixer le paragraphe en dessous du périodogramme pour indiquer que les pointes sont localisées à une "fréquence" de 12 à 52 fois par an, et non pas pour une "période de". Corriger l'intrigue de manière à dire «fréquence» au lieu de «période» pourrait également être utile si vous pensez que ce n'est pas trop ennuyeux.
Celelibi

19

Voici un exemple utilisant des données mensuelles sur les demandes de chômage de log d'une ville du New Jersey (de Stata, uniquement parce que c'est ce que j'ai analysé à l'origine). Caractère saisonnier ACF

Les hauteurs des lignes indiquent la corrélation entre une variable et le décalage de lui-même; la zone grise vous permet de déterminer si cette corrélation est significative (cette plage est uniquement un guide et n'est pas le moyen le plus fiable de tester la signification). Si cette corrélation est élevée, il existe des preuves de corrélation en série. Notez les ralentissements qui se produisent autour des périodes 12, 24 et 36. Comme il s’agit de données mensuelles, cela suggère que la corrélation devient plus forte lorsque vous regardez des périodes exactement 1, 2 ou 3 ans auparavant. Ceci est la preuve de la saisonnalité mensuelle.

Vous pouvez tester ces relations de manière statistique en faisant régresser la variable sur les variables nominales indiquant la composante de saisonnalité, ici, les variables nominales mensuelles. Vous pouvez tester la signification conjointe de ces mannequins pour vérifier la saisonnalité.

Cette procédure n'est pas tout à fait correcte, car le test nécessite que les termes d'erreur ne soient pas corrélés en série. Ainsi, avant de tester ces variables nominales de saisonnalité, nous devons supprimer la corrélation en série restante (généralement en incluant les retards de la variable). Il peut y avoir des impulsions, des pauses et tous les autres problèmes de série chronologique que vous devez également corriger pour obtenir les résultats appropriés du test. Vous n'avez pas posé de question à ce sujet, je ne vais donc pas entrer dans les détails (de plus, il y a beaucoup de questions de CV sur ces sujets). (Juste pour nourrir votre curiosité, cette série nécessite les variables nominales du mois, un seul décalage de lui-même et une composante de décalage pour éliminer la corrélation en série.)


4

La saisonnalité peut et change souvent avec le temps, de sorte que les mesures synthétiques peuvent être tout à fait insuffisantes pour détecter une structure. Il faut tester la fugacité dans les coefficients ARIMA et les changements fréquents dans les «variables nominales saisonnières». Par exemple, dans un horizon de 10 ans, il n’ya peut-être pas eu d’effet de juin pour les k premières années mais il a été mis en évidence un effet de juin pour les 10 dernières années. Un simple effet composite de juin pourrait ne pas être significatif car il n'était pas constant dans le temps. De la même manière, une composante ARIMA saisonnière peut également avoir changé. Il faut veiller à inclure les changements au niveau local et / ou les tendances temporelles locales tout en veillant à ce que la variance des erreurs reste constante dans le temps. Il ne faut pas évaluer les transformations telles que GLS / moindres carrés pondérés ni les transformations de puissance telles que les journaux / racines carrées, etc. sur les données d'origine mais sur les erreurs d'un modèle provisoire. Les hypothèses gaussiennes n’ont absolument rien à voir avec les données observées, mais toutes avec les erreurs du modèle. Cela est dû aux fondements des tests statistiques qui utilisent le rapport d'une variable du khi-deux non central à une variable du khi-deux central.

Si vous souhaitez publier des exemples de séries de votre monde, je serais heureux de vous fournir, à vous et à la liste, une analyse approfondie conduisant à la détection de la structure saisonnière.


1

La réponse de Charlie est bonne et c'est par là que je commencerais. Si vous ne souhaitez pas utiliser les graphiques ACF, vous pouvez créer k-1 variables nominales pour les k périodes de temps présentes. Ensuite, vous pouvez voir si les variables nominales sont significatives dans une régression avec les variables nominales (et probablement un terme de tendance).

Si vos données sont trimestrielles: le Q2 factice est égal à 1 s'il s'agit du deuxième trimestre, sinon 0 Q3 factice est égal à 1 s'il s'agit du troisième trimestre, sinon 0 Q4 factice correspond à 1 s'il s'agit du quatrième trimestre, sinon 0 Remarque le trimestre 1 est le cas de base (tous les 3 nuls zéro)

Vous pouvez également consulter la "décomposition en série chronologique" dans Minitab, souvent appelée "décomposition classique". Au final, vous voudrez peut-être utiliser quelque chose de plus moderne, mais c’est un endroit simple pour commencer.


0

J'aimerais prendre connaissance de l'offre d'aide d'un utilisateur d'IrishStat ou de toute autre personne de ma série d'exemples réels. J'essaie de produire un indice saisonnier basé sur les prix à terme du pétrole brut sur les cinq dernières années. J'ai réussi à produire une moyenne simple saisonnière qui peut être consultée ici .

Cependant, j'aimerais reproduire un graphique saisonnier annuel glissant (je suppose que rouler signifie que le début et la fin de l'année ont la même valeur) et que l'échelle est à l'échelle de zéro à 100, comme indiqué sur l'image ci-dessous: entrez la description de l'image ici

Il y a 15 ans de données de niveau de prix quotidien dans le tableur qui peuvent être téléchargées. Un exemple ou une indication sur la manière de réaliser ce qui précède serait grandement apprécié.


-1

Je suis un peu nouveau pour R moi-même, mais ma compréhension de la fonction ACF est que si la ligne verticale passe au-dessus de la ligne pointillée du haut ou au-dessous de la ligne pointillée du bas, il y a une certaine autorégression (y compris la saisonnalité). Essayez de créer un vecteur de sinus


Le montage de sinus / cosinus, etc. peut être utile pour certaines séries chronologiques physiques / électriques, mais vous devez connaître le biais MSB, Biais de spécification de modèle.
IrishStat le

1
L'autorégression n'implique pas la saisonnalité.
Jens
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.