4.3 Caratteristiche della decomposizione STL

La decomposizione STL discussa in dettaglio nel Capitolo 3 costituisce il fondamento di molte altre caratteristiche delle serie.

La decomposizione delle serie storiche può essere utilizzata per misurare quanto le componenti del trend e della stagionalità influiscono su di esse. La classica decomposizione (additiva) in trend e stagionalità è descritta dalla seguente relazione \[ y_t = T_t + S_{t} + R_t, \] dove \(T_t\) rappresenta la componente trend (lisciata, o smoothed), \(S_{t}\) è la componente stagionale ed \(R_t\) rappresenta la componente residuale. Se i dati presentano una forte componente trend, allora la serie destagionalizzata (ovvero la serie epurata della sua componente stagionale) ha una maggiore variabilità rispetto alla componente residuale: il rapporto Var\((R_t)\)/Var\((T_t+R_t)\) fornisce quindi un valore relativamente piccolo. Al contrario, le due varianze appena mostrate sono approssimativamente simili (quindi il rapporto tende ad uno) nel caso in cui i dati hanno una componente trend trascurabile. A partire da tali considerazioni, è possibile misurare l’impatto della componente trend come: \[ F_T = \max\left(0, 1 - \frac{\text{Var}(R_t)}{\text{Var}(T_t+R_t)}\right). \] Tale indice, definito nell’intervallo \([0,1]\), fornisce una misura di quanto il trend influisce sulla serie originaria. Dato che la varianza della componente residuale potrebbe occasionalmente essere maggiore della varianza della serie destagionalizzata, il valore minimo di \(F_T\) viene posto pari a zero.

La misura dell’impatto della componente stagionale può essere definita in maniera simile se si utilizzano i dati detrendizzati, ovvero se dalla serie storica viene rimossa la sua componente trend: \[ F_S = \max\left(0, 1 - \frac{\text{Var}(R_t)}{\text{Var}(S_{t}+R_t)}\right). \] Anche questo indice è definito nell’intervallo \([0,1]\). In particolare, una serie storica che presenta \(F_S\) approssimativamente pari a 0 è dotata di una stagionalità debole o nulla; al contrario, se i dati hanno una componente stagionale forte, si ha che Var\((R_t)\) è più piccola rispetto a Var\((S_{t}+R_t)\) e di conseguenza \(F_S \rightarrow 1\).

Gli indici \(F_T\) ed \(F_S\) sono utili nel caso in cui si debbano analizzare molteplici serie storiche con l’obiettivo di stabilire quali tra queste viene influenzata maggiormente dalla componente trend oppure stagionale. Attraverso l’utilizzo della funzione feat_stl() è possibile analizzare una serie di indici tipici della decomposizione STL, inclusi quelli appena introdotti.

tourism %>%
  features(Trips, feat_stl)
#> # A tibble: 304 × 12
#>    Region         State          Purpose trend_strength seasonal_strength_year
#>    <chr>          <chr>          <chr>            <dbl>                  <dbl>
#>  1 Adelaide       South Austral… Busine…          0.464                  0.407
#>  2 Adelaide       South Austral… Holiday          0.554                  0.619
#>  3 Adelaide       South Austral… Other            0.746                  0.202
#>  4 Adelaide       South Austral… Visiti…          0.435                  0.452
#>  5 Adelaide Hills South Austral… Busine…          0.464                  0.179
#>  6 Adelaide Hills South Austral… Holiday          0.528                  0.296
#>  7 Adelaide Hills South Austral… Other            0.593                  0.404
#>  8 Adelaide Hills South Austral… Visiti…          0.488                  0.254
#>  9 Alice Springs  Northern Terr… Busine…          0.534                  0.251
#> 10 Alice Springs  Northern Terr… Holiday          0.381                  0.832
#> # ℹ 294 more rows
#> # ℹ 7 more variables: seasonal_peak_year <dbl>, seasonal_trough_year <dbl>,
#> #   spikiness <dbl>, linearity <dbl>, curvature <dbl>, stl_e_acf1 <dbl>,
#> #   stl_e_acf10 <dbl>

Le colonne denominate trend_strength e seasonal_strength forniscono rispettivamente i valori degli indici \(F_T\) ed \(F_S\). Attraverso una rappresentazione grafica è possibile identificare agevolmente quali serie sono maggiormente condizionate dal trend e quali sono le più stagionali.

tourism %>%
  features(Trips, feat_stl) %>%
  ggplot(aes(x = trend_strength, y = seasonal_strength_year,
             col = Purpose, shape = Purpose)) +
  geom_point() +
  facet_wrap(vars(State))
Impatto della stagionalità rispetto al trend sulle serie del turismo.

Figura 4.1: Impatto della stagionalità rispetto al trend sulle serie del turismo.

Non sorprende osservare che le serie storiche con una maggiore connotazione stagionale sono quelle relative alla categoria vacanze (Holiday), mentre le serie che presentano una componente di trend più marcata sono quelle associate all’area geografica del Western Australia e di Victoria. Una volta identificate le serie più rappresentative, queste possono essere esplorate con ulteriori rappresentazioni grafiche.

tourism %>%
  features(Trips, feat_stl) %>%
  filter(
    seasonal_strength_year == max(seasonal_strength_year)
  ) %>%
  left_join(tourism, by = c("State", "Region", "Purpose")) %>%
  ggplot(aes(x = Quarter, y = Trips)) +
  geom_line() +
  facet_grid(vars(State, Region, Purpose))
Serie storica con maggiore stagionalità, dati del turismo australiano.

Figura 4.2: Serie storica con maggiore stagionalità, dati del turismo australiano.

In questo grafico sono quindi mostrati gli andamenti temporali del numero di viaggi per vacanza verso la meta sciistica più popolare dell’Australia.

Come anticipato, la funzione feat_stl() fornisce una serie di indicatori aggiuntivi rispetto a quelli descritti in questo paragrafo. Di seguito sono elencati gli indici disponibili.

  • seasonal_peak_year indica la cadenza dei picchi — quale mese o trimestre contiene la maggiore componente stagionale — fornendo un’informazione sulla natura della stagionalità. Nei dati sul turismo australiano, ad esempio, se il periodo di picco stagionale in una regione è il terzo trimestre, questo significa che i viaggi sono maggiormente concentrati in inverno, mentre un picco nel primo trimestre può suggerire che la regione è più popolare in estate.
  • seasonal_trough_year indica la cadenza delle depressioni — quale mese o trimestre contiene la componente stagionale più piccola.
  • spikiness misura la prevalenza di picchi nella componente \(R_t\) della decomposizione STL. Questo indice corrisponde alla varianza leave-one-out di \(R_t\).
  • linearity misura la linearità della componente trend associata alla decomposizione STL. Questo indice si basa sul coefficiente di regressione lineare applicata alla componente trend.
  • curvature rappresenta una misura della curvatura della componente trend. Si basa sul coefficiente di una regressione quadratica ortogonale applicata alla componente trend.
  • stl_e_acf1 è il coefficiente di autocorrelazione di ordine primo della componente residuale.
  • stl_e_acf10 corrisponde alla somma dei quadrati dei primi dieci coefficienti di autocorrelazione della componente residuale.