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. 

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 :

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.

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)
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

Commentaires (0)
Ajouter un commentaire