Didacticiel — Prévision & saisonnalité

Séries temporelles & prévision

Prévoir la demande. Anticiper la consommation énergie. Détecter une dérive capteur. Trois usages quotidiens en production et en logistique — tous des problèmes de séries temporelles. Importez votre CSV (date, valeur) : décomposition STL, test ADF, ACF/PACF, fit multi-modèles (Naïve saisonnier, Holt-Winters, ARIMA, SARIMA), MAPE train vs test, forecast avec IC 95 %. 100 % navigateur via Pyodide + statsmodels.

Une série = tendance + saisonnalité + résidu. Une bonne prévision prolonge les composantes, pas les données brutes.

1. Qu'est-ce qu'une série temporelle ?

Une série temporelle est une suite d'observations ordonnées dans le temps avec un pas régulier : horaire, journalier, hebdomadaire, mensuel. Trois cas d'usage industriels que couvre ce didacticiel :

  • Prévision de demande — logistique, dimensionnement du stock, plan de charge.
  • Consommation énergie — anticiper les pics, négocier les contrats, piloter l'effacement.
  • Dérive capteur — détecter une perte de précision avant qu'elle ne contamine le produit.

Une série se décompose en quatre composantes :

yt = Tt (tendance) + St (saison) + Ct (cycle) + Rt (résidu)

Modèle additif. Version multiplicative si l'amplitude saisonnière croît avec le niveau.

Additif vs multiplicatif

  • Additif : y = T + S + R. Amplitude saisonnière constante.
  • Multiplicatif : y = T × S × R. Amplitude qui grandit avec le niveau.

Test rapide : tracer l'écart-type glissant. S'il est stable → additif. S'il croît avec la moyenne → multiplicatif. Sur une série multiplicative, passer par log(y) permet de revenir au cas additif.

Saison vs cycle

  • Saison : période fixe et connue (7 jours, 12 mois, 24 h). Prévisible, modélisable.
  • Cycle : période variable (cycle économique 3-10 ans, cycle usure machine). Plus difficile à modéliser.

La décomposition STL (Seasonal-Trend decomposition using Loess) isole ces composantes robustement, y compris quand la saisonnalité évolue dans le temps — référence de fait sur données réelles.

2. Stationnarité & différenciation

Une série est stationnaire si sa moyenne, sa variance et sa structure d'autocorrélation sont stables dans le temps. C'est le prérequis de presque tous les modèles ARMA/ARIMA — sans stationnarité, les IC prédiction sont fallacieux (phénomène de régression fallacieuse, Granger & Newbold 1974).

Test ADF — Augmented Dickey-Fuller

Hypothèses :

  • H0 : la série a une racine unitaire (non stationnaire).
  • H1 : pas de racine unitaire (stationnaire).

Lecture :

p-value < 0.05 → on rejette H0 → série stationnaire

p-value ≥ 0.05 → on ne peut pas rejeter H0 → différencier.

Différenciation

L'opération y't = yt − yt−1 élimine une tendance. Parameter d dans ARIMA(p, d, q). Différenciation saisonnière yt − yt−s pour éliminer la saison (P, D, Q de SARIMA).

Protocole :

  1. Tester ADF sur y brut.
  2. Si non stationnaire → différencier (d += 1) et re-tester.
  3. Stopper dès que stationnaire. En pratique : d = 0, 1 ou 2 (jamais plus).
  4. Si saison : tester aussi la différence saisonnière avec D = 1.

Piège : sur-différencier introduit de l'auto-corrélation parasite (théorème de Slutzky). Si après d=1 la série est stationnaire, ne pas aller plus loin.

3. Auto-corrélation — ACF & PACF

L'ACF (AutoCorrelation Function) mesure la corrélation entre yt et ses décalages yt−k pour k = 1, 2, … La PACF (Partial ACF) mesure la corrélation après avoir retiré l'effet des décalages intermédiaires — c'est la signature de la structure AR.

Diagnostic modèle par ACF / PACF

ModèleACFPACF
AR(p)décroît lentementcoupe après lag p
MA(q)coupe après lag qdécroît lentement
ARMA(p, q)décroîtdécroît
Bruit blanctout dans les bandes ±2/√ntout dans les bandes

Bandes de confiance : approximativement ±1.96/√n pour α=5 %. Un pic qui sort significativement indique une corrélation réelle. Un pic à lag s (7, 12, 24) signale une saisonnalité non traitée.

Signal de bruit blanc : ACF et PACF entièrement dans les bandes → aucun modèle temporel n'apportera de valeur. Utiliser la moyenne comme référence.

4. Les modèles de prévision

