Accéder au contenu principal

ARIMA pour la prévision de séries temporelles : le guide complet

Découvrez les composants clés du modèle ARIMA, comment le construire et l'optimiser en Python pour des prévisions fiables, et ses usages dans divers secteurs.
Actualisé 22 avr. 2026  · 12 min lire

Intéressons-nous à ARIMA, l'une des techniques de prévision de séries temporelles les plus utilisées. ARIMA est apprécié car il modélise efficacement les séries temporelles en capturant à la fois les composantes autorégressives (AR) et moyennes mobiles (MA), tout en traitant la non-stationnarité par différenciation (I). Cette combinaison rend les modèles ARIMA particulièrement flexibles, d'où leur adoption dans des domaines très variés comme la finance ou la prévision météorologique. 

Les modèles ARIMA sont techniques, mais je vais en décortiquer les éléments pour vous aider à bien les comprendre. Avant de commencer, il est utile de vous familiariser avec quelques bases. DataCamp propose de nombreuses ressources, notamment nos cours ARIMA Models in Python et ARIMA Models in R. Choisissez selon le langage que vous préférez. 

Pourquoi utiliser ARIMA pour prévoir ?

En finance, en économie, en sciences de l'environnement, etc., ARIMA suscite un grand intérêt car il sait identifier des schémas complexes dans l'historique des observations pour répondre à des besoins futurs : c'est une technique de référence. Qu'il s'agisse de prédire les cours boursiers, d'anticiper des régimes météo ou d'estimer la demande, ARIMA permet de produire des analyses prédictives précises et actionnables.

Avec ARIMA, nous analysons et prévoyons les séries temporelles de manière avancée, en tenant compte des motifs, tendances et effets saisonniers. Cela offre une vision à 360° de la dynamique sous-jacente pour prendre des décisions éclairées.

Composants clés des modèles ARIMA

Pour bien comprendre ARIMA, il faut en déconstruire les briques. Une fois les composantes assimilées, le fonctionnement global de cette méthode de prévision devient plus clair. Voici une explication détaillée de chaque composant.

Partie autorégressive (AR)

La composante autorégressive (AR) construit une tendance à partir des valeurs passées dans un cadre d'autorégression pour les modèles prédictifs. Pour préciser, le « cadre d'autorégression » fonctionne comme une régression où l'on utilise les retards (lags) des valeurs passées de la série comme variables explicatives.

Partie intégrée (I)

La partie intégrée (I) consiste à différencier la série afin d'obtenir une série stationnaire, c'est-à-dire dont la moyenne et la variance restent constantes dans le temps. Concrètement, on soustrait une observation de la précédente pour éliminer tendances et saisonnalités. La différenciation vise la stationnarité. Cette étape est nécessaire pour aider le modèle à s'ajuster aux signaux plutôt qu'au bruit.

Partie moyenne mobile (MA) 

La composante moyenne mobile (MA) s'intéresse à la relation entre une observation et l'erreur résiduelle. En examinant comment l'observation actuelle se relie aux erreurs passées, on en déduit des informations utiles sur d'éventuelles tendances dans les données.

On considère les résidus comme l'une de ces erreurs, et le modèle MA estime ou prend en compte leur impact sur l'observation la plus récente. C'est particulièrement utile pour capter les variations de court terme ou des chocs aléatoires. Grâce à la partie MA d'une série temporelle, on obtient des informations précieuses sur son comportement, ce qui améliore la précision des prévisions.

Comment construire un modèle ARIMA en Python

Pour construire un modèle ARIMA de prévision, par exemple des prix de l'or, suivez ces étapes. Décortiquons-les ensemble.

Collecte des données 

Première étape : sélectionner un jeu de données adapté et préparer l'environnement.

Trouver un jeu de données

Récupérez ou cherchez un jeu de données sur des plateformes de données. Visez des données historiques dans le temps. Voici un lien vers un jeu de données Kaggle sur les prix à terme de l'or. 

Installer les packages

Installez les packages nécessaires, notamment statsmodels et sklearn

