Le modèle ARIMA (AutoRegressive Integrated Moving Average) est une technique statistique utilisée pour prévoir des séries temporelles en tenant compte des tendances passées et des fluctuations. Il est largement utilisé pour la prédiction des ventes, des stocks, des prix et d’autres données évoluant dans le temps.
Décomposition du modèle ARIMA
Le modèle ARIMA est composé de trois éléments clés, notés (p, d, q) :
- ppp (Auto-Régression – AR)
- Mesure comment les valeurs passées influencent la valeur actuelle.
- Ex: Si les ventes d’aujourd’hui dépendent de celles des derniers mois.
- AR(1) signifie que seule la valeur du mois précédent est prise en compte, AR(2) prend en compte les deux derniers mois, etc.
- ddd (Différenciation – I pour Integrated)
- Supprime les tendances pour rendre la série stationnaire.
- Ex: Si les ventes augmentent chaque mois, on soustrait la valeur précédente pour éviter un effet d’accumulation.
- d=1d = 1d=1 signifie qu’on soustrait la valeur du mois précédent, d=2d = 2d=2 signifie qu’on le fait deux fois.
- qqq (Moyenne Mobile – MA)
- Capture les erreurs de prédiction passées pour ajuster le modèle.
- Ex: Si une forte erreur est observée dans les prévisions précédentes, elle est prise en compte pour améliorer la prédiction.
- MA(1) signifie qu’on utilise une seule erreur précédente pour corriger la prévision.
Ainsi, un modèle ARIMA(1,1,1) signifie :
- Auto-régression (AR) avec 1 valeur passée.
- Différenciation (I) avec 1 soustraction pour stationnariser la série.
- Moyenne mobile (MA) avec 1 correction d’erreur passée.
Étapes d’utilisation d’ARIMA
Vérifier la stationnarité
Une série temporelle est stationnaire si sa moyenne et sa variance restent constantes dans le temps.
Si ce n’est pas le cas, on applique une différenciation (d) pour supprimer la tendance.
from statsmodels.tsa.stattools import adfuller
result = adfuller(df_filtered["Montant_net"])
print(f"Statistique de test ADF : {result[0]}")
print(f"P-valeur : {result[1]}")
Si p-valeur < 0.05 → La série est stationnaire
Si p-valeur > 0.05 → La série n’est pas stationnaire ❌ → Appliquer une différenciation.
Sélection des paramètres (p, d, q)
On utilise l’auto-corrélation (ACF) et l’auto-corrélation partielle (PACF) pour choisir les bonnes valeurs de p et q.
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plot_acf(df_filtered["Montant_net"])
plot_pacf(df_filtered["Montant_net"])
plt.show()
Si ACF diminue lentement → Besoin de différenciation (ddd).
Si PACF montre un pic à un certain lag → Cela donne une indication sur ppp.
Si ACF montre un pic après quelques périodes → Cela donne une indication sur qqq.
Entraîner ARIMA et faire des prédictions
On entraîne ARIMA avec les paramètres trouvés et on effectue une prévision.
from statsmodels.tsa.arima.model import ARIMA
# Entraîner ARIMA(1,1,1) sur les données de ventes
model = ARIMA(df_filtered["Montant_net"], order=(1,1,1))
model_fit = model.fit()
# Prédiction sur les 6 prochains mois
forecast = model_fit.forecast(steps=6)
print(forecast)
Évaluation des performances
On compare les prévisions avec les données réelles pour voir si ARIMA fonctionne bien.
from sklearn.metrics import mean_absolute_error
# Erreur moyenne entre les valeurs réelles et prédites
mae = mean_absolute_error(df_filtered["Montant_net"].tail(6), forecast)
print(f"Erreur moyenne absolue (MAE) : {mae}")
Plus le MAE est bas, plus le modèle est précis.
Si l’erreur est trop grande, on ajuste les paramètres (p, d, q).
Avantages et Inconvénients d’ARIMA
Avantages :
- Excellente précision pour des données temporelles linéaires.
- Facile à interpréter et rapide à exécuter.
- Fonctionne bien pour les séries avec des tendances claires.
Inconvénients :
- Ne prend pas en compte les facteurs externes (ex: promotions, saisonnalité).
- Moins performant sur des données très volatiles.
- Doit être réentraîné régulièrement pour rester précis.
Quand utiliser ARIMA ?
Bonne option si tu veux prédire les ventes en fonction de l’historique uniquement.
Moins efficace si d’autres facteurs (météo, campagnes marketing, événements spéciaux) influencent les ventes → Dans ce cas, un modèle plus avancé (Prophet, XGBoost, LSTM) serait plus adapté.
Le modèle ARIMA est un excellent point de départ pour la prédiction des ventes et des tendances. On peut l’améliorer en :
- Ajoutant des facteurs externes (fêtes, promotions).
- Testant différents paramètres (p, d, q).
- Comparant avec d’autres modèles comme Prophet ou LSTM.
Histoire et Créateurs
Le modèle ARIMA (AutoRegressive Integrated Moving Average) a été développé par les statisticiens George Box et Gwilym Jenkins dans les années 1970. Il est souvent appelé « modèle de Box-Jenkins » en leur honneur.
George E. P. Box (1919-2013) : Statisticien britannique, connu pour ses contributions en analyse des séries temporelles et en contrôle qualité.
Gwilym M. Jenkins (1933-1982) : Statisticien gallois, spécialisé dans l’ingénierie statistique et les processus de prévision.
Ils ont publié leur méthode dans le livre « Time Series Analysis: Forecasting and Control » (1970). Ce livre est devenu une référence dans l’analyse des séries temporelles et la prévision économique.