Baselines à battre (à comparer systématiquement)

  • Naïve : ŷt+1 = yt. Dernière valeur observée.
  • Naïve saisonnier : ŷt+1 = yt+1−s. Valeur de la même période précédente. Excellent sur saisons fortes.
  • Moyenne globale : ŷ = ȳ. Pour bruit blanc.

Lissage exponentiel

  • SES (Simple Exponential Smoothing) : niveau seul. Lt = αyt + (1−α)Lt−1. Pas de tendance, pas de saison.
  • Holt (lissage double) : niveau + tendance. Deux paramètres α (niveau), β (tendance).
  • Holt-Winters (lissage triple) : niveau + tendance + saison. Trois paramètres α, β, γ. Versions additive et multiplicative.

Holt-Winters additif :

Lt = α(yt − St−s) + (1−α)(Lt−1 + Bt−1)

Bt = β(Lt − Lt−1) + (1−β)Bt−1

St = γ(yt − Lt) + (1−γ)St−s

ŷt+h = Lt + hBt + St+h−s

ARIMA & SARIMA

  • ARIMA(p, d, q) : AutoRegressive Integrated Moving Average. p ordre AR, d différenciations, q ordre MA.
  • SARIMA(p, d, q)(P, D, Q)s : ARIMA saisonnier de période s.

Identification : lire ACF/PACF sur la série différenciée, essayer plusieurs (p, q), sélectionner par AIC, vérifier résidus (ACF dans les bandes, test Ljung-Box p > 0.05).

Arbre de décision — quel modèle pour quelle série ?

StructureModèle recommandéComplexité
Pas de tendance, pas de saisonNaïve / Moyenne / SESFaible
Tendance, pas de saisonHolt, ARIMA(p,1,q)Moyenne
Saison, pas de tendanceNaïve saisonnier, HWMoyenne
Tendance + saison additiveHolt-Winters add., SARIMAÉlevée
Tendance + saison multiplicativeHolt-Winters mult.Élevée
Bris de ruptureSegmenter puis modéliserÉlevée
Bruit blancMoyenne (ne pas sur-modéliser)Nulle

Règle d'or : toujours comparer au naïve saisonnier. S'il bat votre modèle complexe, c'est votre modèle qui est mauvais.

5. Évaluation — train/test, MAPE, RMSE, IC prédiction

Split chronologique (jamais de shuffle !)

Sur une série temporelle, le shuffle est une faute grave : il met des données du futur dans le train. Le split doit être chronologique : 80 % train en début, 20 % test en fin. Pour modèles critiques, rolling validation (expanding window).

Métriques

MétriqueFormuleBon pourAttention
MAPEΣ|y−ŷ| / |y| · 100/ninterprétation %valeurs proches de 0 (divergence)
RMSE√(Σ(y−ŷ)²/n)pénaliser gros écartsunités de y
MAEΣ|y−ŷ|/nrobuste aux outlierspas de pénalisation quadratique
AIC2k − 2 ln(L)sélection modèle intra-famillepas comparable cross-famille

Cible industrielle typique : MAPE < 10 % pour une prévision utilisable en pilotage. MAPE < 5 % pour des usages critiques (dimensionnement stock sécurité, contrats énergie).

IC prédiction vs IC moyenne

  • IC moyenne (étroit) : plage où se situe la vraie valeur moyenne.
  • IC prédiction (large) : plage où se situera une observation future.

Pour du pilotage opérationnel (stock de sécurité, capacité pic) → IC prédiction (plus large, inclut le bruit résiduel). Pour l'analyse statistique → IC moyenne.

6. Quand utiliser quel modèle — tableau de décision
CasSignal à repérerModèle recommandé
Demande stable + saison hebdoPic ACF lag 7Naïve saisonnier ou HW add. s=7
Consommation horairePic ACF lag 24SARIMA (p,d,q)(P,D,Q)24
Ramp-up linéaireTendance claire, pas de saisonHolt
Site en expansion + saisonAmplitude saison qui granditHolt-Winters multiplicatif
Random walk (prod. cumulée)ADF non stationnaire, lag 1 ACF fortARIMA(1,1,0)
Capteur bruit blancACF et PACF dans les bandesMoyenne globale
Nouvelle machine / brisChangement de niveau brutalSegmenter + HW sur post
Dérive capteurCône dans les résidusHolt + transformation log ou GARCH

Vos données

CSV deux colonnes : date,valeur. Date ISO (YYYY-MM-DD) ou horaire (YYYY-MM-DD HH:00). Jeu par défaut : consommation électrique ligne de production (730 jours, tendance +2 %/an, saison hebdo + annuelle).

Ou importez un fichier CSV :

Paramètres du modèle

