Accueil / Factory / Algos ML / SARIMA / SARIMAX — factory / algos ML / prévision de séries temporelles

SARIMA SARIMAX.

SARIMA ajoute à ARIMA une partie saisonnière, qui compare chaque mois au même mois des années précédentes. SARIMAX y ajoute des variables externes : météo, promotions, jours fériés, prix. On obtient une prévision qui intègre ce que l'on sait déjà du futur, et une mesure chiffrée de l'effet de chaque variable.

PrévisionSaisonnalitéVariables externesStatistique classiqueNiveau : avancé

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceTrès solide quand les variables externes expliquent vraiment la série
InterprétabilitéEffets des variables lisibles, partie ARIMA plus abstraite
VitesseRapide sur une série, plus long sur des milliers
Facilité de réglageOrdres à choisir et variables futures à fournir
Tolérance aux données brutesDates régulières exigées, sensible aux ruptures et aux trous
EN 30 SECONDES

Prévoir les ventes de boissons de juillet : on part du juillet de l'an dernier, on ajuste avec la tendance récente, puis on corrige de ce qu'on sait déjà : juillet sera plus chaud que la normale et une promotion est prévue.

1. La partie saisonnière (S)

Les ordres (P,D,Q) sur une période de 12 mois : on compare chaque mois au même mois de l'année précédente, ce qui absorbe le cycle annuel.

2. La partie ARIMA

Les ordres (p,d,q) captent ce qui reste : la dépendance d'un mois au suivant, les erreurs récentes.

3. Les variables externes (X)

Chaque variable reçoit un coefficient, comme dans une régression : tant de ventes en plus par degré, tant par mois de promotion. Pour prévoir, il faut fournir leurs valeurs futures : promotions planifiées, prévisions météo, calendrier.

LE CAS MÉTIER

prévision des ventes · boissons / grande consommation
EN ENTRÉE

Ventes mensuelles, météo et promotions

Huit ans de ventes mensuelles de boissons, avec la température moyenne de chaque mois et un indicateur de promotion. Faute de jeu de données avec variables externes, le code les simule : on connaît donc les vrais effets.

EN SORTIE

Une prévision qui intègre le calendrier connu

Le modèle estime l'effet d'un degré et d'une promotion, qui doivent rester proches des valeurs simulées (15 et 60 unités). Sur 2025, on compare la prévision avec et sans variables externes : l'écart mesure ce que la météo et les promotions apportent.

CE QU'ON MESURE

La MAPE avec et sans variables

On apprend jusqu'à fin 2024 et on prévoit 2025 en fournissant la météo et les promotions réelles. En production, on n'a que des prévisions météo : l'évaluation honnête utilise les valeurs qui étaient connues au moment de prévoir.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Ventes influencées par des facteurs connus à l'avance : promotions planifiées, jours fériés, prix
  • Série mensuelle ou hebdomadaire avec saisonnalité stable et plusieurs années d'historique
  • Besoin de chiffrer l'effet d'un levier (une promotion, un degré de température)
  • Scénarios : que donne la prévision avec ou sans promotion en juin ?

NON

  • Variables externes inconnues au moment de prévoir : elles n'aident pas, sauf à les prévoir elles-mêmes
  • Séries qui s'influencent mutuellement (prix et volumes) : utiliser un VAR
  • Plusieurs saisonnalités ou beaucoup de jours fériés sur des données journalières : Prophet est plus simple
  • Milliers de références : un modèle global de boosting avec les mêmes variables passe mieux à l'échelle
LES 4 RÉGLAGES QUI COMPTENT

Noms donnés pour R (forecast) et Python (statsmodels). En R, auto.arima(xreg = ...) peut aussi choisir les ordres.

order : (p, d, q)

La partie non saisonnière. Des valeurs de 0 à 2 suffisent presque toujours ; d = 1 si la série a une tendance.

seasonal / seasonal_order : (P, D, Q, s)