import pandas as pdimport matplotlib.pyplot as pltfrom statsmodels.tsa.stattools import adfullerfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacffrom statsmodels.tsa.arima.model import ARIMAfrom sklearn.metrics import mean_squared_error

Charger les données

Nous lisons ensuite les données dans l'environnement local. Je prends l'étape supplémentaire de m'assurer que les dates sont correctement interprétées et ordonnées.

# Define the path to your CSV file# You may have to make this path more specific to the location of your file.csv_path = "future-gc00-daily-prices.csv"# Read the CSV, parse 'Date' column as datetime, and set it as the indexdata = pd.read_csv(    csv_path,    parse_dates=["Date"],    dayfirst=False,    index_col="Date")# Sort the DataFrame by the Date index in ascending orderdata.sort_index(inplace=True)

Prétraitement des données 

Notre jeu de données est plutôt propre, mais dans d'autres contextes, il faudrait traiter les questions d'indexation, cruciales en prévision de séries temporelles. Par exemple, si nous prévoyons la valeur de clôture d'une action sur une bourse donnée, il faut garder à l'esprit que le marché est fermé le week-end.

Avant de poursuivre, je prends aussi le temps de retirer les virgules de la variable Close, celle que je vais utiliser.

# Clean the "Close" columndata["Close"] = data["Close"].replace(',', '', regex=True)data["Close"] = pd.to_numeric(data["Close"], errors='coerce')data["Close"].replace([np.inf, -np.inf], np.nan, inplace=True)data.dropna(subset=["Close"], inplace=True)

Gérer les valeurs manquantes

Dans le prétraitement, il faut souvent traiter les valeurs manquantes via une méthode d'imputation comme le forward filling ou le remplacement par la moyenne. Notez qu'une seule valeur NA, selon le langage et la bibliothèque utilisés, peut empêcher l'exécution d'un ARIMA.

J'ai mentionné que les jours de week-end peuvent apparaître comme NA. C'est possible et impliquerait une étape supplémentaire. Heureusement, statsmodels traite les données comme un index séquentiel sans imposer des intervalles réguliers, ce qui permet au modèle de compiler même avec des « trous » le week-end. 

Tracer une courbe temporelle

C'est le bon moment pour tracer une série temporelle afin de visualiser les données avec lesquelles nous travaillons : 

# Plotting the original Close priceplt.figure(figsize=(14, 7))plt.plot(data.index, data["Close"], label='Close Price')plt.title('Close Price Over Time')plt.xlabel('Date')plt.ylabel('Close Price')plt.legend()plt.show()

Tracé temporel ARIMA

Vérifier la stationnarité et différencier si besoin

Les modèles ARIMA peuvent gérer une certaine non-stationnarité, mais pas une variance qui change dans le temps. Autrement dit, pour fonctionner correctement, les données doivent être stationnaires.

À la vue du graphique ci-dessus, la série n'est pas stationnaire : on observe une tendance marquée. La variance semble également varier dans le temps. Le test de Dickey-Fuller augmenté permet de valider cette intuition en testant la constance de la moyenne et de la variance, avec des métriques chiffrées. 

# Perform the Augmented Dickey-Fuller test on the original seriesresult_original = adfuller(data["Close"])print(f"ADF Statistic (Original): {result_original[0]:.4f}")print(f"p-value (Original): {result_original[1]:.4f}")if result_original[1] < 0.05:    print("Interpretation: The original series is Stationary.\n")else:    print("Interpretation: The original series is Non-Stationary.\n")# Apply first-order differencingdata['Close_Diff'] = data['Close'].diff()# Perform the Augmented Dickey-Fuller test on the differenced seriesresult_diff = adfuller(data["Close_Diff"].dropna())print(f"ADF Statistic (Differenced): {result_diff[0]:.4f}")print(f"p-value (Differenced): {result_diff[1]:.4f}")if result_diff[1] < 0.05:    print("Interpretation: The differenced series is Stationary.")else:    print("Interpretation: The differenced series is Non-Stationary.")
ADF Statistic (Original): -1.4367p-value (Original): 0.5646Interpretation: The original series is Non-Stationary.ADF Statistic (Differenced): -19.1308p-value (Differenced): 0.0000Interpretation: The differenced series is Stationary.

