8.3 Metodi che utilizzano la stagionalità

Holt (1957) e Winters (1960) hanno esteso il metodo di Holt per catturare la stagionalità. Il metodo stagionale di Holt-Winters comprende l’equazione di previsione e tre equazioni di lisciamento, una per il livello \(\ell_t\), una per il trend \(b_t\) e una per la componente stagionale \(s_t\), con i corrispondenti parametri di lisciamento \(\alpha\), \(\beta^*\) e \(\gamma\). Si utilizza \(m\) per indicare il periodo della stagionalità, cioè il numero di stagioni in un anno. Ad esempio, \(m=4\) per i dati trimestrali, e \(m=12\) per i dati mensili.

Ci sono due varianti di questo metodo che differiscono nella natura della componente stagionale. Il metodo additivo è preferibile quando le variazioni stagionali sono approssimativamente costanti lungo la serie, mentre il metodo moltiplicativo è preferibile quando le variazioni stagionali cambiano proporzionalmente al livello della serie. Con il metodo additivo, la componente stagionale è espressa in termini assoluti nella scala della serie osservata, e nell’equazione di livello la serie è destagionalizzata sottraendo la componente stagionale. All’interno di ogni anno, la componente stagionale sommerà approssimativamente a zero. Con il metodo moltiplicativo, la componente stagionale è espressa in termini relativi (percentuali), e la serie viene destagionalizzata dividendo per la componente stagionale. All’interno di ogni anno, la componente stagionale sommerà circa ad \(m\).

Metodo additivo di Holt-Winters

La forma per componenti per il metodo additivo è: \[\begin{align*} \hat{y}_{t+h|t} &= \ell_{t} + h \, b_{t} + s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha \, (y_{t} - s_{t-m}) + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 - \beta^*) \, b_{t-1}\\ s_{t} &= \gamma \, (y_{t}-\ell_{t-1}-b_{t-1}) + (1-\gamma) \, s_{t-m}, \end{align*}\] dove \(k\) è la parte intera di \((h-1)/m\), che assicura che le stime degli indici stagionali usati per la previsione provengano dall’ultimo anno del campione. L’equazione del livello si presenta come una media ponderata tra l’osservazione destagionalizzata \((y_{t} - s_{t-m})\) e la previsione non stagionale \((\ell_{t-1}+b_{t-1})\) per il tempo \(t\). L’equazione del trend è identica al metodo di Holt lineare. L’equazione della stagionalità mostra una media ponderata tra l’indice stagionale corrente, \((y_{t}-\ell_{t-1}-b_{t-1})\), e l’indice stagionale della stessa stagione dell’anno precedente (cioè \(m\) periodi di tempo prima).

L’equazione per la componente stagionale è spesso espressa come \[ s_{t} = \gamma^* (y_{t}-\ell_{t})+ (1-\gamma^*)s_{t-m}. \] Se si sostituisce ad \(\ell_t\) l’espressione fornita dall’equazione di lisciamento per il livello della forma per componenti di cui sopra, si ottiene \[ s_{t} = \gamma^*(1-\alpha) (y_{t}-\ell_{t-1}-b_{t-1})+ [1-\gamma^*(1-\alpha)]s_{t-m}, \] che è identica all’equazione di lisciamento per la componente stagionale che si sta specificando qui, con \(\gamma=\gamma^*(1-\alpha)\). L’usuale restrizione sui parametri è \(0\le\gamma^*\le1\), che si traduce in \(0\le\gamma\le 1-\alpha\).

Metodo moltiplicativo di Holt-Winters

La forma per componenti per il metodo moltiplicativo è: \[\begin{align*} \hat{y}_{t+h|t} &= (\ell_{t} + h \, b_{t}) \,s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha \, \frac{y_{t}}{s_{t-m}} + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ b_{t} &= \beta^*(\ell_{t}-\ell_{t-1}) + (1 - \beta^*) \, b_{t-1} \\ s_{t} &= \gamma \, \frac{y_{t}}{(\ell_{t-1} + b_{t-1})} + (1 - \gamma) \, s_{t-m}. \end{align*}\]

Esempio: Viaggi con pernottamenti interni in Australia

Si applica ora il metodo di Holt-Winters con stagionalità sia additiva che moltiplicativa14 per prevedere i pernottamenti trimestrali dei visitatori in Australia effettuati dai turisti nazionali. La figura 8.7 mostra i dati dal 1998–2017, e le previsioni per il 2018–2020. I dati mostrano un ovvio andamento stagionale, con picchi osservati nel trimestre di marzo di ogni anno, corrispondente all’estate australiana.

aus_holidays <- tourism %>%
  filter(Purpose == "Holiday") %>%
  summarise(Trips = sum(Trips)/1e3)
fit <- aus_holidays %>%
  model(
    additive = ETS(Trips ~ error("A") + trend("A") +
                                                season("A")),
    multiplicative = ETS(Trips ~ error("M") + trend("A") +
                                                season("M"))
  )
fc <- fit %>% forecast(h = "3 years")
fc %>%
  autoplot(aus_holidays, level = NULL) +
  labs(title="Turismo interno australiano",
       x = "Trimestre",
       y="Viaggi con pernottamenti (milioni)") +
  guides(colour = guide_legend(title = "Previsione"))
Previsione dei pernottamenti in Australia usando il metodo di Holt-Winters con stagionalità additiva e moltiplicativa.

Figura 8.7: Previsione dei pernottamenti in Australia usando il metodo di Holt-Winters con stagionalità additiva e moltiplicativa.

Tabella 8.3: Applicazione del metodo di Holt-Winters con stagionalità additiva per prevedere il turismo interno in Australia. Si noti che la componente stagionale additiva somma approssimativamente a zero. I parametri di lisciamento sono \(\alpha = 0.2620\), \(\beta^* = 0.1646\), \(\gamma = 0.0001\) e RMSE \(=0.4169\).
Trimestre Tempo Osservazione Livello Pendenza Stagione Previsione
\(t\) \(y_t\) \(\ell_t\) \(b_t\) \(s_t\) \(\hat{y}_{t+1\vert t}\)
1997 Q1 0 1.5
1997 Q2 1 -0.3
1997 Q3 2 -0.7
1997 Q4 3 9.8 0.0 -0.5
1998 Q1 4 11.8 9.9 0.0 1.5 11.3
1998 Q2 5 9.3 9.9 0.0 -0.3 9.7
1998 Q3 6 8.6 9.7 -0.0 -0.7 9.2
1998 Q4 7 9.3 9.8 0.0 -0.5 9.2
2017 Q1 80 12.4 10.9 0.1 1.5 12.3
2017 Q2 81 10.5 10.9 0.1 -0.3 10.7
2017 Q3 82 10.5 11.0 0.1 -0.7 10.3
2017 Q4 83 11.2 11.3 0.1 -0.5 10.6
\(h\) \(\hat{y}_{T+h\vert T}\)
2018 Q1 1 12.9
2018 Q2 2 11.2
2018 Q3 3 11.0
2018 Q4 4 11.2
2019 Q1 5 13.4
2019 Q2 6 11.7
2019 Q3 7 11.5
2019 Q4 8 11.7
2020 Q1 9 13.9
2020 Q2 10 12.2
2020 Q3 11 11.9
2020 Q4 12 12.2
Tabella 8.4: Applicazione del metodo di Holt-Winters con stagionalità moltiplicativa per prevedere il turismo interno in Australia. Si noti che la componente stagionale moltiplicativa somma approssimativamente a \(m=4\). I parametri di lisciamento sono \(\alpha = 0.2237\), \(\beta^* = 0.1360\), \(\gamma = 0.0001\) e RMSE \(=0.4122\).
Trimestre Tempo Osservazione Livello Pendenza Stagione Previsione
\(t\) \(y_t\) \(\ell_t\) \(b_t\) \(s_t\) \(\hat{y}_{t+1\vert t}\)
1997 Q1 0 1.2
1997 Q2 1 1.0
1997 Q3 2 0.9
1997 Q4 3 10.0 -0.0 0.9
1998 Q1 4 11.8 10.0 -0.0 1.2 11.6
1998 Q2 5 9.3 9.9 -0.0 1.0 9.7
1998 Q3 6 8.6 9.8 -0.0 0.9 9.2
1998 Q4 7 9.3 9.8 -0.0 0.9 9.2
2017 Q1 80 12.4 10.8 0.1 1.2 12.6
2017 Q2 81 10.5 10.9 0.1 1.0 10.6
2017 Q3 82 10.5 11.1 0.1 0.9 10.2
2017 Q4 83 11.2 11.3 0.1 0.9 10.5
\(h\) \(\hat{y}_{T+h\vert T}\)
2018 Q1 1 13.3
2018 Q2 2 11.2
2018 Q3 3 10.8
2018 Q4 4 11.1
2019 Q1 5 13.8
2019 Q2 6 11.7
2019 Q3 7 11.3
2019 Q4 8 11.6
2020 Q1 9 14.4
2020 Q2 10 12.2
2020 Q3 11 11.7
2020 Q4 12 12.1

Le applicazioni di entrambi i metodi (con stagionalità additiva e moltiplicativa) sono presentate rispettivamente nelle tabelle 8.3 e 8.4. Poiché entrambi i metodi hanno esattamente lo stesso numero di parametri da stimare, è possibile confrontare l’RMSE sui dati del training set di entrambi i modelli. In questo caso, il metodo con stagionalità moltiplicativa si adatta ai dati leggermente meglio.

Le componenti stimate per entrambi i modelli sono tracciati in figura 8.8. Il piccolo valore di \(\gamma\) per il modello moltiplicativo denota che la componente stagionale difficilmente cambia nel tempo. Il piccolo valore di \(\beta^{*}\) indica invece che la componente di pendenza difficilmente cambia nel tempo (si confrontino le scale verticali delle componenti di pendenza e di livello).

Componenti stimate per il metodo di Holt-Winters con componenti stagionali additiva e moltiplicativa.

Figura 8.8: Componenti stimate per il metodo di Holt-Winters con componenti stagionali additiva e moltiplicativa.

Metodo di Holt-Winters smorzato

Si può utilizzare lo smorzamento sia nella versione additiva sia in quella moltiplicativa del metodo di Holt-Winters. Un metodo che spesso fornisce previsioni accurate e robuste per i dati stagionali è il metodo di Holt-Winters con trend smorzato e stagionalità moltiplicativa: \[\begin{align*} \hat{y}_{t+h|t} &= \left[\ell_{t} + (\phi+\phi^2 + \dots + \phi^{h}) \, b_{t}\right]s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha \, (y_{t} / s_{t-m}) + (1 - \alpha)(\ell_{t-1} + \phi \, b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 - \beta^*) \, \phi \, b_{t-1} \\ s_{t} &= \gamma \, \frac{y_{t}}{(\ell_{t-1} + \phi \, b_{t-1})} + (1 - \gamma) \, s_{t-m}. \end{align*}\]

Esempio: Metodo di Holt-Winters con dati giornalieri

Il metodo di Holt-Winters può anche essere usato per dati di tipo giornaliero, dove il periodo stagionale è \(m=7\), e l’unità di tempo appropriata per \(h\) è in giorni. Si prevede qui il traffico pedonale in un’affollata stazione ferroviaria di Melbourne nel luglio 2016.

sth_cross_ped <- pedestrian %>%
  filter(Date >= "2016-07-01",
         Sensor == "Southern Cross Station") %>%
  index_by(Date) %>%
  summarise(Count = sum(Count)/1000)
sth_cross_ped %>%
  filter(Date <= "2016-07-31") %>%
  model(
    hw = ETS(Count ~ error("M") + trend("Ad") + season("M"))
  ) %>%
  forecast(h = "2 weeks") %>%
  autoplot(sth_cross_ped %>% filter(Date <= "2016-08-14")) +
  labs(title = "Traffico giornaliero: Southern Cross",
       y="Pedoni ('000)", x = "Data")
Previsioni del traffico pedonale giornaliero nella stazione ferroviaria Southern Cross, Melbourne.

Figura 8.9: Previsioni del traffico pedonale giornaliero nella stazione ferroviaria Southern Cross, Melbourne.

Chiaramente il modello ha identificato il modello stagionale settimanale e la tendenza all’aumento alla fine dei dati, e le previsioni sono molto vicine ai dati del test set.

Bibliografia

Holt, C. E. (1957). Forecasting seasonals and trends by exponentially weighted averages (O.N.R. Memorandum No. 52). Carnegie Institute of Technology, Pittsburgh USA. [DOI]
Winters, P. R. (1960). Forecasting sales by exponentially weighted moving averages. Management Science, 6(3), 324–342. [DOI]

  1. L’implementazione utilizza la stima di massima verosimiglianza come descritto nel paragrafo 8.6, mentre Holt e Winters originariamente minimizzavano la somma degli errori al quadrato. Per la stagionalità moltiplicativa, questo porta a stime dei parametri leggermente diverse. L’ottimizzazione della somma degli errori quadratici può essere ottenuta impostando opt_crit="mse" in ETS().↩︎