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?
time-series
seasonality
Danial
la source
la source
Réponses:
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).
Voici un autre graphique des mêmes données, dessiné pour nous aider à voir les modèles périodiques possibles.
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).
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.
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".
R
a 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".la source
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).
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.)
la source
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.
la source
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.
la source
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:
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é.
la source
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
la source