Les résultats du test ADF indiquent que la série originale est non stationnaire ; utiliser ARIMA tel quel sur ces données serait une erreur.

Le test ADF sur la série différenciée montre en revanche que celle-ci est stationnaire.

Un mot sur la différenciation. Beaucoup de choses se passent « sous le capot ». Pour différencier, on soustrait chaque observation de la précédente pour obtenir une nouvelle série dite de premières différences. (Cette nouvelle série compte un élément de moins.) Si la série différenciée n'est toujours pas stationnaire, on peut appliquer une seconde différenciation, et poursuivre jusqu'à obtenir la stationnarité. L'ordre de différenciation requis est le nombre minimal de différenciations nécessaires pour supprimer l'autocorrélation.

Dernier conseil : évitez de sur-différencier, au risque d'introduire de fausses dynamiques. Et si vous deviez construire un ARIMA saisonnier (ce que nous ne faisons pas ici), privilégiez toujours une différenciation saisonnière avant une première différenciation.

# Plotting the differenced Close priceplt.figure(figsize=(14, 7))plt.plot(data.index, data['Close_Diff'], label='Differenced Close Price', color='orange')plt.title('Differenced Close Price Over Time')plt.xlabel('Date')plt.ylabel('Differenced Close Price')plt.legend()plt.show()

Série ARIMA avec première différenciation

Identification du modèle

Lorsqu'on construit un ARIMA, il faut déterminer les termes p, d et q.

  • Le premier paramètre, p, est le nombre d'observations retardées. Il détermine jusqu'où remonter dans le temps pour prédire l'observation courante, via l'étude des autocorrélations (corrélations de la série avec ses retards).
  • Le deuxième paramètre, d, correspond à l'ordre de différenciation. La différenciation consiste à calculer la différence entre deux pas de temps consécutifs pour rendre la série stationnaire en supprimant tendances et variations de variance. d indique l'ordre minimal nécessaire pour obtenir un processus stationnaire.
  • Le troisième paramètre, q, est l'ordre de la partie moyenne mobile (MA). Il représente le nombre d'erreurs de prévision retardées incluses dans le modèle. Contrairement à une moyenne mobile « simple » qui lisse les données, la composante MA d'ARIMA capture la relation entre une observation et les erreurs résiduelles issues d'un modèle de moyenne mobile appliqué aux observations retardées.

Déterminer les termes ARIMA

On utilise l'ACF (fonction d'autocorrélation) et la PACF (autocorrélation partielle) pour déterminer les valeurs de p, d et q. Le nombre de retards où l'ACF « s'éteint » donne q, et celui où la PACF « s'éteint » donne p. Il faut aussi choisir d de façon à, après différenciation, rapprocher la série d'un bruit blanc. Pour nos données, nous choisissons 1 pour p et q car on observe un pic significatif au premier retard pour chacun.

from statsmodels.graphics.tsaplots import plot_acf, plot_pacfimport matplotlib.pyplot as plt# Plot ACF and PACF for the differenced seriesfig, axes = plt.subplots(1, 2, figsize=(16, 4))# ACF plotplot_acf(data['Close_Diff'].dropna(), lags=40, ax=axes[0])axes[0].set_title('Autocorrelation Function (ACF)')# PACF plotplot_pacf(data['Close_Diff'].dropna(), lags=40, ax=axes[1])axes[1].set_title('Partial Autocorrelation Function (PACF)')plt.tight_layout()plt.show()

Graphiques ACF et PACF pour ARIMA

Estimation des paramètres 

Pour être clair, les valeurs p, d et q définissent l'ordre du modèle (retards pour l'AR, différenciation et termes MA), mais ne sont pas les paramètres effectivement estimés. Une fois p, d et q choisis, le modèle estime d'autres paramètres, comme les coefficients AR et MA, par maximum de vraisemblance (MLE).

Prévision

