• Smart Data
  • Publié le 7 novembre 2016

Prédire l’avenir: #HoltWinters (Part 4 – Last)

Dans Part 1, nous avons vu les méthodes basiques de prévision, dans Part 2, je vous ai expliqué le lissage exponentiel simple (LES),  et dans Part 3, je vous ai expliqué le lissage exponentiel double (LED).

Enfin, dans ce dernier volet, Holt-Winters, le lissage exponentiel triple!

Navrée de vous avoir fait attendre, mais bon, comme dit le proverbe: vieux motard!


Un peu plus de vocabulaire…

Saisonnalité

Quand une série se répéte à des intervalles plus ou moins régulières, on parle de saisonnalité (ou de périodicité). Gardez en tête, la saisonnalité est nécéssaire pour l’utilisation de cet algo, il n’est pas applicable aux séries non-périodiques.

Période

Il s’agit simplement du nombre de points dans une saison, nous la dénoterons Latex formula.

Composante saisonnière

Nous utiliserons maintenant 3 composantes de lissage! Et oui, jamais 2 sans 3, il s’agit de l’indice saisonnier, qu’on appelera Latex formula. La saisonnalité se repère généralement bien à l’oeil nu, mais il existe aussi des méthodes scientifiques pour la mettre en évidence (par exemple en retirant la tendance et en comparant ensuite les différentes périodes).

Schéma de décomposition (additif ou multiplicatif)

Quésako ?

Comme vous l’avez bien compris maintenant, une série temporelle a:

  • une tendance (ça monte ou ça descend), et éventuellement
  • une composante saisonnière (ça s’en va et ça revient, c’est fait de… allez j’arrête).

De manière générale, si les variations saisonnières se répètent avec une même amplitude (c’est à dire qu’on retrouve les mêmes variations entres les minimales et les maximales d’une période), alors que la tendance évolue à la hausse ou à la baisse, c’est comme si on ajoutait à la tendance une fonction périodique. On parle d’un schéma de décomposition additif.

schema-additif

Notez sur la courbe ci-dessus l’amplitude régulière et la tendance à la hausse. Lorsque par contre la dispersion varie avec la tendance, on va multiplier chaque saison par un coefficient.

schema-multiplicatif

Sur la courbe ci-dessus, on voit bien comment l’amplitude augmente avec la tendance, on parle ici d’un schéma de décomposition multiplicatif.


Lissage exponentiel triple

Nous avons donc maintenant 3 composantes à notre série: niveautendance et saisonnalité. Le coefficient de saisonnalité va être lissé pour le même point de la saison précédante.

Latex formula

Niveau

Latex formula

Tendance

Latex formula

Saisonnalité

Latex formula

Prévision

Et là, vous vous dites “ces formules, c’est n’importe quoi”. Mais non mais non. Patience jeune Padawan, en temps, tu comprendras.

  • Latex formula: notre constante de lissage pour la saisonnalité
  • Latex formula: où Latex formula est un entier, autrement dit, nous pouvons maintenant prédire n’importe quel(s) point(s) dans le futur (sisi, j’t’assure!). Whoo hoo!
  • Latex formula: l’indice de la dernière saison observée. Autrement dit, si je veux le 2ème point de la 42ème saison dans le futur, puisque je ne peux pas me servir des données de la 41ème saison (elle est dans le futur elle aussi), je me sers donc des dernières valeurs connues/observées.

Vous voyez, c’est vraiment pas sorcier!


Un peu plus de maths…

Je vais prendre une nouvelle série, qui contrairement aux exemples précédant, est saisonnière.

On va prendre des données sur 6 ans (6 saisons), et une période de 4 (4 trimestres par an). Pour le lissage exponentiel triple, c’est toujours mieux si on connait la période (mais il existe aussi des méthodes de calcul pour les cas où on ne la connait pas).

donnees-saisonnieres

NB: Pour initialiser correctement notre algo, il nous faut au moins 1 saison complète. Sachez qu’il existe des méthodes d’initialisation pour des séries non-régulières (il nous manque des points quoi), mais ça, c’est un autre sujet. Il va nous falloir aussi essayer avec plusieurs valeurs pour Latex formula afin d’obtenir un taux d’erreur (MSE) le plus petit possible.

C’est ici que ça va demander un petit peu de calcul et de réflection. Beh oui, fallait bien y venir…

Calcul de la tendance initiale

On va commencer par calculer la tendance moyenne. Evidemment, c’est plus facile si nous avons au moins 2 saisons complètes, soit Latex formula (souviens toi, Latex formula c’est la période, dans notre exemple Latex formula).

Latex formula

initialtrend

Valeurs initiales des indices de saisonnalité

Grosso modo, ce que nous voulons faire, c’est:

  1. Calculer les niveaux moyens pour chacune des saisons observées et qu’on va appeler Latex formula pour Average (moyenne en anglais) et où Latex formula:

    Latex formula

  2. Diviser chaque valeur observée par la moyenne de la saison dans laquelle cette valeur se trouve:

    Latex formula

  3. Faire la moyenne des périodes à travers les saisons observées:

    Latex formula

initialseasonnalcomponents

Notre algo

tripeexponentialsmoothing

Notez l’argument “nPredictions” qui indique le nombre de points que nous voulons prédire.


En pratique

Calcul de la tendance initiale

Une saison = 1 an, la période Latex formula.

Latex formula

Latex formula

Latex formula

Calcul des indices saisonniers initiaux

Latex formula

Ce qui nous donne:

Latex formula

Nos constantes de lissage

Pas de formule magique ici, on va chercher les valeurs qui vont donner le plus petit taux d’erreur possible. A titre indicatif voici ce que j’ai utilisé:

Latex formula

Notre visu:

chart

Et voilà, encore une victoire de canard!

smartduck

Karine de Pontevès
Karine de Pontevès

Réagissez à cette article

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  • Verrrrrryyyy nice.

    Pour un cas comme ça j’aurais directement sorti l’artillerie lourde avec un Fourier. C’est bien de voir des approches plus simples. Merci Karine !