13.1 Dati settimanali, giornalieri e infra-giornalieri

I dati a frequenza settimanale, giornaliera e infra-giornaliera, sia pure per ragioni diverse, possono presentare alcuni problemi.

Dati settimanali

Lavorare con dati settimanali è difficile perché il periodo stagionale (il numero di settimane in un anno) è grande e, per di più, non è un numero intero. Infatti, il numero medio di settimane in un anno è 52.18. La maggior parte dei metodi che sono stati considerati richiede che il periodo stagionale sia un numero intero. In ogni caso, anche approssimandolo a 52, la maggior parte di questi metodi non riuscirebbe a trattare adeguatamente un periodo stagionale così grande.

L’approccio più semplice è di utilizzare una decomposizione STL insieme ad qualche metodo non stagionale da applicarsi alla serie destagionalizzata (come discusso nel Capitolo 3). Di seguito, un esempio di utilizzo di dati settimanali della fornitura di benzina per motori negli USA (in milioni di barili al giorno) da Febbraio 1991 a Maggio 2005.

my_dcmp_spec <- decomposition_model(
  STL(Barrels),
  ETS(season_adjust ~ season("N"))
)
us_gasoline %>%
  model(stl_ets = my_dcmp_spec) %>%
  forecast(h = "2 years") %>%
  autoplot(us_gasoline) +
  labs(y = "Milioni di barili al giorno",
       title = "Produzione settimanale statunitense di benzina")
Previsione settimanale della fornitura di benzina negli USA utilizzando una decomoposizione STL e un modello ETS per la serie destagionalizzata.

Figura 13.1: Previsione settimanale della fornitura di benzina negli USA utilizzando una decomoposizione STL e un modello ETS per la serie destagionalizzata.

Un approccio alternativo è quello di utilizzare un modello di regressione dinamica armonica , come discusso nella Sezione 10.5. Nell’esempio che segue, il numero di termini di Fourier è stato selezionato minimizzando il criterio AICc. Anche l’ordine del modello ARIMA è stato selezionato minimzzando AICc, sebbene ciò si stato fatto all’interno della funzione ARIMA(). Specifichiamo PDQ(0,0,0) per evitare che ARIMA() cerchi di trattare la stagionalità utilizzando componenti ARIMA stagionali.

gas_dhr <- us_gasoline %>%
  model(dhr = ARIMA(Barrels ~ PDQ(0, 0, 0) + fourier(K = 6)))
gas_dhr %>%
  forecast(h = "2 years") %>%
  autoplot(us_gasoline) +
  labs(y = "Milioni di barili al giorno",
       title = "Produzione settimanale USA di benzina")
Previsioni della produzione USA di benzina utilizzando un modello di regressione armonica.

Figura 13.2: Previsioni della produzione USA di benzina utilizzando un modello di regressione armonica.

Il modello stimato ha 6 coppie di termini di Fourier e può essere scritto come \[ y_t = bt + \sum_{j=1}^{6} \left[ \alpha_j\sin\left(\frac{2\pi j t}{52.18}\right) + \beta_j\cos\left(\frac{2\pi j t}{52.18}\right) \right] + \eta_t \] dove \(\eta_t\) è un processo ARIMA(0,1,1). Dato che \(\eta_t\) è non stazionario, il modello è stato stimato sulle variabili differenziate in entrambi i lati di questa equazione. Ci sono 12 parametri per la componente stagionale, mentre il numero totale di gradi di libertà è 14 (gli altri due provengono dal parametro MA e dal parametro di drift).

In generale, l’approccio STL è preferibile quando la stagionalità cambia nel tempo. L’approccio basato sulla regressione armonica dinamica è preferibile quando ci sono delle covariate che possono essere utilmente considerate come predittori perché queste possono essere aggiunte come regressori addizionali.

Dati giornalieri e infra-giornalieri

I dati giornalieri e infra-giornaleri (such as hourly) pongono altri tipi di problemi — spesso implicano la presenza di stagionalità multiple, e questo richiede di utilizzare un metodo capace di gestire un tipo di stagionalità così complessa.

Ovviamente, se la serie storica è relativamente corta, cosicché è presente solo un tipo di stagionalità, allora è possibile usare uno dei metodi già descritti nei precedenti capitoli (ad esempio, ETS o un modell ARIMA stagionale). Ma quando la serie storica è sufficientemente lunga da rendere visibili alcune di periodi stagionali più lunghi, sarà necessario usare STL, una regressione armonica dinamica o Prophet, come discusso in Sezione 12.1.

Tuttavia, questi metodi asssumono un stagionalità regolare. Modellare la stagionalità associata ad eventi mobili come la Pasqua, la fine del Ramadan, o il Capodanno cinese, è più difficile. Perfino con dati mensili ciò può essere complicato, perché i periodi festivi possono cadere in Marzo o in Aprile (per la Pasqua), in Gennaio o Febbraio (per il Capodanno cinese), o in qualsiasi momento dell’anno (per la fine del Ramadan).

Il modo migliore di trattare gli effetti delle festività mobili è includere delle variabili dummy nel modello. Ciò è possibile con le funzioni ARIMA() o prophet(), per esempio, ma non con ETS(). Infatti, prophet() ha un’opzione holiday() speciale per includere facilmente gli effettivi delle festività.