Pour prévoir avec un ARIMA, on utilise le modèle ajusté pour prédire les valeurs futures à partir des données. Ensuite, il est utile de visualiser les prédictions en les traçant aux côtés des valeurs réelles. Pour cela, on suit un workflow entraînement/test, en scindant les données en ensembles d'entraînement et de test. Cela permet d'évaluer la performance du modèle sur des données jamais vues. Si cela n'est pas clair, suivez notre cours Model Validation in Python, une excellente ressource pour maîtriser l'entraînement et le test.

1. Utiliser un workflow train/test

Première étape : diviser les données en versions entraînement et test. 

# Split data into train and testtrain_size = int(len(data) * 0.8)train, test = data.iloc[:train_size], data.iloc[train_size:]# Fit ARIMA modelmodel = ARIMA(train["Close"], order=(1,1,1))model_fit = model.fit()

2. Visualiser la série temporelle

Étape suivante : produire la prévision et l'inspecter visuellement. On observe la performance face aux données de test.

# Forecastforecast = model_fit.forecast(steps=len(test))# Plot the results with specified colorsplt.figure(figsize=(14,7))plt.plot(train.index, train["Close"], label='Train', color='#203147')plt.plot(test.index, test["Close"], label='Test', color='#01ef63')plt.plot(test.index, forecast, label='Forecast', color='orange')plt.title('Close Price Forecast')plt.xlabel('Date')plt.ylabel('Close Price')plt.legend()plt.show()

ARIMA : valeurs réelles vs prévues. Image par l'auteur

3. Évaluer les statistiques du modèle

On examine les statistiques AIC et BIC. Des valeurs plus faibles indiquent un meilleur ajustement, mais il est pertinent de comparer avec des modèles plus simples pour éviter le surapprentissage. J'imprime les chiffres ici, mais ils prennent tout leur sens en comparaison avec d'autres ARIMA sur les mêmes données, afin d'identifier le modèle le plus performant.

print(f"AIC: {model_fit.aic}")print(f"BIC: {model_fit.bic}")
AIC: 24602.97426066606BIC: 24620.97128230579

On peut également évaluer l'erreur quadratique moyenne pour juger l'ajustement. C'est une métrique pratique. Un RMSE plus faible indique un meilleur ARIMA, avec des écarts plus réduits entre valeurs réelles et prédites, et reste sur l'échelle des données. Par exemple, un RMSE de 118,5339 signifie qu'en moyenne, les prédictions du modèle s'écartent du prix de Close d'environ 118,53 $.

forecast = forecast[:len(test)]test_close = test["Close"][:len(forecast)]# Calculate RMSErmse = np.sqrt(mean_squared_error(test_close, forecast))print(f"RMSE: {rmse:.4f}")
RMSE: 118.5339

Devenez un scientifique ML

Maîtriser Python pour devenir un scientifique de l'apprentissage automatique
Commencez à apprendre gratuitement

Usages courants d'ARIMA en prévision 

Passons aux applications d'ARIMA dans différents secteurs. De nombreux domaines – de l'économie et la finance à la météorologie et la santé – exploitent les modèles ARIMA pour tirer des insights des données et rechercher une meilleure précision prédictive. Parmi les plus courants :

Économie et finance 

La force d'ARIMA réside dans sa capacité à traiter des séries financières souvent riches en autocorrélations et en interactions entre indicateurs économiques. Sa faculté à modéliser les effets de retard et à intégrer la différenciation le rend idéal pour prévoir des métriques volatiles comme les cours boursiers ou les taux de change.

  • Prévisions financières : en prévoyant cours, taux de change et autres instruments financiers, ARIMA peut soutenir les stratégies d'investissement.
  • Modélisation économique : les modèles ARIMA aident à anticiper l'évolution d'une économie nationale ou mondiale, éclairant les décisions de politique économique.
  • Planification de la demande : ARIMA prédit la demande de biens et services pour optimiser la production et piloter les stocks.

Prévision météorologique

Les modèles ARIMA exploitent les schémas météorologiques historiques pour fournir des prévisions à court et long terme, suffisamment flexibles pour anticiper des conditions typiques comme extrêmes.

  • Prédiction de la température et des précipitations : utilisés pour les prévisions météo de court et de long terme, en intégrant les interactions air-mer et d'autres facteurs. 
  • Modélisation du changement climatique : ARIMA s'appuie sur des données climatiques historiques pour mieux comprendre les tendances et projeter les climats futurs.

