11.4 La previsione del turismo interno australiano

In questa Sezione vengono calcolate le previsioni per i dati del Turismo australiano descritti nella sezione 11.1. I dati fino alla fine del 2015 verranno usati come insieme di allenamento (training set), riservando i due anni finali (otto trimestri, 2016Q1–2017Q4) all’insieme test (test set) per valutazione. Il codice seguente mostra il processo completo usato per generare previsioni coerenti usando i metodi bottom-up, OLS e MinT.

tourism_full <- tourism %>%
  aggregate_key((State/Region) * Purpose, Trips = sum(Trips))

fit <- tourism_full %>%
  filter(year(Quarter) <= 2015) %>%
  model(base = ETS(Trips)) %>%
  reconcile(
    bu = bottom_up(base),
    ols = min_trace(base, method = "ols"),
    mint = min_trace(base, method = "mint_shrink"),
  )

In questo caso, fit contiene i modelli di base ETS (discussi nel Capitolo 8) per ciascuna serie presente in tourism_full, assieme ai tre metodi per produrre previsioni coerenti come specificato nella funzione reconcile().

fc <- fit %>% forecast(h = "2 years")

L’inserimento dell’opzione fit in forecast() produce previsioni di base e coerenti per tutte le serie della struttura di aggregazione. Le Figure 11.12 e 11.13 rappresentano graficamente le quattro previsioni puntuali per i Pernottamenti australiani totali, disaggregati per stato e per scopo del viaggio, assieme alle osservazioni effettive dell’insieme test.

fc %>%
  filter(is_aggregated(Region), is_aggregated(Purpose)) %>%
  autoplot(
    tourism_full %>% filter(year(Quarter) >= 2011),
    level = NULL
  ) +
  labs(y = "Trips ('000)") +
  facet_wrap(vars(State), scales = "free_y")
Previsioni dei pernottamenti per l'Australia ed i suoi stati nel periodo test 2016Q1--2017Q4.

Figura 11.12: Previsioni dei pernottamenti per l’Australia ed i suoi stati nel periodo test 2016Q1–2017Q4.

fc %>%
  filter(is_aggregated(State), !is_aggregated(Purpose)) %>%
  autoplot(
    tourism_full %>% filter(year(Quarter) >= 2011),
    level = NULL
  ) +
  labs(y = "Trips ('000)") +
  facet_wrap(vars(Purpose), scales = "free_y")
Previsioni dei pernottamenti australiani per scopo del viaggio nel periodo test 2016Q1--2017Q4.

Figura 11.13: Previsioni dei pernottamenti australiani per scopo del viaggio nel periodo test 2016Q1–2017Q4.

Per semplificare la visualizzazione delle differenze, abbiamo incluso solo gli ultimi cinque anni del training set, e abbiamo omesso di visualizzare gli intervalli di previsione. Nella maggior parte dei pannelli, l’aumento nei pernottamenti, specialmente nella seconda metà del test set, è maggiore di quello previsto dalle previsioni puntuali. Ciò si nota in particolare per gli stati orientali di terraferma ACT, New South Wales, Queensland e Victoria, e per tutti gli scopi del viaggio.

L’accuratezza delle previsioni per il test set può essere valutata usando la funzione accuracy(). Alcuni risultati sono sintetizzati nella Tavola 11.2 usando gli indici RMSE e MASE.

Tabella 11.2: Accuratezza delle previsioni dei Pernottamento australiani per il test set 2016Q1–2017Q4.
RMSE
MASE
Base Bottom-up MinT OLS Base Bottom-up MinT OLS
Total 1720.72 3071.11 2157.55 1803.51 1.53 3.17 2.09 1.63
Purpose 533.02 802.68 586.45 513.18 1.33 2.32 1.51 1.25
State 306.85 417.21 329.74 294.66 1.40 1.88 1.45 1.27
Regions 52.64 55.13 47.40 46.95 1.13 1.18 1.02 1.00
Bottom 19.38 19.38 17.97 18.32 0.98 0.98 0.94 1.02
All series 45.96 55.28 45.61 43.19 1.04 1.08 0.98 1.03

Per effetto dell’aggregazione, le scale dimensionali delle serie ai differenti livelli di aggregazione sono parecchio diverse. Si deve pertanto essere cauti quando si confrontano o si calcolano misure di errore che dipendono dalla scala del fenomeno, come il RMSE tra i livelli, perché la serie aggregata avrà ovviamente il maggiore effetto. Confrontiamo pertanto misure d’errore lungo ciascun livello di aggregazione, prima di fornire le misure di errore per tutte le serie nella riga al livello più basso. Si noti che l’RMSE aumenta man mano che si sale dal livello più basso ai livelli superiori.

Il codice seguente genera gli indici di accuratezza per le serie aggregate mostrate nella prima riga della Tavola. Un codice analogo viene usato per valutare le previsioni per gli altri livelli.

fc %>%
  filter(is_aggregated(State), is_aggregated(Purpose)) %>%
  accuracy(
    data = tourism_full,
    measures = list(rmse = RMSE, mase = MASE)
  ) %>%
  group_by(.model) %>%
  summarise(rmse = mean(rmse), mase = mean(mase))
#> # A tibble: 4 × 3
#>   .model  rmse  mase
#>   <chr>  <dbl> <dbl>
#> 1 base   1721.  1.53
#> 2 bu     3071.  3.17
#> 3 mint   2158.  2.09
#> 4 ols    1804.  1.63

Riconciliare le previsioni di base usando OLS e MinT produce previsioni più accurate rispetto a quelle ottenute con l’approccio bottom-up. Si tratta di un risultato che si riscontra comunemente nelle applicazioni, poiché gli approcci di riconciliazione usano informazioni da tutti i livelli della struttura, ottenendo previsioni coerenti più accurate rispetto ai più datati metodi tradizionali, che usano informazione limitata. Inoltre, la riconciliazione solitamente migliora anche le previsioni di base per pressoché tutti i ilivelli.