La partie saisonnière, avec s = 12 en mensuel. D = 1 et Q = 1 est un bon départ pour des ventes. En Python, la période s est le quatrième élément de seasonal_order.

xreg / exog

Les variables externes, une colonne par variable. Il faut les mêmes colonnes pour la prévision (xreg dans forecast, exog dans get_forecast), sur tout l'horizon.

Choix des variables

Ne garder que des variables disponibles au moment de prévoir, et vérifier que leur coefficient a le signe et l'ordre de grandeur attendus. Une variable qui n'est connue qu'après coup gonfle artificiellement la précision.

LE CODE MINIMAL

données simulées dans le code
# Ventes de boissons : SARIMAX en R
library(forecast)

# Simulation de 8 ans de ventes mensuelles : saison, météo et promotions
set.seed(42)
mois <- seq(as.Date("2018-01-01"), by = "month", length.out = 96)
m <- as.numeric(format(mois, "%m"))
temperature <- 12 + 8 * sin(2 * pi * (m - 4) / 12) + rnorm(96, 0, 1.5)  # °C moyens du mois
promo <- as.numeric(runif(96) < 0.25)                                   # mois avec promotion
bruit <- as.numeric(arima.sim(list(ar = 0.5), n = 96, sd = 20))
ventes <- ts(500 + 15 * temperature + 60 * promo + 80 * (m == 12) + bruit, start = c(2018, 1), frequency = 12)
X <- cbind(temperature, promo)

# Apprentissage jusqu'à fin 2024, test sur 2025 (météo et promos de 2025 supposées connues)
train <- window(ventes, end = c(2024, 12))
avec <- Arima(train, order = c(1, 0, 0), seasonal = c(0, 1, 1), xreg = X[1:84, ])
sans <- Arima(train, order = c(1, 0, 0), seasonal = c(0, 1, 1))
print(round(coef(avec), 2))  # effet d'un degré et d'une promo sur les ventes

mape <- function(prevu) round(mean(abs(ventes[85:96] - prevu) / ventes[85:96]) * 100, 1)
cat("MAPE 2025 avec variables :", mape(as.numeric(forecast(avec, xreg = X[85:96, ])$mean)), "%\n")
cat("MAPE 2025 sans variables :", mape(as.numeric(forecast(sans, h = 12)$mean)), "%\n")

QUESTIONS FRÉQUENTES

Quelle différence entre ARIMA, SARIMA et SARIMAX ?

ARIMA modélise une série à partir de son passé. SARIMA ajoute une partie saisonnière qui relie chaque période à la même période du cycle précédent. SARIMAX ajoute des variables externes, dont il faut connaître les valeurs futures pour prévoir.

Comment lire la notation SARIMA(p,d,q)(P,D,Q)s ?

(p,d,q) est la partie non saisonnière : autorégression, différenciation, moyenne mobile. (P,D,Q) est la même chose à l'échelle du cycle, s étant la longueur du cycle, 12 pour des données mensuelles. Le modèle « airline » (0,1,1)(0,1,1)12 est un classique des séries mensuelles.

Faut-il connaître les variables externes futures pour prévoir avec SARIMAX ?

Oui. Le modèle a besoin de leurs valeurs sur tout l'horizon de prévision. Pour un calendrier de promotions ou de jours fériés, c'est simple. Pour la météo, on utilise des prévisions ou des normales saisonnières, ce qui ajoute de l'incertitude.

LES ALGOS VOISINS

à comparer avant de choisir
la base

ARIMA

Le même modèle sans partie saisonnière explicite ni variables externes. Le point de départ pour comprendre les ordres (p,d,q).

Voir la fiche →
l'alternative clé en main

Prophet

Tendance, saisons, jours fériés et variables externes dans un modèle additif simple à lancer. Moins fin sur l'autocorrélation.

Voir la fiche →
quand les séries s'influencent

VAR

Prévoit plusieurs séries ensemble quand l'influence va dans les deux sens, par exemple prix et volumes.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →