Série chronologique - Lissage exponentiel

Dans ce chapitre, nous parlerons des techniques impliquées dans le lissage exponentiel des séries temporelles.

Lissage exponentiel simple

Le lissage exponentiel est une technique de lissage de séries chronologiques univariées en attribuant des poids décroissants de façon exponentielle aux données sur une période de temps.

Mathématiquement, la valeur de la variable au temps 't + 1' donnée valeur au temps t, y_ (t + 1 | t) est définie comme -

$$ y_ {t + 1 | t} \: = \: \ alpha y_ {t} \: + \: \ alpha \ lgroup1 - \ alpha \ rgroup y_ {t-1} \: + \ alpha \ lgroup1- \ alpha \ rgroup ^ {2} \: y_ {t-2} \: + \: ... + y_ {1} $$

où, $ 0 \ leq \ alpha \ leq1 $ est le paramètre de lissage, et

$ y_ {1}, ...., y_ {t} $ sont les valeurs précédentes du trafic réseau aux instants 1, 2, 3,…, t.

Il s'agit d'une méthode simple pour modéliser une série chronologique sans tendance ni saisonnalité claire. Mais le lissage exponentiel peut également être utilisé pour les séries chronologiques avec tendance et saisonnalité.

Lissage exponentiel triple

Le triple lissage exponentiel (TES) ou la méthode Holt's Winter, applique un lissage exponentiel trois fois - lissage de niveau $ l_ {t} $, lissage de tendance $ b_ {t} $ et lissage saisonnier $ S_ {t} $, avec $ \ alpha $ , $ \ beta ^ {*} $ et $ \ gamma $ comme paramètres de lissage avec 'm' comme fréquence de saisonnalité, c'est-à-dire le nombre de saisons dans une année.

Selon la nature de la composante saisonnière, TES a deux catégories -

  • Holt-Winter's Additive Method - Lorsque la saisonnalité est de nature additive.

  • Holt-Winter’s Multiplicative Method - Lorsque la saisonnalité est de nature multiplicative.

Pour les séries chronologiques non saisonnières, nous n'avons que le lissage de tendance et le lissage de niveau, appelé méthode de tendance linéaire de Holt.

Essayons d'appliquer un triple lissage exponentiel sur nos données.

Dans [316]:

from statsmodels.tsa.holtwinters import ExponentialSmoothing

model = ExponentialSmoothing(train.values, trend= )
model_fit = model.fit()

Dans [322]:

predictions_ = model_fit.predict(len(test))

Dans [325]:

plt.plot(test.values)
plt.plot(predictions_[1:1871])

Sortie [325]:

[<matplotlib.lines.Line2D at 0x1eab00f1cf8>]

Ici, nous avons entraîné le modèle une fois avec un ensemble d'entraînement, puis nous continuons à faire des prédictions. Une approche plus réaliste consiste à reformer le modèle après un ou plusieurs pas de temps. Comme nous obtenons la prédiction pour le temps 't + 1' à partir des données d'entraînement 'jusqu'à l'heure' t ', la prochaine prédiction pour le temps' t + 2 'peut être faite en utilisant les données d'apprentissage' jusqu'à l'heure 't + 1' comme valeur réelle la valeur à 't + 1' sera alors connue. Cette méthodologie consistant à faire des prédictions pour une ou plusieurs étapes futures, puis à réentraîner le modèle est appelée prévision glissante ou validation d'avance.