serie_temporelle

Série temporelle – Prévision avec ARIMA

L’une des méthodes de prévision de séries temporelles les plus répandues est la méthode ARIMA. ARIMA signifie : AutoRegressive Integrated Moving Average. Il s’agit d’un modèle qui prédit les valeurs futures d’une série temporelle sur certains aspects de la structure statistique de la série observée.

Dans cet article nous verrons, de façon succincte, quel est le principe de la méthode ARIMA. Puis, nous l’appliquerons, grâce à une bibliothèque Python, pour faire une prévision sur un jeu de données.

Principe du modèle ARIMA

Composantes du modèle

Le modèle ARIMA est une généralisation, pour les séries non-stationnaires, du modèle ARMA qui est lui-même la composition des modèles AR (auto-régressif) et MA (Moyennes Glissante ou Moving Average).

Modèle AR :

Ce modèle se base sur le caractère auto-régressif de la série. Il est donc applicable qu’aux séries auto-régressives. Une série (ou un processus) est auto-régressif d’ordre n lorsque sa valeur à un instant dépend linéairement des n valeurs précédentes. 

Soit : \[ x_t = c + \epsilon_t + \sum_{i=1}^n p_ix_{t-i} \]
Où \(\epsilon\) est un bruit blanc et \(c\) une constante. Appliquer le modèle AR revient donc à trouver les coefficients \(p_i\) ainsi que la variance du bruit \(\epsilon_t\) et la constante \(c\).
On peut trouver les \(p_i\) par régression linéaire par exemple.

Important : on appliquera donc le modèle auto-régressif que si on remarque une « corrélation » entre la série et une version décalée d’elle-même (auto-corrélation).

Modèle MA :

Ce modèle considère que la série (ou la variable) peut s’écrire comme combinaison linéaire de valeur actuelle d’un processus stochastique et de ses n valeurs précédentes. On parle d’un MA d’ordre n. La série peut donc s’écrire de la façon suivante :

\[ x_t = \mu + \sum_{i=1}^n \theta_i \epsilon_{t-i} \]

Le I de ARIMA est pour « integrated »  et indique qu’il faut différencier la série originale afin d’éliminer un caractère non-stationnaire éventuel.

Paramètre du modèle

Le modèle ARIMA a trois paramètres, chacun correspondant à chaque « composante » du modèle. Il s’écrit ARIMA(p, d, q) où p, d et q sont des entiers naturels et constituent les paramètres du modèle.

\(\mathbf{p}\) est le nombre de décalages qu’il faudra considérer pour le modèle auto-régressif. Si \(p\) est égal à \(3\), alors le modèle considère que \(x_t\) dépend (linéairement) de \(x_{t-1}\), \(x_{t-2}\) et \(x_{t-3}\).
\(\mathbf{d}\) est le nombre de fois qu’il faut différencier la série afin de la rendre stationnaire. \(d\) doit être égale à \(0\) dans le cas d’un processus déjà stationnaire.

q est l’ordre du modèle MA.

NB : p ou q peuvent aussi être égale à 0. ARIMA(0, d, q) correspond donc à un MA(q) et ARIMA(p, d, 0) correspond à un AR(p).

Application : Prévision avec ARIMA en Python

Problème

On dispose d’un jeu de données qui correspond aux températures minimums à Melbourne (cliquez ici pour le télécharger). Le jeu de données contient une température (la minimale) pour chaque jour du 1er janvier 1981 au 31 décembre 1990. Notre but est de prédire les températures du début de l’année 1991.

Exploration de la donnée

import pandas as pd
import matplotlib.pyplot as plt

temperatures = pd.read_csv("minimum_melbourne_temperature.csv", index_col=['Date']).T.squeeze()

# On visualise notre serie temporelle dans son ensemble
plt.rcParams["figure.figsize"] = [20,8]
plt.plot(temperatures)
Série temporelle - Températures
Températures

On remarque à première vue une périodicité de nos températures. Notre série est donc stationnaire. On peut donc utiliser un simple modèle autoregressif.

from statsmodels.tsa.arima_model import ARIMA

model = ARIMA(temperatures, order=(5,0,0))
model_fit = model.fit(disp=0)

Conclusion

On vient de voir le modèle ARIMA qui permet de faire des prévisions sur des séries temporelles en fonction de ses caractéristiques statistiques. ARIMA est un très bon modèle quand on appréhende bien la série étudiée d’un point de vu statistique. Dans les cas où il n’est pas évident de faire ressortir les propriétés statistiques, d’autres méthodes telles que l’utilisation du Deep Learning en particulier les LSTM peuvent être intéressantes.

Vous voulez publier sur ledatascientist.com ? C’est par ici

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.