5.4 Diagnostica sui residui

Un buon metodo di previsione produrrà residui di innovazione con le seguenti proprietà:

  1. I residui di innovazione sono incorrelati. Se esiste correlazione tra i residui di innovazione, allora il modello non ha catturato tutta la struttura dinamica dei dati e ci sono informazioni rimaste nei residui che dovrebbero essere usate nel calcolo delle previsioni.
  2. I residui di innovazione hanno media zero. Se hanno una media diversa da zero, allora le previsioni sono distorte.

Qualsiasi metodo di previsione che non soddisfa queste proprietà può essere migliorato. Tuttavia, ciò non significa che i metodi di previsione che soddisfano queste proprietà non possano essere migliorati. È possibile avere diversi metodi di previsione per lo stesso insieme di dati, tutti che soddisfano queste proprietà. Verificare queste proprietà è importante per vedere se un metodo sta usando tutte le informazioni disponibili, ma non è un buon modo per selezionare un metodo di previsione.

Se una di queste proprietà non è soddisfatta, allora il metodo di previsione può essere modificato per ottenere previsioni migliori. Correggere la distorsione (bias) è facile: se i residui hanno una media \(m\), allora basta sottrarre \(m\) da tutte le previsioni e il problema del bias è risolto. Risolvere il problema della correlazione è più difficile, e verrà trattato nel capitolo 10.

Oltre a queste proprietà essenziali, è utile (ma non necessario) che i residui abbiano anche le seguenti due proprietà.

  1. I residui di innovazione hanno varianza costante. Questa proprietà è nota come “omoscedasticità”.
  2. I residui di innovazione sono distribuiti normalmente.

Queste due proprietà rendono più facile il calcolo degli intervalli di previsione (si veda il paragrafo 5.5 per un esempio). Tuttavia, un metodo di previsione che non soddisfa queste proprietà non può necessariamente essere migliorato. A volte l’applicazione di una trasformazione Box-Cox può aiutare ad ottenere resisui omoschedastici, ma di solito c’è poco che si può fare per assicurare che i residui di innovazione abbiano una varianza costante e una distribuzione normale. È invece necessario un approccio alternativo per ottenere intervalli di previsione. Si mostrerà come trattare i residui di innovazione non normali nel paragrafo 5.5.

Esempio: Previsione dei prezzi di chiusura giornalieri delle azioni di Google

Di seguito si prosegue con l’esempio del prezzo di chiusura giornaliero delle azioni Google giò utilizzato nel paragrafo 5.2. Per i prezzi e gli indici del mercato azionario, il miglior metodo di previsione è spesso il metodo naive. Cioè, ogni previsione è semplicemente uguale all’ultimo valore osservato, o \(\hat{y}_{t} = y_{t-1}\). Quindi, i residui sono semplicemente uguali alla differenza tra osservazioni consecutive:

\[ e_{t} = y_{t} - \hat{y}_{t} = y_{t} - y_{t-1}. \]

