13.8 Previsione su un insieme di apprendimento e su un insieme di verifica

Solitamente, si calcolano previsione ad un passo su un insieme di dati di apprendimento (i “valori stimati”) e previsioni a più passi su un isieme di verifica. Tuttavia, qualche volta, si vuole calcolare previsioni a più passi sull’insieme di apprendimento, o previsioni ad un passo sull’insieme di verifica.

Previsioni a più passi sull’insieme di apprendimento

Normalmente, i valori stimati sono le previsioni ad un passo sull’insieme di apprendimento (si veda la Sezione 5.3), ma un concetto simile può essere applicato alle previsioni a più passi. Questo metodo viene illustrato in riferimento ad un modello ARIMA per la spesa di cibo da asporto in Australia. Gli ultimi cinque anni vengono utilizzati come insieme di verifica, e le previsioni sono mostrate in Figura 13.9.

training <- auscafe %>% filter(year(Month) <= 2013)
test <- auscafe %>% filter(year(Month) > 2013)
cafe_fit <- training %>%
  model(ARIMA(log(Turnover)))
cafe_fit %>%
  forecast(h = 60) %>%
  autoplot(auscafe) +
  labs(title = "Spesa per cibo in Australia",
       y = "$ (miliardi)")
Previsioni da un modello ARIMA adattato alla spesa mensile australiana, per caffè, ristoranti e servizi di cibo da asporto.

Figura 13.9: Previsioni da un modello ARIMA adattato alla spesa mensile australiana, per caffè, ristoranti e servizi di cibo da asporto.

La funzione fitted() ha un argomento h che permette di ottenere “valori stimati” ad \(h\) passi sull’insieme di apprendimento. La Figura 13.10 contiene il grafico delle previsioni a 12 passi (un anno) per l’insieme di apprendimento. Poiché il modello contiene sia un differenza stagionale (al ritardo 12) che una differenza prima (al ritardo 1), non è possibile calcolare queste previsioni per le prime osservazioni.

fits12 <- fitted(cafe_fit, h = 12)
training %>%
  autoplot(Turnover) +
  autolayer(fits12, .fitted, col = "#D55E00") +
  labs(title = "Spesa per cibo in Australia",
       y = "$ (miliardi)")
Valori stimati a 12 passi da un modello ARIMA per i dati del caffè australiano.

Figura 13.10: Valori stimati a 12 passi da un modello ARIMA per i dati del caffè australiano.

Previsioni ad un passo sull’insieme di verifica

È una pratica comune stimare un modello utilizzando i dati su un insieme di apprendimento e poi valutare la sua performance su un insieme di verifica. Il modo con cui si procede si solito implica che i confronti sull’insieme di verifica avvengano con differenti orizzonti previsi. Nell’esempio precedente, sono state usate le prime sessanta osservazioni per l’insieme di verifica, e il modello è stato stimato sui dati nell’insieme di apprendimento. Quindi si avranno errori di previsione a 1 paso, a 2 passi,…,a 60 passi in avanti. Normalmente, la varianza dell’errore di previsione cresce con l’aumentare dell’orizzonte previsivo e, quindi, se se si fa una semplice media degli errori assoluti o al quadrato nell’insieme di verifica, si stanno combinando insieme risultati con varianze differenti.

Una soluzione per questo problema è di considerare errori un passo in avanti sull’insieme di verifica. Cioè, tutti i parametri vengono ancora stimati sull’insieme di apprendimento, ma quando si calcolano le previsioni per l’insieme di verifica, utilizziamo tutti i dati precedenti a ciascuna osservazione, sia nell’insieme di addestramento che in quello di verifica. Quindi i nostri dati di training sono per i tempi \(1,2,\dots,T-60\). Stimiamo il modello su questi dati, ma poi calcoliamo \(\hat{y}_{T-60+h|T-61+h}\), per \(h=1,\dots,T-1\). Poiché i dati di prova non sono utilizzati per stimare i parametri, questo ci dà ancora una previsione “onesta”.

Usando lo stesso modello ARIMA usato sopra, ora applichiamo il modello ai dati di test.

cafe_fit %>%
  refit(test) %>%
  accuracy()
#> # A tibble: 1 × 10
#>   .model              .type    ME  RMSE   MAE    MPE  MAPE  MASE RMSSE    ACF1
#>   <chr>               <chr> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>   <dbl>
#> 1 ARIMA(log(Turnover… Trai… -2.49  20.5  15.4 -0.169  1.06 0.236 0.259 -0.0502

Si noti che, in questo caso, il modello non viene ristimato ogni volta. Invece, il modello ottenuto precedentemente (e memorizzato come cafe_fit) viene applicato ai dati di verifica. Dato che il modello non viene ristimato, i “residui” così ottenuti sono, in realtà, errori di previsione ad un passo. Di conseguenza, i risultati prodotti dal comando accuracy() si riferiscono all’insieme di verifica anche se sull’output si fa riferimento all’insieme di apprendimento (“Training set”). Questo approccio può essere utilizzato per confrontare le previsioni ad un passo ottenute con modelli differenti.