Protocole de préparation des données

  • Pas régulier obligatoire — horaire, quotidien, hebdo, mensuel. Les trous doivent être imputés ou marqués.
  • Historique minimum : 3× la saison (21 jours pour saison 7, 36 mois pour saison 12).
  • Valeurs aberrantes : vérifier avant fit. Un outlier biaise fortement Holt-Winters.
  • Bris de rupture : si une nouvelle machine / ligne a démarré, couper la série.
  • Date ISO : YYYY-MM-DD ou YYYY-MM-DD HH:00. Eviter dd/mm/yyyy (ambigu).

Exercices guidés

Huit cas industriels réels, chacun avec son dataset prêt à charger et sa solution corrigée. Cherchez le bon modèle avant de cliquer la solution.

facile Logistique ts-ex1 — Demande hebdo pâtisserie industrielle

Contexte. Une pâtisserie industrielle livre 5 grandes enseignes avec une demande stable au mois mais fortement marquée par la semaine : pic en début de semaine, creux le dimanche. 120 jours d'historique.

Question. Quel modèle donne le meilleur MAPE en moins de 10 s ? Quelle est la saison ? Combien de jours de prévision sont fiables ?

Voir la solution

Résultat attendu : 120 observations · pas quotidien · meilleur modèle : Naïve saisonnier · MAPE cible ≈ 3.5 %

Interprétation. La saison = 7 jours. Sans tendance ni dérive, le naïve saisonnier (prédire yt = yt-7) fait mieux que tout modèle plus complexe. MAPE ≈ 3-4 %. Horizon fiable : 1 à 2 semaines.

Piège à éviter. Utiliser une moyenne mobile large lisse la saison et donne un MAPE de 8-10 %. La saison n'est pas du bruit — c'est de l'information utile à conserver.

facile Production ts-ex2 — Ramp-up production nouvel atelier

Contexte. Nouvel atelier en montée de charge — la production quotidienne augmente régulièrement depuis 90 jours (linéairement). Pas de saisonnalité claire.

Question. Quel modèle capte correctement la tendance ? Pourquoi un lissage exponentiel simple (SES) échoue ici ?

Voir la solution

Résultat attendu : 90 observations · pas quotidien · meilleur modèle : Holt · MAPE cible ≈ 2.5 %

Interprétation. Holt (lissage double) capture tendance + niveau. MAPE ≈ 2-3 %. SES rate la tendance : ses prévisions retardent systématiquement → biais. Régression linéaire donne des résultats comparables à Holt sur ce cas.

Piège à éviter. Appliquer un SES : prévisions toujours plates → sous-estimation croissante. SES n'a pas de composante tendance par construction.

intermédiaire Énergie ts-ex3 — Consommation énergie croissante avec saisonnalité

Contexte. Consommation électrique mensuelle d'un site en expansion (180 jours). L'amplitude des oscillations grandit avec le niveau moyen (série multiplicative).

Question. Quel modèle faut-il choisir ? Holt-Winters additif ou multiplicatif ? Pourquoi l'additif sur-estime les pics ?

Voir la solution

Résultat attendu : 180 observations · pas quotidien · meilleur modèle : Holt-Winters · MAPE cible ≈ 4.5 %

Interprétation. Série multiplicative (amplitude ~ niveau). Holt-Winters multiplicatif est le bon choix. MAPE ≈ 4-5 %. La variante additive traite les saisons comme si elles étaient fixes en valeur absolue et sur-estime en fin de période.

Piège à éviter. Appliquer Holt-Winters additif : erreurs qui grandissent avec le temps. Test simple : la décomposition STL additive laisse-t-elle une tendance dans les résidus ? Oui → multiplicatif nécessaire.

facile Instrumentation ts-ex4 — Capteur bruit blanc — rien à prédire

Contexte. Un capteur de pression relève 100 mesures indépendantes. ACF nulle à tous les lags. Le manager veut quand même prédire les 10 prochaines valeurs.

Question. Quelle est la meilleure prévision ? Quel MAPE peut-on raisonnablement atteindre ? Pourquoi un ARIMA (p,d,q) complexe n'apporte rien ?

Voir la solution

Résultat attendu : 100 observations · pas quotidien · meilleur modèle : Naïve · MAPE cible ≈ 8 %

Interprétation. Sur bruit blanc, la meilleure prévision est la moyenne globale (équivalent à la Naïve moyenne). MAPE ≈ 7-8 % (= sigma / moyenne × √(2/π)). Tout ARIMA complexe sur-apprend le bruit — MAPE test pire que la moyenne. L'ACF qui reste dans les bandes de confiance est LE test diagnostique.