Il grafico seguente mostra il prezzo di chiusura giornaliero delle azioni Google per i giorni di negoziazione durante il 2015. Il forte incremento corrisponde al 17 luglio 2015 quando il prezzo è aumentato del 16% a causa dei risultati inaspettatamente forti del secondo trimestre. (L’oggetto google_2015 è stato creato nel paragrafo 5.2.

autoplot(google_2015, Close) +
  labs(y = "$US",
       title = "Prezzi giornalieri azioni Google nel 2015")
Prezzi giornalieri azioni Google nel 2015.

Figura 5.9: Prezzi giornalieri azioni Google nel 2015.

I residui ottenuti dalla previsione di questa serie usando il metodo naive sono mostrati in figura 5.10. Il grande residuo positivo è il risultato dell’inaspettato salto dei prezzi nel luglio 2015.

aug <- google_2015 %>%
  model(NAIVE(Close)) %>%
  augment()
autoplot(aug, .innov) +
  labs(y = "$US",
       title = "Residui dal metodo naive")
Residui dalla previsione sulla serie dei prezzi giornalieri delle azioni Google nel 2015 utilizzando il metodo naive.

Figura 5.10: Residui dalla previsione sulla serie dei prezzi giornalieri delle azioni Google nel 2015 utilizzando il metodo naive.

aug %>%
  ggplot(aes(x = .innov)) +
  geom_histogram() +
  labs(title = "Istogramma dei residui")
Istogramma dei residui ottenuti utilizzando il metodo naive sui prezzi delle azioni di Google. La coda di destra sembra più lunga rispetto a quella di una distribuzione normale.

Figura 5.11: Istogramma dei residui ottenuti utilizzando il metodo naive sui prezzi delle azioni di Google. La coda di destra sembra più lunga rispetto a quella di una distribuzione normale.

aug %>%
  ACF(.innov) %>%
  autoplot() +
  labs(title = "Residui dal metodo naive")
ACF dei residui dal metodo naive applicato ai prezzi delle azioni Google. La mancanza di correlazione suggerisce una buona previsione .

Figura 5.12: ACF dei residui dal metodo naive applicato ai prezzi delle azioni Google. La mancanza di correlazione suggerisce una buona previsione .

Questi grafici mostrano che il metodo naive produce previsioni che sembrano tenere conto di tutte le informazioni disponibili. La media dei residui è vicina allo zero e non c’è una correlazione significativa nella serie dei residui. Il grafico dei residui rispetto al tempo mostra che la variazione dei residui rimane più o meno la stessa per tutti i dati storici, a parte un outlier, e quindi la varianza dei residui può essere trattata come costante. Questo può essere visto anche dall’istogramma dei residui. L’istogramma suggerisce che i residui potrebbero non essere normali — la coda destra sembra un po’ troppo lunga, anche quando l’outlier di luglio viene ignorato. Di conseguenza, le previsioni di questo metodo saranno probabilmente abbastanza buone, ma gli intervalli di previsione che sono calcolati assumendo una distribuzione normale potrebbero essere inaccurati.

Una comoda scorciatoia per produrre questi grafici di diagnostica dei residui è la funzione gg_tsresiduals(), che produce un grafico per serie storica, un grafico ACF e un istogramma dei residui.

google_2015 %>%
  model(NAIVE(Close)) %>%
  gg_tsresiduals()
Grafici per la diagnostica dei residui per il metodo naive applicato ai prezzi delle azioni Google.

Figura 5.13: Grafici per la diagnostica dei residui per il metodo naive applicato ai prezzi delle azioni Google.

Test portmanteau per l’autocorrelazione

Oltre a guardare il grafico ACF, si può anche fare un test per l’autocorrelazione considerando un intero insieme di valori \(r_k\), piuttosto che trattare ciascun valore separatamente.

È utile ricordare che \(r_k\) indica l’autocorrelazione per il ritardo \(k\). Quando si analizza il grafico ACF per vedere se ogni picco è entro i limiti richiesti, si sta implicitamente eseguendo un test di ipotesi multipla, ognuno con una fissata probabilità dell’errore di prima specie. Quando viene fatto un numero sufficiente di questi test, è probabile che almeno uno ecceda i limiti di confidenza, e si potrebbe quindi concludere che i residui hanno qualche autocorrelazione residua, quando in realtà non è così.

Per superare questo problema, si procede verificando se le prime autocorrelazioni sono significativamente diverse da quelle che ci si aspetterebbe da un processo di white noise. Un test per un gruppo di autocorrelazioni è chiamato test Portmanteau, da una parola francese che descrive una valigia o un appendiabiti che porta diversi capi di abbigliamento.

Uno di questi test è il test di Box-Pierce, basato sulla seguente statistica

\[ Q = T \sum_{k=1}^\ell r_k^2, \]

dove \(\ell\) è il massimo ritardo considerato e \(T\) è il numero di osservazioni. Se ogni \(r_k\) è vicino a zero, allora \(Q\) sarà piccolo. Se alcuni valori di \(r_k\) sono grandi (positivi o negativi), allora \(Q\) sarà grande. Il suggerimento è di usare \(\ell=10\) per i dati non stagionali e \(\ell=2m\) per i dati stagionali, dove \(m\) è il periodo di stagionalità. Tuttavia, è preferibile limitare il numero di ritardi a \(\ell=T/5\)

Un test simile (e più accurato) è il test di Ljung-Box, basato su

\[ Q^* = T(T+2) \sum_{k=1}^\ell (T-k)^{-1}r_k^2. \]

Di nuovo, grandi valori di \(Q^*\) suggeriscono che le autocorrelazioni non provengono da una serie white noise.

Quanto grande è troppo grande? Se le autocorrelazioni provenissero da una serie white noise, allora sia \(Q\) che \(Q^*\) avrebbero una distribuzione \(\chi^2\) con \((\ell - K)\) gradi di libertà, dove \(K\) è il numero di parametri nel modello. Se sono calcolati dai dati grezzi (piuttosto che dai residui di un modello), allora si può impostare \(K=0\).

Per l’esempio del prezzo delle azioni Google, il metodo naive non ha parametri, quindi \(K=0\) anche in questo caso. Nel codice seguente, lag\(=\ell\) e dof\(=K\).

aug %>% features(.innov, box_pierce, lag = 10, dof = 0)
#> # A tibble: 1 × 4
#>   Symbol .model       bp_stat bp_pvalue
#>   <chr>  <chr>          <dbl>     <dbl>
#> 1 GOOG   NAIVE(Close)    7.74     0.654

aug %>% features(.innov, ljung_box, lag = 10, dof = 0)
#> # A tibble: 1 × 4
#>   Symbol .model       lb_stat lb_pvalue
#>   <chr>  <chr>          <dbl>     <dbl>
#> 1 GOOG   NAIVE(Close)    7.91     0.637

Sia per \(Q\) che per \(Q^*\), i risultati non sono significativi (cioè, i valori di \(p\) sono relativamente grandi). Si può quindi concludere che i residui non sono distinguibili da una serie white noise.

Un semplice approccio alternativo che può essere appropriato per la previsione del prezzo di chiusura giornaliero delle azioni Google è il metodo del drift. La funzione tidy() mostra l’unico parametro stimato, il coefficiente del drift, che misura il cambiamento medio giornaliero osservato nei dati osservati.

fit <- google_2015 %>% model(RW(Close ~ drift()))
tidy(fit)
#> # A tibble: 1 × 7
#>   Symbol .model              term  estimate std.error statistic p.value
#>   <chr>  <chr>               <chr>    <dbl>     <dbl>     <dbl>   <dbl>
#> 1 GOOG   RW(Close ~ drift()) b        0.944     0.705      1.34   0.182

Applicando il test di ling-Box, si pone \(k=1\) per tener conto del solo parametro stimato.

augment(fit) %>% features(.innov, ljung_box, lag=10, dof=1)
#> # A tibble: 1 × 4
#>   Symbol .model              lb_stat lb_pvalue
#>   <chr>  <chr>                 <dbl>     <dbl>
#> 1 GOOG   RW(Close ~ drift())    7.91     0.543

Come nel metodo naive, i residui del metodo del drift sono indistinguibili da una serie di tipo white noise.