Friday, 13 January 2017

Série Exponentielle Mobile Moyenne Irrégulière Temporelle

Étapes du choix d'un modèle de prévision Votre modèle de prévision devrait inclure des caractéristiques qui tiennent compte de toutes les propriétés qualitatives importantes des données: modèles de variation du niveau et de la tendance, effets de l'inflation et de la saisonnalité, corrélations entre les variables, etc. Choisi devrait convenir avec votre intuition sur la façon dont la série est susceptible de se comporter à l'avenir. Lors de l'ajustement d'un modèle de prévision, vous avez quelques-uns des choix suivants: Ces options sont brièvement décrites ci-dessous. Reportez-vous au diagramme de prévision du diagramme de prévision pour une vue illustrée du processus de spécification du modèle et reportez-vous au panneau Spécification du modèle Statgraphics pour voir comment les caractéristiques du modèle sont sélectionnées dans le logiciel. Déflation Si la série montre une croissance inflationniste, alors la déflation aidera à tenir compte du modèle de croissance et à réduire l'hétéroscédasticité dans les résidus. Vous pouvez soit (i) dégonfler les données passées et réfléchir les prévisions à long terme à un taux constant supposé, soit (ii) dégonfler les données passées par un indice de prix tel que l'IPC, puis quotmanuellement réinvestir les prévisions à long terme en utilisant Une prévision de l'indice des prix. L'option (i) est la plus facile. Dans Excel, vous pouvez simplement créer une colonne de formules pour diviser les valeurs d'origine par les facteurs appropriés. Par exemple, si les données sont mensuelles et que vous souhaitez dégonfler à un taux de 5 par 12 mois, vous divisez par un facteur de (1,05) (k12) où k est l'indice de ligne (numéro d'observation). RegressIt et Statgraphics ont des outils intégrés qui le font automatiquement pour vous. Si vous empruntez cette route, il est généralement préférable de fixer le taux d'inflation présumé égal à votre meilleure estimation du taux actuel, en particulier si vous prévoyez une période supérieure à une période à venir. Si, au lieu de cela, vous choisissez l'option (ii), vous devez d'abord enregistrer les prévisions et les limites de confiance dégagées dans votre tableur de données, puis générer et enregistrer une prévision de l'indice de prix et enfin multiplier les colonnes appropriées. (Retour au haut de la page.) Transformation logarithmique Si la série montre une croissance composée et / ou un modèle saisonnier multiplicatif, une transformation logarithmique peut être utile en plus ou en lieu et place de la déflation. L'enregistrement des données n'atténue pas un modèle de croissance inflationniste, mais il le redressera afin qu'il puisse être ajusté par un modèle linéaire (par exemple, un modèle aléatoire ou un modèle ARIMA à croissance constante ou un modèle de lissage linéaire exponentiel). En outre, l'enregistrement convertira les motifs saisonniers multiplicatifs en motifs additifs, de sorte que si vous effectuez un ajustement saisonnier après l'enregistrement, vous devez utiliser le type d'additif. L'exploitation forestière traite l'inflation de façon implicite si vous voulez que l'inflation soit modélisée explicitement - c'est-à-dire. Si vous voulez que le taux d'inflation soit un paramètre visible du modèle ou si vous voulez afficher des parcelles de données dégonflées - alors vous devriez dégonfler plutôt que log. Une autre utilisation importante de la transformation du log est de linéariser les relations entre les variables dans un mode de régression l. Par exemple, si la variable dépendante est une fonction multiplicative plutôt que additive des variables indépendantes, ou si la relation entre les variables dépendantes et indépendantes est linéaire en termes de changements de pourcentage plutôt que de changements absolus, appliquer une transformation de journal à une ou plusieurs variables Peut être approprié, comme dans l'exemple de vente de bière. (Retour au haut de la page.) Ajustement saisonnier Si la série présente un schéma saisonnier fort qu'on croit constant d'une année à l'autre, l'ajustement saisonnier peut être un moyen approprié d'estimer et d'extrapoler le modèle. L'avantage de l'ajustement saisonnier est qu'il modélise explicitement le schéma saisonnier, ce qui vous donne la possibilité d'étudier les indices saisonniers et les données désaisonnalisées. L'inconvénient est qu'il nécessite l'estimation d'un grand nombre de paramètres supplémentaires (en particulier pour les données mensuelles), et il ne fournit aucune raison théorique pour le calcul d'intervalles de confiance quotcorrectquot. La validation hors échantillon est particulièrement importante pour réduire le risque d'ajustement excessif des données passées par le biais d'un ajustement saisonnier. Si les données sont fortement saisonnières, mais que vous ne choisissez pas l'ajustement saisonnier, les solutions de rechange sont soit (i) utiliser un modèle ARIMA saisonnier. Qui prévoit implicitement le schéma saisonnier en utilisant des décalages et des différences saisonnières, ou (ii) utilise le modèle de lissage exponentiel saisonnier de Winters, qui estime les indices saisonniers variables dans le temps. (Retourner au haut de la page.) Quot Variables indépendantes Si d'autres séries chronologiques vous semblent avoir un pouvoir explicatif en ce qui concerne votre série d'intérêts (par exemple, des indicateurs économiques ou des variables stratégiques comme le prix, la publicité, les promotions, etc.) Peut souhaiter considérer la régression comme type de modèle. Que vous optiez ou non par la régression, vous devez toujours considérer les possibilités mentionnées ci-dessus pour transformer vos variables (déflation, log, ajustement saisonnier - et peut-être aussi différenciation) afin d'exploiter la dimension temporelle et / ou de linéariser les relations. Même si vous ne choisissez pas de régression à ce stade, vous pouvez envisager d'ajouter des régresseurs ultérieurement à un modèle de séries chronologiques (par exemple, un modèle ARIMA) si les résidus se révèlent avoir des corrélations croisées significatives avec d'autres variables. (Retour au haut de la page.) Lissage, moyenne ou randonnée aléatoire Si vous avez choisi de modifier les données saisonnièrement, ou si les données ne sont pas saisonnières, vous pouvez utiliser un modèle de moyennage ou de lissage Ajustement du modèle non saisonnier qui reste dans les données à ce stade. Une simple moyenne mobile ou un simple modèle de lissage exponentiel ne fait que calculer une moyenne locale de données à la fin de la série, en supposant qu'il s'agit de la meilleure estimation de la valeur moyenne actuelle autour de laquelle les données fluctuent. (Ces modèles supposent que la moyenne de la série varie lentement et aléatoirement sans tendances persistantes.) Le lissage exponentiel simple est normalement préféré à une moyenne mobile simple, parce que sa moyenne exponentiellement pondérée fait un travail plus raisonnable d'actualisation des données plus anciennes, parce que son Le paramètre de lissage (alpha) est continu et peut être facilement optimisé, et parce qu'il a une base théorique sous-jacente pour le calcul des intervalles de confiance. Si le lissage ou la moyenne ne semble pas être utile - c'est-à-dire. Si le meilleur prédicteur de la valeur suivante de la série temporelle est simplement sa valeur précédente - alors un modèle de marche aléatoire est indiqué. C'est le cas, par exemple, si le nombre optimal de termes dans la moyenne mobile simple se révèle égal à 1, ou si la valeur optimale de l'alpha dans le lissage exponentiel simple s'élève à 0,9999. Le lissage linéaire linéaire de Browns peut être utilisé pour ajuster une série avec des tendances linéaires lentement variables dans le temps, mais soyez prudent quant à l'extrapolation de ces tendances très loin dans l'avenir. (Les intervalles de confiance qui s'élargissent rapidement pour ce modèle témoignent de son incertitude quant au futur lointain.) Le lissage linéaire de Holts permet également d'estimer les tendances variables dans le temps, mais utilise des paramètres distincts pour lisser le niveau et la tendance, ce qui correspond habituellement aux données Que Brown8217s modèle. Le lissage exponentiel udratique Q tente d'estimer les tendances quadratiques variables dans le temps et ne devrait pratiquement jamais être utilisé. (Il s'agit d'un modèle ARIMA avec trois ordres de différenciation non saisonnière). Le lissage exponentiel linéaire avec une tendance amortie (c'est-à-dire une tendance qui s'atténue à des horizons lointains) est souvent recommandé dans les situations où l'avenir est très incertain. Les différents modèles de lissage exponentiel sont des cas spéciaux de modèles ARIMA (décrits ci-dessous) et peuvent être équipés du logiciel ARIMA. En particulier, le modèle de lissage exponentiel simple est un modèle ARIMA (0,1,1), le modèle de lissage linéaire Holt8217s est un modèle ARIMA (0,2,2), et le modèle de tendance amorti est un ARIMA (1,1,2 ) Modèle. Un bon résumé des équations des différents modèles exponentiels de lissage peut être trouvé sur cette page sur le site Web SAS. Les modèles de ligne de tendance linéaire, quadratique ou exponentielle sont d'autres options pour extrapoler une série désaisonnalisée, mais ils surpassent rarement la marche aléatoire, le lissage ou ARIMA sur les données métier. (Retour au haut de la page.) Winters Seasonal Exponential Smoothing Winters Le lissage saisonnier est une extension du lissage exponentiel qui permet d'estimer simultanément les facteurs temporels, de tendance et saisonniers en utilisant des équations récursives. Les facteurs saisonniers de Winters peuvent être multiplicatifs ou additifs: normalement, vous devez choisir l'option multiplicative à moins que vous ayez enregistré les données. Bien que le modèle Winters soit intelligent et raisonnablement intuitif, il peut être difficile à appliquer en pratique: il a trois paramètres de lissage - alpha, bêta et gamma - pour lisser séparément les facteurs de niveau, de tendance et saisonniers qui doivent être estimés Simultanément. La détermination des valeurs de départ pour les indices saisonniers peut être effectuée en appliquant la méthode de l'ajustement saisonnier par rapport à la moyenne mobile à une partie ou à la totalité de la série et / ou à la rétroformation. L'algorithme d'estimation que Statgraphics utilise pour ces paramètres échoue parfois à converger et / ou donne des valeurs qui donnent des prévisions bizarres et des intervalles de confiance, je recommanderais donc prudence lors de l'utilisation de ce modèle. (Retour au haut de la page.) ARIMA Si vous ne choisissez pas l'ajustement saisonnier (ou si les données sont non saisonnières), vous pouvez utiliser le modèle ARIMA. Les modèles ARIMA sont une classe très générale de modèles qui comprend la marche aléatoire, la tendance aléatoire, le lissage exponentiel et les modèles autorégressifs comme cas particuliers. La sagesse conventionnelle est qu'une série est un bon candidat pour un modèle ARIMA si (i) elle peut être stationnaire par une combinaison de différenciation et d'autres transformations mathématiques telles que l'exploitation forestière, et (ii) vous avez une quantité importante de données à travailler avec : Au moins 4 saisons complètes dans le cas des données saisonnières. (Si la série ne peut pas être correctement stationnée par différence - par exemple si elle est très irrégulière ou semble changer qualitativement son comportement au fil du temps - ou si vous avez moins de 4 saisons de données, alors vous pourriez être mieux avec un modèle Qui utilise l'ajustement saisonnier et une sorte de moyenne simple ou de lissage.) ARIMA modèles ont une convention de dénomination spéciale introduite par Box et Jenkins. Un modèle ARIMA non saisonnier est classé comme un modèle ARIMA (p, d, q), où d est le nombre de différences non saisonnières, p est le nombre de termes autorégressifs (retards des séries différenciées), et q est le nombre de mouvements - (Retards des erreurs de prévision) dans l'équation de prédiction. Un modèle ARIMA saisonnier est classé comme un ARIMA (p, d, q) x (P, D, Q). Où D, P et Q sont respectivement le nombre de différences saisonnières, les termes autorégressifs saisonniers (décalages des séries différenciées aux multiples de la période saisonnière) et les moyennes saisonnières moyennes (décalages des erreurs de prévision à des multiples de la saisonnalité période). La première étape dans l'ajustement d'un modèle ARIMA est de déterminer l'ordre approprié de différenciation nécessaire pour stationner la série et supprimer les caractéristiques brutes de la saisonnalité. Cela équivaut à déterminer quel modèle de randonnée aléatoire ou de tendance aléatoire constitue le meilleur point de départ. N'essayez pas d'utiliser plus de 2 ordres de différenciation (non saisonniers et saisonniers) et n'utilisez pas plus d'une différence saisonnière. La deuxième étape est de déterminer s'il faut inclure un terme constant dans le modèle: habituellement, vous incluez un terme constant si l'ordre total de différenciation est 1 ou moins, sinon vous n'avez pas. Dans un modèle avec un ordre de différenciation, le terme constant représente l'évolution moyenne des prévisions. Dans un modèle à deux ordres de différenciation, la tendance des prévisions est déterminée par la tendance locale observée à la fin de la série chronologique et le terme constant représente la tendance à la tendance, c'est-à-dire la courbure de la tendance à long terme, Terme. Normalement, il est dangereux d'extrapoler les tendances dans les tendances, de sorte que vous supprimez le terme contant dans ce cas. La troisième étape consiste à choisir le nombre de paramètres autorégressifs et mobiles (p, d, q, P, D, Q) nécessaires pour éliminer toute autocorrélation qui reste dans les résidus du modèle naïf (c'est-à-dire toute corrélation qui reste après Simple différence). Ces nombres déterminent le nombre de décalages des séries différenciées et / ou les retards des erreurs de prévision qui sont inclus dans l'équation de prévision. S'il n'y a pas d'autocorrélation significative dans les résidus à ce moment, alors STOP, vous avez terminé: le meilleur modèle est un modèle naïf S'il y a une autocorrélation significative aux retards 1 ou 2, vous devez essayer q1 si: I) il existe une différence non saisonnière dans le modèle, (ii) l'autocorrélation du retard 1 est négative. Ou (iii) le graphique d'autocorrélation résiduelle est plus propre (moins de pics isolés) que le graphique d'autocorrélation partielle résiduelle. S'il n'y a pas de différence non saisonnière dans le modèle et / ou si l'autocorrélation du retard 1 est positive et / ou que l'intrigue d'autocorrélation partielle résiduelle semble plus propre, essayez p1. (Parfois, ces règles pour choisir entre p1 et q1 sont en conflit les uns avec les autres, auquel cas il ne fait probablement pas beaucoup de différence celle que vous utilisez. Trouvez les deux et comparez.) S'il ya autocorrélation au retard 2 qui n'est pas supprimé en définissant p1 Ou q1, vous pouvez alors essayer p2 ou q2, ou parfois p1 et q1. Plus rarement, vous pouvez rencontrer des situations dans lesquelles p2 ou 3 et q1, ou vice versa, donne les meilleurs résultats. Il est fortement recommandé de ne pas utiliser pgt1 et qgt1 dans le même modèle. En règle générale, lors de l'ajustement des modèles ARIMA, vous devriez éviter d'augmenter la complexité du modèle afin d'obtenir de minuscules améliorations supplémentaires dans les stats d'erreur ou l'apparence des tracés ACF et PACF. De plus, dans un modèle avec pgt1 et qgt1, il existe une bonne possibilité de redondance et de non-unicité entre les côtés AR et MA du modèle, comme expliqué dans les notes sur la structure mathématique des modèles ARIMA. Il est habituellement préférable de procéder d'une manière progressive pas à pas plutôt que vers l'arrière en mode pas à pas en peaufinant les spécifications du modèle: commencer avec des modèles plus simples et ajouter seulement plus de termes si il ya un besoin clair. Les mêmes règles s'appliquent au nombre de termes saisonniers autorégressifs (P) et au nombre de termes saisonniers mobiles (Q) par rapport à l'autocorrélation à la période saisonnière (par exemple, laps de temps 12 pour les données mensuelles). Essayez Q1 s'il ya déjà une différence saisonnière dans le modèle et / ou si l'autocorrélation saisonnière est négative et si l'autocorrélation résiduelle semble plus propre dans le voisinage du décalage saisonnier, essayez P1. (S'il est logique pour la série d'afficher une forte saisonnalité, alors vous devez utiliser une différence saisonnière, sinon le schéma saisonnier disparaîtra en faisant des prévisions à long terme.) Occasionnellement, vous pouvez essayer P2 et Q0 ou vice-vase, Ou PQ1. Cependant, il est fortement recommandé que PQ ne soit jamais supérieur à 2. Les modèles saisonniers ont rarement la même régularité parfaite sur un nombre suffisant de saisons qui permettraient d'identifier et d'estimer de façon fiable de nombreux paramètres. En outre, l'algorithme de backforecasting qui est utilisé dans l'estimation des paramètres est susceptible de produire des résultats peu fiables (voire fou) lorsque le nombre de saisons de données n'est pas significativement plus grand que PDQ. Je recommande pas moins de PDQ2 plein saisons, et plus est mieux. Encore une fois, lorsque vous ajustez des modèles ARIMA, vous devriez éviter de sur-ajuster les données, même si cela peut être très amusant une fois que vous avez pris le relais. Cas particuliers importants: Comme indiqué précédemment, un modèle ARIMA (0,1,1) sans constante est identique à un simple modèle de lissage exponentiel, et il suppose un niveau flottant (c'est-à-dire une réversion moyenne) mais avec une tendance nulle à long terme. Un modèle ARIMA (0,1,1) avec constante est un modèle de lissage exponentiel simple avec un terme de tendance linéaire non nul inclus. Un modèle ARIMA (0,2,1) ou (0,2,2) sans constante est un modèle de lissage exponentiel linéaire qui permet une variation temporelle. Un modèle ARIMA (1,1,2) sans constante est un modèle de lissage exponentiel linéaire à tendance amortie, c'est-à-dire une tendance qui finit par s'atténuer dans les prévisions à plus long terme. Les modèles saisonniers ARIMA les plus courants sont le modèle ARIMA (0,1,1) x (0,1,1) sans constante et le modèle ARIMA (1,0,1) x (0,1,1) avec constante. Le premier de ces modèles applique fondamentalement le lissage exponentiel aux composantes non saisonnières et saisonnières du modèle dans les données tout en tenant compte d'une tendance variable dans le temps, et le dernier modèle est quelque peu similaire, mais assume une tendance linéaire constante et donc un peu plus long - la prévisibilité à long terme. Vous devriez toujours inclure ces deux modèles parmi votre gamme de suspects lors de l'ajustement des données avec des modèles saisonniers constants. L'un d'entre eux (peut-être avec une variation mineure telle p ou q croissante par 1 et / ou P1 ainsi que Q1) est souvent le meilleur. (Retour au début de la page.) Utilisation de R pour l'analyse des séries temporelles Analyse des séries chronologiques Cette brochure vous explique comment utiliser le logiciel de statistiques R pour effectuer des analyses simples qui sont communes à l'analyse des données de séries chronologiques. Cette brochure suppose que le lecteur a quelques connaissances de base sur l'analyse des séries temporelles et que le but principal de ce livret n'est pas d'expliquer l'analyse des séries temporelles mais plutôt d'expliquer comment effectuer ces analyses à l'aide de R. Si vous êtes nouveau dans la série chronologique Analyse, et que vous souhaitez en savoir plus sur les concepts présentés ici, je recommande vivement le livre Open University 8220Time series8221 (code produit M24902), disponible auprès de l'Open University Shop. Dans cette brochure, j'utiliserai des ensembles de données de séries temporelles qui ont été gentiment mis à disposition par Rob Hyndman dans sa bibliothèque de données de séries chronologiques à robjhyndmanTSDL. Si vous aimez cette brochure, vous pouvez également consulter ma brochure sur l'utilisation de R pour les statistiques biomédicales, un-little-book-of-r-for-biomedical-statistics. readthedocs. org. Et ma brochure sur l'utilisation de R pour l'analyse multivariée, little-book-of-r-for-multivariate-analysis. readthedocs. org. Lecture des données de séries chronologiques La première chose que vous voudrez faire pour analyser vos données de séries chronologiques sera de la lire dans R et de tracer la série temporelle. Vous pouvez lire les données dans R à l'aide de la fonction scan (), qui suppose que vos données pour des points de temps successifs se trouvent dans un fichier texte simple avec une colonne. Par exemple, le fichier robjhyndmantsdldatamisckings. dat contient des données sur l'âge de la mort des rois successifs d'Angleterre, à commencer par Guillaume le Conquérant (source originale: Hipel et Mcleod, 1994). L'ensemble de données ressemble à ceci: Seules les premières lignes du fichier ont été affichées. Les trois premières lignes contiennent des commentaires sur les données et nous voulons les ignorer lorsque nous lisons les données dans R. Nous pouvons utiliser cela en utilisant le paramètre 8220skip8221 de la fonction scan (), qui spécifie combien de lignes en haut de Le fichier à ignorer. Pour lire le fichier dans R, en ignorant les trois premières lignes, nous tapons: Dans ce cas, l'âge de la mort de 42 rois successifs de l'Angleterre a été lue dans la variable 8216kings8217. Une fois que vous avez lu les données de la série temporelle dans R, l'étape suivante consiste à stocker les données dans un objet de série temporelle dans R, de sorte que vous pouvez utiliser les nombreuses fonctions de R8217s pour analyser des données de séries temporelles. Pour stocker les données dans un objet de série temporelle, nous utilisons la fonction ts () dans R. Par exemple, pour stocker les données dans la variable 8216kings8217 comme un objet série temporelle en R, nous tapons: Parfois, Ont été recueillis à des intervalles réguliers inférieurs à un an, par exemple mensuels ou trimestriels. Dans ce cas, vous pouvez spécifier le nombre de fois que les données ont été collectées par an en utilisant le paramètre 8216frequency8217 dans la fonction ts (). Pour les données de séries temporelles mensuelles, vous définissez la fréquence12, alors que pour les données de séries chronologiques trimestrielles, vous réglez la fréquence4. Vous pouvez également spécifier la première année où les données ont été collectées et le premier intervalle de cette année en utilisant le paramètre 8216start8217 dans la fonction ts (). Par exemple, si le premier point de données correspond au deuxième trimestre de 1986, vous devez définir startc (1986,2). Un exemple est un ensemble de données sur le nombre de naissances par mois dans la ville de New York, de janvier 1946 à décembre 1959 (initialement recueillies par Newton). Ces données sont disponibles dans le fichier robjhyndmantsdldatadatanybirths. dat Nous pouvons lire les données dans R et les stocker en tant qu'objet de séries chronologiques en tapant: De même, le fichier robjhyndmantsdldatadatafancy. dat contient des ventes mensuelles pour une boutique de souvenirs dans une station balnéaire de Queensland, Australie, de janvier 1987 à décembre 1993 (données originales de Wheelwright et Hyndman, 1998). Nous pouvons lire les données dans R en tapant: Plotting Time Series Une fois que vous avez lu une série chronologique dans R, l'étape suivante consiste généralement à faire un tracé des données de séries chronologiques, ce que vous pouvez faire avec la fonction plot. ts () Dans R. Par exemple, pour tracer la série chronologique de l'âge de la mort de 42 rois successifs d'Angleterre, nous tapons: On peut voir à partir du tracé temporel que cette série temporelle pourrait probablement être décrite en utilisant un modèle additif, puisque les fluctuations aléatoires Dans les données sont à peu près constante en taille dans le temps. De même, pour tracer la série chronologique du nombre de naissances par mois à New York, nous dactylographions: Nous pouvons voir à partir de cette série chronologique qu'il semble y avoir une variation saisonnière du nombre de naissances par mois: il ya un pic tous les étés , Et un abreuvoir chaque hiver. Une fois de plus, il semble que cette série temporelle pourrait probablement être décrite en utilisant un modèle additif, car les fluctuations saisonnières sont à peu près constantes dans la taille au fil du temps et ne semblent pas dépendre du niveau de la série temporelle et les fluctuations aléatoires semblent également être À peu près constante dans le temps. De même, pour tracer la série chronologique des ventes mensuelles pour le magasin de souvenirs dans une station balnéaire du Queensland, en Australie, nous dactylographions: Dans ce cas, il semble qu'un modèle additif ne convient pas pour décrire cette série chronologique, puisque la taille Des fluctuations saisonnières et des fluctuations aléatoires semblent augmenter avec le niveau de la série chronologique. Ainsi, nous pourrions avoir besoin de transformer les séries chronologiques afin d'obtenir une série temporelle transformée qui peut être décrite en utilisant un modèle additif. Par exemple, nous pouvons transformer la série chronologique en calculant le logarithme naturel des données originales: Ici, nous pouvons voir que la taille des fluctuations saisonnières et des fluctuations aléatoires dans la série temporelle log-transformée semblent être à peu près constantes dans le temps et ne Ne dépendent pas du niveau de la série chronologique. Ainsi, la série temporelle log-transformée peut probablement être décrite en utilisant un modèle additif. Décomposer les séries temporelles La décomposition d'une série chronologique consiste à la séparer en composantes constituantes, qui sont habituellement une composante de tendance et une composante irrégulière, et s'il s'agit d'une série temporelle saisonnière, une composante saisonnière. Décomposition des données non saisonnières Une série chronologique non saisonnière se compose d'une composante de tendance et d'une composante irrégulière. La décomposition de la série chronologique implique d'essayer de séparer les séries chronologiques de ces composantes, c'est-à-dire d'estimer la composante de la tendance et la composante irrégulière. Pour estimer la composante de tendance d'une série temporelle non saisonnière qui peut être décrite à l'aide d'un modèle additif, il est courant d'utiliser une méthode de lissage, comme le calcul de la moyenne mobile simple des séries chronologiques. La fonction SMA () du paquet 8220TTR8221 R peut être utilisée pour lisser les données de séries temporelles en utilisant une moyenne mobile simple. Pour utiliser cette fonction, nous devons d'abord installer le paquet 8220TTR8221 R (pour savoir comment installer un paquet R, voir Comment installer un paquet R). Une fois que vous avez installé le paquet 8220TTR8221 R, vous pouvez charger le paquet 8220TTR8221 R en tapant: Vous pouvez ensuite utiliser la fonction 8220SMA () 8221 pour lisser les données de séries chronologiques. Pour utiliser la fonction SMA (), vous devez spécifier l'ordre (span) de la moyenne mobile simple, en utilisant le paramètre 8220n8221. Par exemple, pour calculer une moyenne mobile simple de l'ordre 5, on place n5 dans la fonction SMA (). Par exemple, comme nous l'avons vu ci-dessus, la série chronologique de l'âge de décès de 42 rois successifs d'Angleterre est non saisonnière et peut probablement être décrite à l'aide d'un modèle additif puisque les fluctuations aléatoires des données sont à peu près constantes en taille Temps: Ainsi, nous pouvons essayer d'estimer la composante de tendance de cette série de temps en lissant en utilisant une moyenne mobile simple. Pour lisser la série chronologique à l'aide d'une moyenne mobile simple de l'ordre 3, et tracer les données de la série chronologique lissée, nous tapons: Il semble toujours y avoir beaucoup de fluctuations aléatoires dans la série chronologique lissée en utilisant une moyenne mobile simple d'ordre 3. Ainsi, pour estimer la composante de la tendance avec plus de précision, nous pourrions vouloir essayer de lisser les données avec une moyenne mobile simple d'un ordre supérieur. Cela prend un peu d'essai et d'erreur, pour trouver la bonne quantité de lissage. Par exemple, nous pouvons essayer d'utiliser une moyenne mobile simple de l'ordre 8: Les données lissées avec une moyenne mobile simple d'ordre 8 donnent une image plus claire de la composante de la tendance et nous pouvons voir que l'âge de la mort des rois anglais semble Ont diminué d'environ 55 ans à environ 38 ans pendant le règne des 20 premiers rois, puis augmenté après cela à environ 73 ans à la fin du règne du 40e roi dans la série chronologique. Décomposition des données saisonnières Une série temporelle saisonnière comprend une composante tendancielle, une composante saisonnière et une composante irrégulière. La décomposition de la série chronologique consiste à séparer les séries temporelles en ces trois composantes, c'est-à-dire à estimer ces trois composantes. Pour estimer la composante de tendance et la composante saisonnière d'une série temporelle saisonnière qui peut être décrite à l'aide d'un modèle additif, nous pouvons utiliser la fonction 8220decompose () 8221 dans R. Cette fonction estime les composantes tendances, saisonnières et irrégulières d'une série temporelle qui Peut être décrite en utilisant un modèle additif. La fonction 8220decompose () 8221 renvoie un objet de liste comme résultat, où les estimations de la composante saisonnière, de la composante de tendance et de la composante irrégulière sont stockées dans des éléments nommés de cette liste, appelés respectivement 8220seasonal8221, 8220trend8221 et 8220random8221. Par exemple, comme nous l'avons vu plus haut, la série chronologique du nombre de naissances par mois dans la ville de New York est saisonnière avec un pic chaque été et chaque hiver et peut probablement être décrite en utilisant un modèle additif puisque les fluctuations saisonnières et aléatoires semblent Les valeurs estimées des composantes saisonnières, tendancielles et irrégulières sont maintenant stockées dans des variables de naissances, de séries, de séries de naissances, de tendances de la natalité et des séries de naissances, selon l'âge. Par exemple, nous pouvons imprimer les valeurs estimées de la composante saisonnière en tapant: Les facteurs saisonniers estimés sont donnés pour les mois de janvier à décembre et sont les mêmes pour chaque année. Le plus important facteur saisonnier est celui de juillet (environ 1,46), et le plus bas pour février (environ -2,08), ce qui indique qu'il semble y avoir un pic de naissances en juillet et un creux de naissances en février de chaque année. On peut tracer la tendance estimée, les composantes saisonnières et les composantes irrégulières de la série chronologique en utilisant la fonction 8220plot () 8221, par exemple: La courbe ci-dessus montre la série chronologique originale (en haut), la composante de tendance estimée La composante saisonnière estimée (troisième du haut) et la composante irrégulière estimée (en bas). On constate que la composante tendancielle estimée montre une légère diminution, passant d'environ 24 en 1947 à environ 22 en 1948, suivie d'une augmentation régulière d'environ 27 en 1959. Ajustement saisonnier Si vous avez une série temporelle saisonnière qui peut être décrite en utilisant Un modèle additif, vous pouvez ajuster les séries chronologiques en fonction de l'estimation de la composante saisonnière et soustraire la composante saisonnière estimée de la série chronologique initiale. Nous pouvons le faire en utilisant l'estimation de la composante saisonnière calculée par la fonction 8220decompose () 8221. Par exemple, pour ajuster les séries temporelles du nombre de naissances par mois à New York, nous pouvons estimer la composante saisonnière en utilisant 8220decompose () 8221, puis soustraire la composante saisonnière de la série chronologique originale: Désaisonnalisées, en utilisant la fonction 8220plot () 8221, en tapant: Vous pouvez constater que la variation saisonnière a été supprimée de la série chronologique corrigée des variations saisonnières. La série chronologique corrigée des variations saisonnières ne contient plus que la composante tendance et une composante irrégulière. Prévisions utilisant le lissage exponentiel Le lissage exponentiel peut être utilisé pour établir des prévisions à court terme pour les données de séries chronologiques. Lissage exponentiel simple Si vous avez une série temporelle qui peut être décrite en utilisant un modèle additif avec un niveau constant et aucune saisonnalité, vous pouvez utiliser le lissage exponentiel simple pour faire des prévisions à court terme. La méthode de lissage exponentiel simple permet d'estimer le niveau au moment du temps courant. Le lissage est contrôlé par le paramètre alpha pour l'estimation du niveau à l'instant actuel. La valeur de alpha est comprise entre 0 et 1. Les valeurs d'alpha qui sont proches de 0 signifient que peu de poids est placé sur les observations les plus récentes lors des prévisions de valeurs futures. Par exemple, le fichier robjhyndmantsdldatahurstprecip1.dat contient les précipitations annuelles totales en pouces pour Londres, à partir de 1813-1912 (données originales de Hipel et McLeod, 1994). Nous pouvons lire les données dans R et le tracer en tapant: Vous pouvez voir à partir du graphique qu'il ya un niveau à peu près constant (la moyenne reste constante à environ 25 pouces). Les fluctuations aléatoires des séries temporelles semblent être à peu près constantes dans le temps, il est donc probablement approprié de décrire les données en utilisant un modèle additif. Ainsi, nous pouvons faire des prévisions en utilisant un lissage exponentiel simple. Pour faire des prévisions utilisant le lissage exponentiel simple dans R, nous pouvons adapter un modèle prédictif simple de prédiction de lissage en utilisant la fonction 8220HoltWinters () 8221 dans R. Pour utiliser HoltWinters () pour le lissage exponentiel simple, nous devons définir les paramètres betaFALSE et gammaFALSE dans le HoltWinters () (les paramètres bêta et gamma sont utilisés pour le lissage exponentiel Holt8217s ou le lissage exponentiel Holt-Winters, comme décrit ci-dessous). La fonction HoltWinters () renvoie une variable de liste, qui contient plusieurs éléments nommés. Par exemple, pour utiliser le lissage exponentiel simple pour faire des prévisions pour la série chronologique des précipitations annuelles à Londres, nous tapons: La sortie de HoltWinters () nous indique que la valeur estimée du paramètre alpha est d'environ 0,024. This is very close to zero, telling us that the forecasts are based on both recent and less recent observations (although somewhat more weight is placed on recent observations). By default, HoltWinters() just makes forecasts for the same time period covered by our original time series. In this case, our original time series included rainfall for London from 1813-1912, so the forecasts are also for 1813-1912. In the example above, we have stored the output of the HoltWinters() function in the list variable 8220rainseriesforecasts8221. The forecasts made by HoltWinters() are stored in a named element of this list variable called 8220fitted8221, so we can get their values by typing: We can plot the original time series against the forecasts by typing: The plot shows the original time series in black, and the forecasts as a red line. The time series of forecasts is much smoother than the time series of the original data here. As a measure of the accuracy of the forecasts, we can calculate the sum of squared errors for the in-sample forecast errors, that is, the forecast errors for the time period covered by our original time series. The sum-of-squared-errors is stored in a named element of the list variable 8220rainseriesforecasts8221 called 8220SSE8221, so we can get its value by typing: That is, here the sum-of-squared-errors is 1828.855. It is common in simple exponential smoothing to use the first value in the time series as the initial value for the level. For example, in the time series for rainfall in London, the first value is 23.56 (inches) for rainfall in 1813. You can specify the initial value for the level in the HoltWinters() function by using the 8220l. start8221 parameter. For example, to make forecasts with the initial value of the level set to 23.56, we type: As explained above, by default HoltWinters() just makes forecasts for the time period covered by the original data, which is 1813-1912 for the rainfall time series. We can make forecasts for further time points by using the 8220forecast. HoltWinters()8221 function in the R 8220forecast8221 package. To use the forecast. HoltWinters() function, we first need to install the 8220forecast8221 R package (for instructions on how to install an R package, see How to install an R package ). Once you have installed the 8220forecast8221 R package, you can load the 8220forecast8221 R package by typing: When using the forecast. HoltWinters() function, as its first argument (input), you pass it the predictive model that you have already fitted using the HoltWinters() function. For example, in the case of the rainfall time series, we stored the predictive model made using HoltWinters() in the variable 8220rainseriesforecasts8221. You specify how many further time points you want to make forecasts for by using the 8220h8221 parameter in forecast. HoltWinters(). For example, to make a forecast of rainfall for the years 1814-1820 (8 more years) using forecast. HoltWinters(), we type: The forecast. HoltWinters() function gives you the forecast for a year, a 80 prediction interval for the forecast, and a 95 prediction interval for the forecast. For example, the forecasted rainfall for 1920 is about 24.68 inches, with a 95 prediction interval of (16.24, 33.11). To plot the predictions made by forecast. HoltWinters(), we can use the 8220plot. forecast()8221 function: Here the forecasts for 1913-1920 are plotted as a blue line, the 80 prediction interval as an orange shaded area, and the 95 prediction interval as a yellow shaded area. The 8216forecast errors8217 are calculated as the observed values minus predicted values, for each time point. We can only calculate the forecast errors for the time period covered by our original time series, which is 1813-1912 for the rainfall data. As mentioned above, one measure of the accuracy of the predictive model is the sum-of-squared-errors (SSE) for the in-sample forecast errors. The in-sample forecast errors are stored in the named element 8220residuals8221 of the list variable returned by forecast. HoltWinters(). If the predictive model cannot be improved upon, there should be no correlations between forecast errors for successive predictions. In other words, if there are correlations between forecast errors for successive predictions, it is likely that the simple exponential smoothing forecasts could be improved upon by another forecasting technique. To figure out whether this is the case, we can obtain a correlogram of the in-sample forecast errors for lags 1-20. We can calculate a correlogram of the forecast errors using the 8220acf()8221 function in R. To specify the maximum lag that we want to look at, we use the 8220lag. max8221 parameter in acf(). For example, to calculate a correlogram of the in-sample forecast errors for the London rainfall data for lags 1-20, we type: You can see from the sample correlogram that the autocorrelation at lag 3 is just touching the significance bounds. To test whether there is significant evidence for non-zero correlations at lags 1-20, we can carry out a Ljung-Box test. This can be done in R using the 8220Box. test()8221, function. The maximum lag that we want to look at is specified using the 8220lag8221 parameter in the Box. test() function. For example, to test whether there are non-zero autocorrelations at lags 1-20, for the in-sample forecast errors for London rainfall data, we type: Here the Ljung-Box test statistic is 17.4, and the p-value is 0.6, so there is little evidence of non-zero autocorrelations in the in-sample forecast errors at lags 1-20. To be sure that the predictive model cannot be improved upon, it is also a good idea to check whether the forecast errors are normally distributed with mean zero and constant variance. To check whether the forecast errors have constant variance, we can make a time plot of the in-sample forecast errors: The plot shows that the in-sample forecast errors seem to have roughly constant variance over time, although the size of the fluctuations in the start of the time series (1820-1830) may be slightly less than that at later dates (eg. 1840-1850). To check whether the forecast errors are normally distributed with mean zero, we can plot a histogram of the forecast errors, with an overlaid normal curve that has mean zero and the same standard deviation as the distribution of forecast errors. To do this, we can define an R function 8220plotForecastErrors()8221, below: You will have to copy the function above into R in order to use it. You can then use plotForecastErrors() to plot a histogram (with overlaid normal curve) of the forecast errors for the rainfall predictions: The plot shows that the distribution of forecast errors is roughly centred on zero, and is more or less normally distributed, although it seems to be slightly skewed to the right compared to a normal curve. However, the right skew is relatively small, and so it is plausible that the forecast errors are normally distributed with mean zero. The Ljung-Box test showed that there is little evidence of non-zero autocorrelations in the in-sample forecast errors, and the distribution of forecast errors seems to be normally distributed with mean zero. This suggests that the simple exponential smoothing method provides an adequate predictive model for London rainfall, which probably cannot be improved upon. Furthermore, the assumptions that the 80 and 95 predictions intervals were based upon (that there are no autocorrelations in the forecast errors, and the forecast errors are normally distributed with mean zero and constant variance) are probably valid. Holt8217s Exponential Smoothing If you have a time series that can be described using an additive model with increasing or decreasing trend and no seasonality, you can use Holt8217s exponential smoothing to make short-term forecasts. Holt8217s exponential smoothing estimates the level and slope at the current time point. Smoothing is controlled by two parameters, alpha, for the estimate of the level at the current time point, and beta for the estimate of the slope b of the trend component at the current time point. As with simple exponential smoothing, the paramters alpha and beta have values between 0 and 1, and values that are close to 0 mean that little weight is placed on the most recent observations when making forecasts of future values. An example of a time series that can probably be described using an additive model with a trend and no seasonality is the time series of the annual diameter of women8217s skirts at the hem, from 1866 to 1911. The data is available in the file robjhyndmantsdldatarobertsskirts. dat (original data from Hipel and McLeod, 1994). We can read in and plot the data in R by typing: We can see from the plot that there was an increase in hem diameter from about 600 in 1866 to about 1050 in 1880, and that afterwards the hem diameter decreased to about 520 in 1911. To make forecasts, we can fit a predictive model using the HoltWinters() function in R. To use HoltWinters() for Holt8217s exponential smoothing, we need to set the parameter gammaFALSE (the gamma parameter is used for Holt-Winters exponential smoothing, as described below). For example, to use Holt8217s exponential smoothing to fit a predictive model for skirt hem diameter, we type: The estimated value of alpha is 0.84, and of beta is 1.00. These are both high, telling us that both the estimate of the current value of the level, and of the slope b of the trend component, are based mostly upon very recent observations in the time series. This makes good intuitive sense, since the level and the slope of the time series both change quite a lot over time. The value of the sum-of-squared-errors for the in-sample forecast errors is 16954. We can plot the original time series as a black line, with the forecasted values as a red line on top of that, by typing: We can see from the picture that the in-sample forecasts agree pretty well with the observed values, although they tend to lag behind the observed values a little bit. If you wish, you can specify the initial values of the level and the slope b of the trend component by using the 8220l. start8221 and 8220b. start8221 arguments for the HoltWinters() function. It is common to set the initial value of the level to the first value in the time series (608 for the skirts data), and the initial value of the slope to the second value minus the first value (9 for the skirts data). For example, to fit a predictive model to the skirt hem data using Holt8217s exponential smoothing, with initial values of 608 for the level and 9 for the slope b of the trend component, we type: As for simple exponential smoothing, we can make forecasts for future times not covered by the original time series by using the forecast. HoltWinters() function in the 8220forecast8221 package. For example, our time series data for skirt hems was for 1866 to 1911, so we can make predictions for 1912 to 1930 (19 more data points), and plot them, by typing: The forecasts are shown as a blue line, with the 80 prediction intervals as an orange shaded area, and the 95 prediction intervals as a yellow shaded area. As for simple exponential smoothing, we can check whether the predictive model could be improved upon by checking whether the in-sample forecast errors show non-zero autocorrelations at lags 1-20. For example, for the skirt hem data, we can make a correlogram, and carry out the Ljung-Box test, by typing: Here the correlogram shows that the sample autocorrelation for the in-sample forecast errors at lag 5 exceeds the significance bounds. However, we would expect one in 20 of the autocorrelations for the first twenty lags to exceed the 95 significance bounds by chance alone. Indeed, when we carry out the Ljung-Box test, the p-value is 0.47, indicating that there is little evidence of non-zero autocorrelations in the in-sample forecast errors at lags 1-20. As for simple exponential smoothing, we should also check that the forecast errors have constant variance over time, and are normally distributed with mean zero. We can do this by making a time plot of forecast errors, and a histogram of the distribution of forecast errors with an overlaid normal curve: The time plot of forecast errors shows that the forecast errors have roughly constant variance over time. The histogram of forecast errors show that it is plausible that the forecast errors are normally distributed with mean zero and constant variance. Thus, the Ljung-Box test shows that there is little evidence of autocorrelations in the forecast errors, while the time plot and histogram of forecast errors show that it is plausible that the forecast errors are normally distributed with mean zero and constant variance. Therefore, we can conclude that Holt8217s exponential smoothing provides an adequate predictive model for skirt hem diameters, which probably cannot be improved upon. In addition, it means that the assumptions that the 80 and 95 predictions intervals were based upon are probably valid. Holt-Winters Exponential Smoothing If you have a time series that can be described using an additive model with increasing or decreasing trend and seasonality, you can use Holt-Winters exponential smoothing to make short-term forecasts. Holt-Winters exponential smoothing estimates the level, slope and seasonal component at the current time point. Smoothing is controlled by three parameters: alpha, beta, and gamma, for the estimates of the level, slope b of the trend component, and the seasonal component, respectively, at the current time point. The parameters alpha, beta and gamma all have values between 0 and 1, and values that are close to 0 mean that relatively little weight is placed on the most recent observations when making forecasts of future values. An example of a time series that can probably be described using an additive model with a trend and seasonality is the time series of the log of monthly sales for the souvenir shop at a beach resort town in Queensland, Australia (discussed above): To make forecasts, we can fit a predictive model using the HoltWinters() function. For example, to fit a predictive model for the log of the monthly sales in the souvenir shop, we type: The estimated values of alpha, beta and gamma are 0.41, 0.00, and 0.96, respectively. The value of alpha (0.41) is relatively low, indicating that the estimate of the level at the current time point is based upon both recent observations and some observations in the more distant past. The value of beta is 0.00, indicating that the estimate of the slope b of the trend component is not updated over the time series, and instead is set equal to its initial value. This makes good intuitive sense, as the level changes quite a bit over the time series, but the slope b of the trend component remains roughly the same. In contrast, the value of gamma (0.96) is high, indicating that the estimate of the seasonal component at the current time point is just based upon very recent observations. As for simple exponential smoothing and Holt8217s exponential smoothing, we can plot the original time series as a black line, with the forecasted values as a red line on top of that: We see from the plot that the Holt-Winters exponential method is very successful in predicting the seasonal peaks, which occur roughly in November every year. To make forecasts for future times not included in the original time series, we use the 8220forecast. HoltWinters()8221 function in the 8220forecast8221 package. For example, the original data for the souvenir sales is from January 1987 to December 1993. If we wanted to make forecasts for January 1994 to December 1998 (48 more months), and plot the forecasts, we would type: The forecasts are shown as a blue line, and the orange and yellow shaded areas show 80 and 95 prediction intervals, respectively. We can investigate whether the predictive model can be improved upon by checking whether the in-sample forecast errors show non-zero autocorrelations at lags 1-20, by making a correlogram and carrying out the Ljung-Box test: The correlogram shows that the autocorrelations for the in-sample forecast errors do not exceed the significance bounds for lags 1-20. Furthermore, the p-value for Ljung-Box test is 0.6, indicating that there is little evidence of non-zero autocorrelations at lags 1-20. We can check whether the forecast errors have constant variance over time, and are normally distributed with mean zero, by making a time plot of the forecast errors and a histogram (with overlaid normal curve): From the time plot, it appears plausible that the forecast errors have constant variance over time. From the histogram of forecast errors, it seems plausible that the forecast errors are normally distributed with mean zero. Thus, there is little evidence of autocorrelation at lags 1-20 for the forecast errors, and the forecast errors appear to be normally distributed with mean zero and constant variance over time. This suggests that Holt-Winters exponential smoothing provides an adequate predictive model of the log of sales at the souvenir shop, which probably cannot be improved upon. Furthermore, the assumptions upon which the prediction intervals were based are probably valid. ARIMA Models Exponential smoothing methods are useful for making forecasts, and make no assumptions about the correlations between successive values of the time series. However, if you want to make prediction intervals for forecasts made using exponential smoothing methods, the prediction intervals require that the forecast errors are uncorrelated and are normally distributed with mean zero and constant variance. While exponential smoothing methods do not make any assumptions about correlations between successive values of the time series, in some cases you can make a better predictive model by taking correlations in the data into account. Autoregressive Integrated Moving Average (ARIMA) models include an explicit statistical model for the irregular component of a time series, that allows for non-zero autocorrelations in the irregular component. Differencing a Time Series ARIMA models are defined for stationary time series. Therefore, if you start off with a non-stationary time series, you will first need to 8216difference8217 the time series until you obtain a stationary time series. If you have to difference the time series d times to obtain a stationary series, then you have an ARIMA(p, d,q) model, where d is the order of differencing used. You can difference a time series using the 8220diff()8221 function in R. For example, the time series of the annual diameter of women8217s skirts at the hem, from 1866 to 1911 is not stationary in mean, as the level changes a lot over time: We can difference the time series (which we stored in 8220skirtsseries8221, see above) once, and plot the differenced series, by typing: The resulting time series of first differences (above) does not appear to be stationary in mean. Therefore, we can difference the time series twice, to see if that gives us a stationary time series: Formal tests for stationarity Formal tests for stationarity called 8220unit root tests8221 are available in the fUnitRoots package, available on CRAN, but will not be discussed here. The time series of second differences (above) does appear to be stationary in mean and variance, as the level of the series stays roughly constant over time, and the variance of the series appears roughly constant over time. Thus, it appears that we need to difference the time series of the diameter of skirts twice in order to achieve a stationary series. If you need to difference your original time series data d times in order to obtain a stationary time series, this means that you can use an ARIMA(p, d,q) model for your time series, where d is the order of differencing used. For example, for the time series of the diameter of women8217s skirts, we had to difference the time series twice, and so the order of differencing (d) is 2. This means that you can use an ARIMA(p,2,q) model for your time series. The next step is to figure out the values of p and q for the ARIMA model. Another example is the time series of the age of death of the successive kings of England (see above): From the time plot (above), we can see that the time series is not stationary in mean. To calculate the time series of first differences, and plot it, we type: The time series of first differences appears to be stationary in mean and variance, and so an ARIMA(p,1,q) model is probably appropriate for the time series of the age of death of the kings of England. By taking the time series of first differences, we have removed the trend component of the time series of the ages at death of the kings, and are left with an irregular component. We can now examine whether there are correlations between successive terms of this irregular component if so, this could help us to make a predictive model for the ages at death of the kings. Selecting a Candidate ARIMA Model If your time series is stationary, or if you have transformed it to a stationary time series by differencing d times, the next step is to select the appropriate ARIMA model, which means finding the values of most appropriate values of p and q for an ARIMA(p, d,q) model. To do this, you usually need to examine the correlogram and partial correlogram of the stationary time series. To plot a correlogram and partial correlogram, we can use the 8220acf()8221 and 8220pacf()8221 functions in R, respectively. To get the actual values of the autocorrelations and partial autocorrelations, we set 8220plotFALSE8221 in the 8220acf()8221 and 8220pacf()8221 functions. Example of the Ages at Death of the Kings of England For example, to plot the correlogram for lags 1-20 of the once differenced time series of the ages at death of the kings of England, and to get the values of the autocorrelations, we type: We see from the correlogram that the autocorrelation at lag 1 (-0.360) exceeds the significance bounds, but all other autocorrelations between lags 1-20 do not exceed the significance bounds. To plot the partial correlogram for lags 1-20 for the once differenced time series of the ages at death of the English kings, and get the values of the partial autocorrelations, we use the 8220pacf()8221 function, by typing: The partial correlogram shows that the partial autocorrelations at lags 1, 2 and 3 exceed the significance bounds, are negative, and are slowly decreasing in magnitude with increasing lag (lag 1: -0.360, lag 2: -0.335, lag 3:-0.321). The partial autocorrelations tail off to zero after lag 3. Since the correlogram is zero after lag 1, and the partial correlogram tails off to zero after lag 3, this means that the following ARMA (autoregressive moving average) models are possible for the time series of first differences: an ARMA(3,0) model, that is, an autoregressive model of order p3, since the partial autocorrelogram is zero after lag 3, and the autocorrelogram tails off to zero (although perhaps too abruptly for this model to be appropriate) an ARMA(0,1) model, that is, a moving average model of order q1, since the autocorrelogram is zero after lag 1 and the partial autocorrelogram tails off to zero an ARMA(p, q) model, that is, a mixed model with p and q greater than 0, since the autocorrelogram and partial correlogram tail off to zero (although the correlogram probably tails off to zero too abruptly for this model to be appropriate) We use the principle of parsimony to decide which model is best: that is, we assume that the model with the fewest parameters is best. The ARMA(3,0) model has 3 parameters, the ARMA(0,1) model has 1 parameter, and the ARMA(p, q) model has at least 2 parameters. Therefore, the ARMA(0,1) model is taken as the best model. An ARMA(0,1) model is a moving average model of order 1, or MA(1) model. This model can be written as: Xt - mu Zt - (theta Zt-1), where Xt is the stationary time series we are studying (the first differenced series of ages at death of English kings), mu is the mean of time series Xt, Zt is white noise with mean zero and constant variance, and theta is a parameter that can be estimated. A MA (moving average) model is usually used to model a time series that shows short-term dependencies between successive observations. Intuitively, it makes good sense that a MA model can be used to describe the irregular component in the time series of ages at death of English kings, as we might expect the age at death of a particular English king to have some effect on the ages at death of the next king or two, but not much effect on the ages at death of kings that reign much longer after that. Shortcut: the auto. arima() function The auto. arima() function can be used to find the appropriate ARIMA model, eg. type 8220library(forecast)8221, then 8220auto. arima(kings)8221. The output says an appropriate model is ARIMA(0,1,1). Since an ARMA(0,1) model (with p0, q1) is taken to be the best candidate model for the time series of first differences of the ages at death of English kings, then the original time series of the ages of death can be modelled using an ARIMA(0,1,1) model (with p0, d1, q1, where d is the order of differencing required). Example of the Volcanic Dust Veil in the Northern Hemisphere Let8217s take another example of selecting an appropriate ARIMA model. The file file robjhyndmantsdldataannualdvi. dat contains data on the volcanic dust veil index in the northern hemisphere, from 1500-1969 (original data from Hipel and Mcleod, 1994). This is a measure of the impact of volcanic eruptions8217 release of dust and aerosols into the environment. We can read it into R and make a time plot by typing: From the time plot, it appears that the random fluctuations in the time series are roughly constant in size over time, so an additive model is probably appropriate for describing this time series. Furthermore, the time series appears to be stationary in mean and variance, as its level and variance appear to be roughly constant over time. Therefore, we do not need to difference this series in order to fit an ARIMA model, but can fit an ARIMA model to the original series (the order of differencing required, d, is zero here). We can now plot a correlogram and partial correlogram for lags 1-20 to investigate what ARIMA model to use: We see from the correlogram that the autocorrelations for lags 1, 2 and 3 exceed the significance bounds, and that the autocorrelations tail off to zero after lag 3. The autocorrelations for lags 1, 2, 3 are positive, and decrease in magnitude with increasing lag (lag 1: 0.666, lag 2: 0.374, lag 3: 0.162). The autocorrelation for lags 19 and 20 exceed the significance bounds too, but it is likely that this is due to chance, since they just exceed the significance bounds (especially for lag 19), the autocorrelations for lags 4-18 do not exceed the signifiance bounds, and we would expect 1 in 20 lags to exceed the 95 significance bounds by chance alone. From the partial autocorrelogram, we see that the partial autocorrelation at lag 1 is positive and exceeds the significance bounds (0.666), while the partial autocorrelation at lag 2 is negative and also exceeds the significance bounds (-0.126). The partial autocorrelations tail off to zero after lag 2. Since the correlogram tails off to zero after lag 3, and the partial correlogram is zero after lag 2, the following ARMA models are possible for the time series: an ARMA(2,0) model, since the partial autocorrelogram is zero after lag 2, and the correlogram tails off to zero after lag 3, and the partial correlogram is zero after lag 2 an ARMA(0,3) model, since the autocorrelogram is zero after lag 3, and the partial correlogram tails off to zero (although perhaps too abruptly for this model to be appropriate) an ARMA(p, q) mixed model, since the correlogram and partial correlogram tail off to zero (although the partial correlogram perhaps tails off too abruptly for this model to be appropriate) Shortcut: the auto. arima() function Again, we can use auto. arima() to find an appropriate model, by typing 8220auto. arima(volcanodust)8221, which gives us ARIMA(1,0,2), which has 3 parameters. However, different criteria can be used to select a model (see auto. arima() help page). If we use the 8220bic8221 criterion, which penalises the number of parameters, we get ARIMA(2,0,0), which is ARMA(2,0): 8220auto. arima(volcanodust, ic8221bic8221)8221. The ARMA(2,0) model has 2 parameters, the ARMA(0,3) model has 3 parameters, and the ARMA(p, q) model has at least 2 parameters. Therefore, using the principle of parsimony, the ARMA(2,0) model and ARMA(p, q) model are equally good candidate models. An ARMA(2,0) model is an autoregressive model of order 2, or AR(2) model. This model can be written as: Xt - mu (Beta1 (Xt-1 - mu)) (Beta2 (Xt-2 - mu)) Zt, where Xt is the stationary time series we are studying (the time series of volcanic dust veil index), mu is the mean of time series Xt, Beta1 and Beta2 are parameters to be estimated, and Zt is white noise with mean zero and constant variance. An AR (autoregressive) model is usually used to model a time series which shows longer term dependencies between successive observations. Intuitively, it makes sense that an AR model could be used to describe the time series of volcanic dust veil index, as we would expect volcanic dust and aerosol levels in one year to affect those in much later years, since the dust and aerosols are unlikely to disappear quickly. If an ARMA(2,0) model (with p2, q0) is used to model the time series of volcanic dust veil index, it would mean that an ARIMA(2,0,0) model can be used (with p2, d0, q0, where d is the order of differencing required). Similarly, if an ARMA(p, q) mixed model is used, where p and q are both greater than zero, than an ARIMA(p,0,q) model can be used. Forecasting Using an ARIMA Model Once you have selected the best candidate ARIMA(p, d,q) model for your time series data, you can estimate the parameters of that ARIMA model, and use that as a predictive model for making forecasts for future values of your time series. You can estimate the parameters of an ARIMA(p, d,q) model using the 8220arima()8221 function in R. Example of the Ages at Death of the Kings of England For example, we discussed above that an ARIMA(0,1,1) model seems a plausible model for the ages at deaths of the kings of England. You can specify the values of p, d and q in the ARIMA model by using the 8220order8221 argument of the 8220arima()8221 function in R. To fit an ARIMA(p, d,q) model to this time series (which we stored in the variable 8220kingstimeseries8221, see above), we type: As mentioned above, if we are fitting an ARIMA(0,1,1) model to our time series, it means we are fitting an an ARMA(0,1) model to the time series of first differences. An ARMA(0,1) model can be written Xt - mu Zt - (theta Zt-1), where theta is a parameter to be estimated. From the output of the 8220arima()8221 R function (above), the estimated value of theta (given as 8216ma18217 in the R output) is -0.7218 in the case of the ARIMA(0,1,1) model fitted to the time series of ages at death of kings. Specifying the confidence level for prediction intervals You can specify the confidence level for prediction intervals in forecast. Arima() by using the 8220level8221 argument. For example, to get a 99.5 prediction interval, we would type 8220forecast. Arima(kingstimeseriesarima, h5, levelc(99.5))8221. We can then use the ARIMA model to make forecasts for future values of the time series, using the 8220forecast. Arima()8221 function in the 8220forecast8221 R package. For example, to forecast the ages at death of the next five English kings, we type: The original time series for the English kings includes the ages at death of 42 English kings. The forecast. Arima() function gives us a forecast of the age of death of the next five English kings (kings 43-47), as well as 80 and 95 prediction intervals for those predictions. The age of death of the 42nd English king was 56 years (the last observed value in our time series), and the ARIMA model gives the forecasted age at death of the next five kings as 67.8 years. We can plot the observed ages of death for the first 42 kings, as well as the ages that would be predicted for these 42 kings and for the next 5 kings using our ARIMA(0,1,1) model, by typing: As in the case of exponential smoothing models, it is a good idea to investigate whether the forecast errors of an ARIMA model are normally distributed with mean zero and constant variance, and whether the are correlations between successive forecast errors. For example, we can make a correlogram of the forecast errors for our ARIMA(0,1,1) model for the ages at death of kings, and perform the Ljung-Box test for lags 1-20, by typing: Since the correlogram shows that none of the sample autocorrelations for lags 1-20 exceed the significance bounds, and the p-value for the Ljung-Box test is 0.9, we can conclude that there is very little evidence for non-zero autocorrelations in the forecast errors at lags 1-20. To investigate whether the forecast errors are normally distributed with mean zero and constant variance, we can make a time plot and histogram (with overlaid normal curve) of the forecast errors: The time plot of the in-sample forecast errors shows that the variance of the forecast errors seems to be roughly constant over time (though perhaps there is slightly higher variance for the second half of the time series). The histogram of the time series shows that the forecast errors are roughly normally distributed and the mean seems to be close to zero. Therefore, it is plausible that the forecast errors are normally distributed with mean zero and constant variance. Since successive forecast errors do not seem to be correlated, and the forecast errors seem to be normally distributed with mean zero and constant variance, the ARIMA(0,1,1) does seem to provide an adequate predictive model for the ages at death of English kings. Example of the Volcanic Dust Veil in the Northern Hemisphere We discussed above that an appropriate ARIMA model for the time series of volcanic dust veil index may be an ARIMA(2,0,0) model. To fit an ARIMA(2,0,0) model to this time series, we can type: As mentioned above, an ARIMA(2,0,0) model can be written as: written as: Xt - mu (Beta1 (Xt-1 - mu)) (Beta2 (Xt-2 - mu)) Zt, where Beta1 and Beta2 are parameters to be estimated. The output of the arima() function tells us that Beta1 and Beta2 are estimated as 0.7533 and -0.1268 here (given as ar1 and ar2 in the output of arima()). Now we have fitted the ARIMA(2,0,0) model, we can use the 8220forecast. ARIMA()8221 model to predict future values of the volcanic dust veil index. The original data includes the years 1500-1969. To make predictions for the years 1970-2000 (31 more years), we type: We can plot the original time series, and the forecasted values, by typing: One worrying thing is that the model has predicted negative values for the volcanic dust veil index, but this variable can only have positive values The reason is that the arima() and forecast. Arima() functions don8217t know that the variable can only take positive values. Clearly, this is not a very desirable feature of our current predictive model. Again, we should investigate whether the forecast errors seem to be correlated, and whether they are normally distributed with mean zero and constant variance. To check for correlations between successive forecast errors, we can make a correlogram and use the Ljung-Box test: The correlogram shows that the sample autocorrelation at lag 20 exceeds the significance bounds. However, this is probably due to chance, since we would expect one out of 20 sample autocorrelations to exceed the 95 significance bounds. Furthermore, the p-value for the Ljung-Box test is 0.2, indicating that there is little evidence for non-zero autocorrelations in the forecast errors for lags 1-20. To check whether the forecast errors are normally distributed with mean zero and constant variance, we make a time plot of the forecast errors, and a histogram: The time plot of forecast errors shows that the forecast errors seem to have roughly constant variance over time. However, the time series of forecast errors seems to have a negative mean, rather than a zero mean. We can confirm this by calculating the mean forecast error, which turns out to be about -0.22: The histogram of forecast errors (above) shows that although the mean value of the forecast errors is negative, the distribution of forecast errors is skewed to the right compared to a normal curve. Therefore, it seems that we cannot comfortably conclude that the forecast errors are normally distributed with mean zero and constant variance Thus, it is likely that our ARIMA(2,0,0) model for the time series of volcanic dust veil index is not the best model that we could make, and could almost definitely be improved upon Links and Further Reading Here are some links for further reading. For a more in-depth introduction to R, a good online tutorial is available on the 8220Kickstarting R8221 website, cran. r-project. orgdoccontribLemon-kickstart . There is another nice (slightly more in-depth) tutorial to R available on the 8220Introduction to R8221 website, cran. r-project. orgdocmanualsR-intro. html . You can find a list of R packages for analysing time series data on the CRAN Time Series Task View webpage . To learn about time series analysis, I would highly recommend the book 8220Time series8221 (product code M24902) by the Open University, available from the Open University Shop . There are two books available in the 8220Use R8221 series on using R for time series analyses, the first is Introductory Time Series with R by Cowpertwait and Metcalfe, and the second is Analysis of Integrated and Cointegrated Time Series with R by Pfaff. Acknowledgements I am grateful to Professor Rob Hyndman. for kindly allowing me to use the time series data sets from his Time Series Data Library (TSDL) in the examples in this booklet. Many of the examples in this booklet are inspired by examples in the excellent Open University book, 8220Time series8221 (product code M24902), available from the Open University Shop . Thank you to Ravi Aranke for bringing auto. arima() to my attention, and Maurice Omane-Adjepong for bringing unit root tests to my attention, and Christian Seubert for noticing a small bug in plotForecastErrors(). Thank you for other comments to Antoine Binard and Bill Johnston. I will be grateful if you will send me (Avril Coghlan) corrections or suggestions for improvements to my email address alc 64 sanger 46 ac 46 uk


No comments:

Post a Comment