Contrairement au lissage exponentiel simple qui ne s’applique qu’aux séries temporelles sans tendance, le lissage exponentiel double (LED) permet d’établir une prévision lorsque la série présente une tendance.
Cet article a pour objectif de présenter une implémentation possible du lissage exponentiel double en Javascript. Il fait suite au post sur le lissage exponentiel simple, et portera les mêmes points :
- Implémentation du LED en Javascript;
- Calcul de la valeur optimale d'alpha;
- Utilisation de la librairie HighchartJs pour générer un graphique.
Nos données
Nous utiliserons les données suivantes :
Mois | CA(k€) |
---|---|
Janvier | 112 |
Février | 108 |
Mars | 117 |
Avril | 122 |
Mai | 119 |
Juin | 127 |
Juillet | 132 |
Août | 131 |
Septembre | 139 |
Octobre | 145 |
Novembre | 148 |
Décembre | 150 |
Janvier | ? |
Février | ? |
L'objectif du lissage exponentiel double sera de déterminer la valeur du chiffre d'affaires pour le dernier mois de Janvier et de Février. La valeur de cette prédiction dépend du paramètre alpha. Nous expliquerons donc également comment sélectionner la valeur optimale d'alpha.
Lissage exponentiel double
Comme son nom l’indique, nous allons effectuer deux lissages : le premier sur les données d’origines, le second portant sur les données issues du premier lissage.
Une fois les deux lissages effectués, nous calculons les valeurs de deux coefficients (a et b). La valeur de a correspond au coefficient directeur et est égale à (alpha/(1-alpha))*(premier_lissage - second_lissage).
B correspond à une sorte d’ordonnée à l’origine locale et est égale à 2*premier_lissage - second_lissage.
Concernant l’initialisation, plusieurs solutions sont possibles (moyenne, valeur initiale etc.). Pour plus d’informations, n’hésitez pas à consulter l’excellent site www.jybaudot.fr
Trouver la valeur optimale d'alpha
Pour trouver la meilleure valeur du paramètre alpha, nous cherchons à minimiser l’erreur quadratique. Celle-ci est égale à 1/(n-1)*(valeur[1]-prediction[1] + valeur[2]-prediction[2] + … + valeur[n]-prediction[n]).
En Javascript cela donne :
Pour trouver la meilleure valeur de alpha, on itère entre 0 et 1 avec un pas passé en paramètre à notre fonction. L’objectif est de garder la valeur d’alpha permettant de minimiser l’erreur quadratique.
Une fois la valeur optimale de alpha trouvée, il suffit de générer les prédictions :
Représentation graphique avec HighchartJs
Nous allons utiliser la librairie HighchartJs afin de tracer nos deux séries (celle réalisée et celle prédite). Pour cela il suffit d’inclure Jquery, ainsi que le fichier Highcharts.js. Ensuite, nous insérons le code suivant, en modifiant les différents champs en fonction de nos besoins :
Nous obtenons le résultat ci-dessous :