Prévision de séries chronologiques avec ARIMA en R – LZP
La prévision et la prédiction, un ensemble de mots interchangeables qui, du point de vue de la science des données, se tournent vers la prédiction d’événements futurs sur la base d’un ensemble de données historiques.
Il existe de nombreuses méthodes qui peuvent être utilisées pour la prévision, par ex. Régression, moyennes mobiles simples, ou même en utilisant des bibliothèques telles que Prophet in R.
Dans cet exemple, je parlerais de la technique de prévision ARIMA, qui est l’une des techniques de prévision de séries chronologiques les plus utilisées.
L’ARIMA est un acronyme qui signifie Moyenne mobile intégrée autorégressive. Oui, c’est un peu long, mais pour comprendre comment cela fonctionne, nous pouvons commencer par décomposer les composants d’un modèle ARIMA.
Un modèle ARIMA peut être écrit sous la forme suivante: ARIMA (p, d, q), où
- processus p = AR (p)
- d = Différenciation temporelle
- q = processus MA (q)
Processus AR (p)
Le processus autorégressif avec ordre p est donné comme:
𝑦𝑡 = 𝛿 + 𝜙1𝑦𝑡 − 1 + ⋯ + 𝜙𝑝𝑦𝑡 − 𝑝 + 𝜀𝑡
Il peut également être identifié dans le graphique de la série chronologique lorsque le processus de la fonction d’autocorrélation partielle (PACF) a tendance à zéro après le décalage p.
Processus de différenciation (d)
Il faudrait également s’assurer que les données sont stationnaires et que les tendances doivent être supprimées avant d’appliquer une prévision ARIMA. C’est là que la différenciation est utile.
La différenciation est une méthode utilisée pour supprimer le modèle de tendance d’une série chronologique, et l’opération de différenciation peut être écrite comme suit:
∇𝑦𝑡 = (1 − 𝐵) 𝑦𝑡 = 𝑦𝑡 − 𝑦𝑡 − 1
La différenciation peut être effectuée ré-e ordre jusqu’à ce que la tendance soit supprimée. Dans la plupart des cas, une à deux différences suffisent pour supprimer une tendance sous-jacente dans la série chronologique.
MA (q) Processus
Le processus de l’ordre moyen mobile q est donné comme:
𝑦𝑡 = 𝜇 + 𝜀𝑡 − 𝜃1𝜀𝑡 − 1− ⋯ −𝜃𝑞𝜀𝑡 − 𝑞
Il peut également être identifié dans le graphique de la série chronologique lorsque le processus de la fonction d’autocorrélation d’échantillon (ACF) tend à zéro après le décalage q.
Processus du modèle ARIMA
En bref, l’application d’un modèle ARIMA peut se décomposer en les étapes suivantes:
- Utilisation d’un diagramme de séries chronologiques pour déterminer si une transformation des données est nécessaire
- Examen de l’ACF et du PACF pour déterminer si une différenciation est nécessaire pour supprimer toute tendance sous-jacente dans les données. N’oubliez pas que ARIMA ne peut être appliqué qu’à une série chronologique stationnaire. Et une série chronologique stationnaire est celle qui a une moyenne et une variance constantes, ou sans décroissance exponentielle dans les tracés ACF et PACF.
- Si les données ne sont pas stationnaires, vérifiez s’il y a une saisonnalité dans les données. La saisonnalité peut être expliquée comme des données de séries chronologiques qui sont influencées par des facteurs saisonniers, et elles sont toujours fixe et d’une période connue. Par exemple, les ventes de cartes de Noël pendant la période des fêtes.
- Pour les données non saisonnières, prenez la première ou la seconde différence des données.
- Pour les données saisonnières, prenez les différences saisonnières dans les données.
- Enfin, après la différenciation, trouver le modèle ARIMA (p, d, q) (P, D, Q) s approprié en examinant les graphiques ACF et PACF. Un moyen de comparer la différence entre les modèles ARIMA générés consiste à utiliser la valeur AIC (critère d’information Akaike). En général, valeur AIC inférieure = Meilleures performances du modèle.
Exemple de prévision ARIMA utilisant R
Dans cet exemple, je commencerais par utiliser les données historiques quotidiennes du cours des actions Microsoft au cours des cinq dernières années. Les données CSV peuvent être téléchargées à partir de Yahoo Finance.
Les bibliothèques que nous utiliserions sont les prévisions et tseries bibliothèques.
Tout d’abord, nous commencerions par lire les données et les convertir en une série temporelle univariée. Comme nous prévoyions les données en fonction de la valeur de clôture du cours des actions, j’ai continué et supprimé les lignes inutiles dans les données.
Comme il s’agit d’un ensemble de données contenant des données de fermeture quotidiennes, la fréquence représente le nombre d’observations par unité de temps qui est défini sur 365 car il représente des données quotidiennes sur une année.
En regardant le graphique des séries chronologiques, nous pouvons voir qu’il y a une tendance à la hausse au fil du temps sans beaucoup de saisonnalité. Mais avant d’appliquer nos prévisions, nous devons nous assurer que la série chronologique est Stationnaire.
Nous pouvons le faire en supprimant d’abord les variances inégales à l’aide d’un journal des données et en effectuant une différenciation des séries chronologiques. Ensuite, nous testerions si la série chronologique est stationnaire à l’aide d’un ADF (Augmented Dickey-Fuller Test).
En utilisant des tests d’hypothèse, nous pouvons voir que l’ADF donne une valeur de p inférieure à un niveau de signification de 5 pour cent. Ainsi, nous pouvons rejeter l’hypothèse nulle et accepter l’hypothèse alternative que notre série chronologique est stationnaire.
Génial! Cela nous permet de procéder à nos prévisions ARIMA.
Pour déterminer les paramètres de notre modèle ARIMA, nous pouvons jeter un œil aux diagrammes de séries chronologiques ACF et PACF différenciés.
Il semble que le décalage du graphique de la série chronologique ACF se coupe après le décalage 0 qui représente très probablement un modèle MA (0). À ce titre, nous pouvons construire notre modèle ARIMA (0,1,1) et inclure également une composante saisonnière.
D’après les résultats, notre modèle a un AIC de -6668,29, n’hésitez pas à expérimenter avec différents paramètres de modèle et à trouver celui avec la valeur AIC la plus basse. Cela devrait représenter le modèle optimal pour nos prévisions.
Une période de 5 est utilisée car les données sont échantillonnées quotidiennement, contre 365 car R ne prend pas en charge les décalages supérieurs à 350 périodes.
Ensuite, nous appliquerons nos prévisions pour l’année prochaine ou environ 52 semaines à l’avance en supposant qu’il y ait 5 jours de bourse par semaine.
Où 2,718 est approximativement la valeur du constante exponentielle que nous appliquerions pour supprimer le journal des valeurs. (Log inverse)
Log = «y» nous permet de tracer les valeurs sur une échelle logarithmique. Cela permet une meilleure visualisation des valeurs car elles ne sont pas positionnées également les unes par rapport aux autres par rapport à une échelle linéaire.
lty = c (1,3) représente un type de ligne de 1 pour la série d’origine et de 3 pour la série chronologique prévue (en pointillés).