Piège à éviter. Un ARIMA(2,0,2) donne un R² élevé en train — mais MAPE test plus mauvais que la moyenne. C'est le classique overfitting du bruit.

intermédiaire Production ts-ex5 — Production cumulée — tendance stochastique

Contexte. Production cumulée d'une ligne, avec des à-coups aléatoires qui décalent le niveau. 140 points. La série n'est visuellement pas stationnaire — tendance qui dérive sans cap fixe.

Question. Quel test de stationnarité utiliser ? Combien de différenciations faut-il ? Pourquoi un ARIMA(1,1,0) est-il adapté ?

Voir la solution

Résultat attendu : 140 observations · pas quotidien · meilleur modèle : ARIMA · MAPE cible ≈ 5 %

Interprétation. Le test ADF (Augmented Dickey-Fuller) rejette la stationnarité → différencier une fois (d=1). Sur la série différenciée, l'ACF décroît → AR(1) → ARIMA(1,1,0). MAPE ≈ 4-6 %. Utiliser Holt donne des résultats proches (c'est son équivalent state-space).

Piège à éviter. Fitter un ARIMA sans différencier : paramètres instables, résidus autocorrélés, IC prédiction qui ne tiennent pas. La stationnarité est un prérequis, pas une option.

avancé Énergie ts-ex6 — Consommation électrique horaire — SARIMA s=24

Contexte. Relevés horaires de consommation électrique d'un atelier sur 10 jours = 240 points. Cycle jour/nuit très marqué + tendance hebdo légère.

Question. Quelle saison choisir ? (s=24 ? s=168 ?) Quel ordre (p,d,q)(P,D,Q)s essayer en première approche ? Comment valider ?

Voir la solution

Résultat attendu : 240 observations · pas horaire · meilleur modèle : SARIMA · MAPE cible ≈ 3.5 %

Interprétation. La saison principale est s = 24 (cycle jour). Essai initial : SARIMA(1,0,1)(1,1,1)24. MAPE ≈ 3-4 %. Vérifier résidus (ACF dans les bandes) + Ljung-Box p>0.05. Holt-Winters multi-saisonnier est plus souple si s=168 aussi pertinent, mais statsmodels ne le gère pas directement.

Piège à éviter. Oublier la différenciation saisonnière (D=0) : les résidus restent fortement auto-corrélés à lag 24. Lire l'ACF : pics à 24, 48, 72 → signal fort que D=1 est nécessaire.

intermédiaire Production ts-ex7 — Bris de rupture — nouvelle machine

Contexte. Installation d'une nouvelle machine au jour 60 : le niveau de production passe brutalement de 500 à 800 unités/jour. Saisonnalité hebdo conservée. 120 points.

Question. Faut-il fitter un modèle sur toute la série ? Comment traiter le bris de rupture ? Que valent les métriques si on ignore le break ?

Voir la solution

Résultat attendu : 120 observations · pas quotidien · meilleur modèle : Holt-Winters · MAPE cible ≈ 6 %

Interprétation. Fitter sur la partie post-rupture uniquement (60 derniers jours). Holt-Winters saison=7 → MAPE ≈ 5-7 %. Fitter sur toute la série donne des paramètres absurdes et un MAPE 3× pire. Alternative : ajouter une variable indicatrice pre/post dans un modèle de régression.

Piège à éviter. Ignorer le bris : le modèle apprend une "tendance" fictive qui explose les prévisions. Un œil sur la série brute avant tout fit est obligatoire.

avancé Instrumentation ts-ex8 — Dérive capteur — hétéroscédasticité

Contexte. Un capteur dont la précision se dégrade progressivement (variance du bruit qui augmente avec le temps). Tendance linéaire + bruit hétéroscédastique. 150 points.

Question. Les IC prédiction sont-ils corrects avec un modèle classique ? Comment détecter l'hétéroscédasticité ? Quelle action corrective ?

Voir la solution

Résultat attendu : 150 observations · pas quotidien · meilleur modèle : Holt · MAPE cible ≈ 4 %

Interprétation. Holt capte bien la tendance — MAPE ≈ 3-4 %. MAIS les IC prédiction sont sous-estimés sur la fin : ils supposent variance constante. Le graphique des résidus montre un cône qui s'ouvre dans le temps (hétéroscédasticité). Action : 1) re-calibrer le capteur, 2) transformer log ou racine pour stabiliser la variance, 3) utiliser un modèle GARCH si la dérive est intrinsèque au procédé.

Piège à éviter. Annoncer un IC 95 % = ±X alors que la variance réelle a doublé. Résultat : alarmes fausses et fiabilité perçue qui chute. Toujours tracer résidus vs temps après fit.