Gestion de la chaîne d'approvisionnement

La capacité d'ARIMA à modéliser les effets de retard aide les responsables supply chain à gérer les stocks ou anticiper des perturbations en s'appuyant sur l'historique et les délais.

  • Prévision de la demande : ARIMA anticipe la demande de produits et permet de planifier la production et les niveaux de stock.
  • Gestion des stocks : ARIMA aide à maintenir des niveaux de stock adaptés pour limiter l'immobilisation de capital et réduire les coûts liés aux sur- ou sous-stockages.
  • Optimisation de la chaîne logistique : ARIMA peut anticiper des perturbations en analysant l'interaction de multiples variables, comme les retards de transport ou les fluctuations de la demande.

Santé

Dans le secteur de la santé, les modèles ARIMA sont précieux pour prévoir les admissions et d'autres tendances clés.

  • Prévision des épidémies : les modèles ARIMA permettent d'anticiper la propagation des maladies infectieuses et de préparer des interventions de santé publique en amont.
  • Prévision des admissions à l'hôpital : ARIMA prédit les flux d'admissions afin d'optimiser ressources et plannings des équipes.
  • Suivi des patients : ARIMA aide les professionnels à analyser des données médicales, détecter des signaux précoces et personnaliser les stratégies thérapeutiques.

Points d'attention pour de meilleures prévisions ARIMA

Voici des erreurs fréquentes à éviter lors de la construction de modèles ARIMA :

Surapprentissage et sous-apprentissage

Des valeurs inadaptées de p, d et q peuvent entraîner du surapprentissage ou du sous-apprentissage. Le surapprentissage survient quand le modèle est trop complexe et capture le bruit, ce qui nuit à la généralisation. À l'inverse, un modèle trop simple ne saisira pas tous les motifs sous-jacents.

Pour éviter le surapprentissage, on peut réduire le nombre de retards et éventuellement l'ordre de différenciation. Le sous-apprentissage peut se corriger en augmentant le nombre de termes AR si c'est pertinent. Il faut trouver le bon équilibre entre simplicité et complexité. Des techniques de validation/cross-validation aident à trancher.

Stationnarité

La stationnarité est une hypothèse statistique liée aux dépendances temporelles des données. Des données non stationnaires peuvent produire des prévisions peu fiables et des relations fallacieuses. La différenciation ou des transformations (log, ajustements saisonniers) permettent de rendre une série stationnaire. 

Saisonnalité

La présence de saisonnalité est un autre point essentiel en analyse de séries temporelles. Beaucoup de jeux de données réels présentent des motifs répétés à intervalles fixes (quotidiens, hebdomadaires, annuels...). Ignorer ces effets nuit à la qualité des prévisions. Dans ce cas, il faut envisager des différenciations saisonnières et des termes AR et MA saisonniers, en plus de p et q. Gardez en tête qu'une série peut présenter plusieurs types de saisonnalités.

Analyse des résidus

Une étape clé d'ARIMA consiste à vérifier si la série de résidus générée est stationnaire. Les résidus sont l'écart entre les valeurs observées et celles prévues par le modèle. En les examinant, on vérifie la capacité du modèle à capturer la dynamique des données. Les résidus doivent se répartir aléatoirement, sans tendance ni autocorrélation.

Si les résidus montrent des motifs ou corrélations, c'est qu'une partie de l'information échappe au modèle. Des tests et diagnostics visuels, comme le test de Ljung-Box, des histogrammes et autres graphiques, permettent de valider l'adéquation du modèle.

Aller plus loin avec ARIMA et les modèles associés

Dans bien des cas, ARIMA n'est pas une fin en soi. À l'image d'ARIMA, évolution des modèles autorégressifs et à moyenne mobile, de nouvelles approches ont vu le jour. Pour des effets saisonniers, envisagez les modèles SARIMA, capables de gérer des motifs périodiques/multi-périodes. SARIMA s'avère particulièrement utile là où les données présentent des cycles récurrents, comme les ventes ou la météo. ARIMAX est une autre option prisée : il s'agit d'ARIMA avec variables exogènes, qui peuvent nettement améliorer la performance et la précision des prévisions.

