Serie storica - Livellamento esponenziale
In questo capitolo, parleremo delle tecniche coinvolte nel livellamento esponenziale delle serie temporali.
Livellamento esponenziale semplice
Il livellamento esponenziale è una tecnica per smussare le serie temporali univariate assegnando pesi decrescenti esponenzialmente ai dati in un periodo di tempo.
Matematicamente, il valore della variabile al tempo 't + 1' dato valore al tempo t, y_ (t + 1 | t) è definito come -
$$ y_ {t + 1 | t} \: = \: \ alpha y_ {t} \: + \: \ alpha \ lgroup1 - \ alpha \ rgroup y_ {t-1} \: + \ alpha \ lgroup1- \ alpha \ rgroup ^ {2} \: y_ {t-2} \: + \: ... + y_ {1} $$
dove $ 0 \ leq \ alpha \ leq1 $ è il parametro di livellamento, e
$ y_ {1}, ...., y_ {t} $ sono valori precedenti del traffico di rete ai tempi 1, 2, 3,…, t.
Questo è un metodo semplice per modellare una serie temporale senza una chiara tendenza o stagionalità. Ma il livellamento esponenziale può essere utilizzato anche per le serie temporali con tendenza e stagionalità.
Triplo livellamento esponenziale
Il metodo Triple Exponential Smoothing (TES) o Holt's Winter applica il livellamento esponenziale tre volte: livellamento $ l_ {t} $, livellamento del trend $ b_ {t} $ e livellamento stagionale $ S_ {t} $, con $ \ alpha $ , $ \ beta ^ {*} $ e $ \ gamma $ come parametri di livellamento con "m" come frequenza della stagionalità, ovvero il numero di stagioni in un anno.
A seconda della natura della componente stagionale, TES ha due categorie:
Holt-Winter's Additive Method - Quando la stagionalità è di natura additiva.
Holt-Winter’s Multiplicative Method - Quando la stagionalità è di natura moltiplicativa.
Per le serie temporali non stagionali, abbiamo solo il livellamento della tendenza e il livellamento del livello, chiamato metodo di tendenza lineare di Holt.
Proviamo ad applicare il triplo livellamento esponenziale ai nostri dati.
In [316]:
from statsmodels.tsa.holtwinters import ExponentialSmoothing
model = ExponentialSmoothing(train.values, trend= )
model_fit = model.fit()
In [322]:
predictions_ = model_fit.predict(len(test))
In [325]:
plt.plot(test.values)
plt.plot(predictions_[1:1871])
Fuori [325]:
[<matplotlib.lines.Line2D at 0x1eab00f1cf8>]
Qui, abbiamo addestrato il modello una volta con il set di addestramento e poi continuiamo a fare previsioni. Un approccio più realistico consiste nel riaddestrare il modello dopo una o più fasi temporali. Quando otteniamo la previsione per il tempo 't + 1' dai dati di allenamento 'til time' t ', la previsione successiva per il tempo' t + 2 'può essere effettuata utilizzando i dati di allenamento' til time 't + 1' come valore effettivo il valore a 't + 1' sarà quindi noto. Questa metodologia per fare previsioni per uno o più passaggi futuri e quindi riaddestrare il modello è chiamata previsione mobile o convalida del passo avanti.