Côté machine learning, on peut approfondir l'analyse de séries temporelles avec des outils comme les réseaux de neurones récurrents (RNN) et les LSTM pour modéliser des dépendances temporelles complexes. Enfin, le champ des séries temporelles bayésiennes offre des approches intéressantes pour la prévision et l'aide à la décision.

Conclusion / points clés

Comme nous l'avons vu, ARIMA est un modèle statistique de référence pour analyser des séries temporelles et prévoir des valeurs futures en combinant composantes autorégressives et moyennes mobiles. Il permet de générer des prévisions à partir d'historiques, même lorsque deux jeux de données ont des caractéristiques très différentes. Cette adaptabilité explique son large usage.

La pratique est essentielle pour maîtriser les fondamentaux d'ARIMA. DataCamp propose des cours adaptés à vos besoins pour progresser et maîtriser la modélisation ARIMA. Dans ces tutoriels en ligne, apprenez les fondamentaux et les outils les plus efficaces pour mettre en œuvre des solutions analytiques à fort impact, plus facilement et rapidement que vous ne l'imaginez. À l'issue, vous serez à l'aise pour appliquer ARIMA dans vos futurs projets data. Découvrez les cours ARIMA disponibles sur DataCamp et libérez votre potentiel en analyse de séries temporelles : Forecasting in R, Time Series with R, ARIMA Models in Python, ARIMA Models in R

Devenez un scientifique ML

Améliorez vos connaissances en Python pour devenir un scientifique spécialisé dans l'apprentissage automatique.

Zaina Saadeddin's photo
Author
Zaina Saadeddin

Je suis maître de conférences à temps partiel dans le programme d'apprentissage du département d'informatique de l'Université nationale An-Najah, avec 5 ans d'expérience en génie logiciel et plus de 5 ans dans le domaine de la science des données. Mes recherches actuelles se concentrent sur l'éducation EdTech et (FATE) dans l'IA - la science des données pour le bien social / l'impact. En plus du rôle de conférencier. Je suis un éducateur de codage après l'école, enseignant la programmation Python, et un mentor technique, partageant ses connaissances avec d'autres, et donnant un aperçu des dernières tendances et techniques. Je suis un formateur professionnel pour les étudiants universitaires sur les compétences de recherche d'emploi (entretien, construction de CV, sélection d'emploi, portfolio, coaching de carrière) dans le monde de la technologie.

Questions fréquentes sur la prévision de séries temporelles

Qu'est-ce qu'un modèle ARIMA ?

Un modèle ARIMA (Autoregressive Integrated Moving Average) est une méthode statistique populaire de prévision de séries temporelles qui anticipe les valeurs futures en combinant les observations passées (AR), la différenciation pour obtenir la stationnarité (I) et les erreurs passées pour affiner les prédictions (MA).

Quelle est la différence entre ARIMA et le lissage exponentiel ?

On peut dire que les modèles ARIMA décrivent une série via ses autocorrélations. C'est une technique plus robuste et flexible, souvent utilisée pour fournir des prévisions stables à long terme. Le lissage exponentiel se concentre davantage sur la tendance et la saisonnalité et est généralement jugé plus performant pour des séries courtes et volatiles.

En quoi la prévision ARIMA est-elle liée aux modèles de régression ?

La prévision avec ARIMA est liée à la régression car elle utilise des valeurs passées et des erreurs pour prédire des points futurs, à l'image des modèles de régression qui prédisent une variable dépendante à partir de variables explicatives. ARIMA gère en outre les séries non stationnaires via la différenciation, ce qui le rapproche des techniques de régression appliquées à des données stationnaires. Contrairement à une régression classique, ARIMA tient explicitement compte des effets temporels, ce qui le rend plus adapté à la prévision de séries.

Sujets

Apprenez avec DataCamp

Cours

Prévisions financières en Python

4 h
13K
Afficher les détails
Commencer le cours
Voir plus