3.1 Trasformazioni e aggiustamenti

Mediante una trasformazione si può ottenere una serie storica più semplice da analizzare. In questo paragrafo saranno trattati quattro tipi di aggiustamenti: correzioni in base al calendario, correzioni della popolazione, correzioni dovute all’inflazione e trasformazioni matematiche. Lo scopo di questi aggiustamenti e trasformazioni è quello di semplificare i pattern presenti nelle serie storiche, rimuovendo fonti note di variabilità oppure rendendo tali pattern osservati più coerenti lungo l’intero dataset. Componenti più semplici sono solitamente più facili da analizzare tramite modelli statistici e producono previsioni più accurate.

Correzioni in base al calendario

Alcune delle variazioni osservate nei dati stagionali possono essere dovute a semplici effetti di calendario. In questi casi, di solito è molto più facile rimuovere tale variazione prima di effettuare ulteriori analisi.

Per esempio, nello studio delle vendite mensili totali in un negozio al dettaglio, è facile aspettarsi una variazione tra diversi mesi dovuta al diverso numero di giorni di apertura in ogni mese, oltre alla variazione stagionale che si verifica periodicamente ogni anno. Tale variabilità è facilmente eliminabile se si analizzano le vendite medie per giorno di apertura in ogni mese piuttosto che le vendite totali nel mese. Con questo approccio è quindi possibile rimuovere efficacemente l’effetto del calendario presente nei dati.

Correzioni della popolazione

Tutti i dati che sono influenzati dai cambiamenti della popolazione possono essere trasformati in dati pro-capite. Per effettuare tale correzione c’è bisogno di considerare i dati per persona (o per mille persone, o per milioni di persone) piuttosto che il valore totale. Ad esempio, se si vuole studiare come varia nel tempo il numero di posti letto degli ospedali in una particolare regione, i risultati sono più facili da interpretare se si considera il numero di letti per mille persone, rimuovendo quindi gli effetti dovuti ai cambiamenti della popolazione. In questo modo è possibile stabilire se ci sono stati reali aumenti nel numero di letti o se gli aumenti sono dovuti interamente alla variazione della popolazione. Infatti, può accadere che il numero totale di letti aumenti ma il numero di letti per mille persone diminuisca. Questo effetto si verifica quando la popolazione aumenta più velocemente del numero di posti letto in ospedale. Per la maggior parte dei dati che sono influenzati dai cambiamenti della popolazione è meglio usare valori pro-capite piuttosto che dati aggregati.

Un esempio di correzione dell’effetto della popolazione si può ricavare dal dataset global_economy, dove la variabile GDP viene corretta per ottenere la variabile GDP pro-capite.

global_economy %>%
  filter(Country == "Australia") %>%
  autoplot(GDP/Population) +
  labs(title= "GDP pro-capite", x = "Anno", y = "$USA")
GDP pro-capite australiano.

Figura 3.1: GDP pro-capite australiano.

Correzioni dell’inflazione

Quando i dati oggetto di studio sono influenzati dal valore del denaro è consigliabile effettuare un aggiustamento prima dell’analisi. Per esempio, è ragionevole ipotizzare che il costo medio di una nuova casa sia aumentato negli ultimi decenni a causa dell’inflazione: se il costo di una casa è oggi di 200’000 dollari, tale valore non è lo stesso di quello di una casa da 200’000 dollari di venti anni fa. Per questo motivo, le serie finanziarie sono di solito corrette in modo che tutti i valori siano espressi nei valori monetari di un particolare anno. Per esempio, i dati sui prezzi delle case possono essere indicati in dollari dell’anno 2000.

In questo caso si fa uso di un indice dei prezzi. Sia \(z_{t}\) l’indice dei prezzi ed \(y_{t}\) il prezzo originario di una casa al tempo \(t\), allora \(x_{t} = y_{t}/z_{t} * z_{2000}\) restituisce la serie del prezzo della casa espresso in valori monetari dell’anno 2000. Gli indici dei prezzi sono spesso costruiti dai principali istituti nazionali di statistica. Per i beni di consumo, un indice dei prezzi comunemente utilizzato è l’indice dei prezzi al consumo (o CPI, Consumer Price Index).

Questa tipologia di correzioni permette di confrontare la crescita o il declino di molteplici realtà industriali rispetto ad un indice di prezzi comune. Ad esempio, l’analisi del fatturato annuale aggregato della vendita al dettaglio di “giornali e libri” dal dataset aus_retail, corretto attraverso il CPI (presente nel dataset global_economy), permette di valutare i cambiamenti nel tempo al netto degli effetti dell’inflazione.

print_retail <- aus_retail %>%
  filter(Industry == "Newspaper and book retailing") %>%
  group_by(Industry) %>%
  index_by(Year = year(Month)) %>%
  summarise(Turnover = sum(Turnover))
aus_economy <- global_economy %>%
  filter(Code == "AUS")
print_retail %>%
  left_join(aus_economy, by = "Year") %>%
  mutate(Adjusted_turnover = Turnover / CPI * 100) %>%
  pivot_longer(c(Turnover, Adjusted_turnover),
               values_to = "Turnover") %>%
  mutate(name = factor(name,
         levels=c("Turnover","Adjusted_turnover"))) %>%
  ggplot(aes(x = Year, y = Turnover)) +
  geom_line() +
  facet_grid(name ~ ., scales = "free_y") +
  labs(title = "Fatturato dell'industria australiana della stampa",
       x = "Anno", y = "$AU")
Fatturato dell'industria australiana della stampa, in dollari australiani. Il fatturato 'corretto' per l'inflazione è stato ottenuto utilizzando l'indice dei prezzi al consumo.

Figura 3.2: Fatturato dell’industria australiana della stampa, in dollari australiani. Il fatturato ‘corretto’ per l’inflazione è stato ottenuto utilizzando l’indice dei prezzi al consumo.

Dopo aver effettuato l’aggiustamento per l’inflazione tramite il CPI, è possibile notare che l’industria australiana della vendita al dettaglio di giornali e libri ha sofferto una fase di declino molto più lunga di quanto i dati originari suggeriscano. Il fatturato corretto è in dollari australiani con base 2010, e ciò si evince graficamente dal valore del CPI, pari a 100 nel 2010.

Trasformazioni matematiche

Se i dati presentano una variabilità che aumenta o diminuisce a differenti livelli della serie, può essere utile effettuare una trasformazione della serie. La trasformazione logaritmica, ad esempio, è un’operazione spesso utilizzata in differenti contesti. Si indichino con \(y_{1},\dots,y_{T}\) le osservazioni originarie mentre siano \(w_{1}, \dots, w_{T}\) le osservazioni trasformate, dove \(w_t = \log(y_t)\). L’utilizzo del logaritmo è utile perché fornisce una facile interpretazione: i cambiamenti unitari del logaritmo corrispondono a cambiamenti relativi (o percentuali) sulla scala originaria. Se si utilizza ad esempio il logaritmo in base 10, un aumento unitario sulla scala logaritmica corrisponde a moltiplicare per 10 la scala originaria. Dato che il dominio della funzione logaritmo è l’insieme dei numeri reali positivi, se un qualsiasi valore della serie originaria è zero o negativo, allora non è possibile effettuare la trasformazione logaritmica.

Risulta possibile utilizzare altre funzioni per effettuare le trasformazioni (anche se spesso queste non sono facilmente interpretabili). Si possono usare ad esempio le radici quadrate e le radici cubiche, chiamate trasformazioni di potenza perché possono essere scritte nella forma \(w_{t} = y_{t}^p\).

La famiglia delle trasformazioni di Box-Cox (Box & Cox, 1964), costituisce una classe di trasformazioni particolarmente utile, che include sia i logaritmi che le trasformazioni di potenza. Le trasformazioni di Box-Cox dipendono dal parametro \(\lambda\) e sono definite come segue: \[\begin{equation} w_t = \begin{cases} \log(y_t) & \text{se $\lambda=0$}; \\ (\text{sign}(y_t)|y_t|^\lambda-1)/\lambda & \text{altrimenti}. \end{cases} \tag{3.1} \end{equation}\] Questa formula, discussa in Bickel & Doksum (1981), rappresenta una versione modificata della prima formulazione proposta da Box e Cox, la quale permette di avere valori negativi di \(y_t\) quando \(\lambda > 0\).

Se \(\lambda=0\), la trasformazione di Box-Cox corrisponde al logaritmo naturale, mentre se \(\lambda\ne0\) viene utilizzata una trasformazione di potenza riscalata in maniera semplice. Si noti che il logaritmo utilizzato in questo caso è sempre un logaritmo naturale (in base \(e\)).

Quando \(\lambda=1\) si ottiene \(w_t = y_t-1\), quindi i dati trasformati sono traslati verso il basso di una quantità unitaria e non c’è alcun cambiamento nella forma della serie storica. Per tutti gli altri valori di \(\lambda\), la serie storica trasformata subisce invece anche un cambiamento nella forma.

Muovendo il cursore sul grafico a seguire è possibile vedere l’effetto della trasformazione Box-Cox, al variare di \(\lambda\), sui dati per la produzione trimestrale di gas australiano:

Figura 3.3: Trasformazione bi Box-Cox applicata alla produzione trimestrale di gas australiano.

Un valore ideale del parametro \(\lambda\) è quello che rende la variabilità stagionale più omogenea possibile per tutta la serie, in quanto questa caratteristica permetterebbe l’utilizzo di modelli di previsione più semplici. In questo caso, \(\lambda=0.10\) fornisce un risultato soddisfacente, anche se qualsiasi valore di \(\lambda\) compreso tra 0.0 e 0.2 genera risultati simili.

Il parametro guerrero indica la trasformazione di Guerrero (Guerrero, 1993), e può essere impostato per ottenere in automatico un valore di lambda. In questo caso, il criterio sceglie \(\lambda=0.11\). (Si faccia riferimento al prossimo capitolo per approfondire la funzione features().)

lambda <- aus_production %>%
  features(Gas, features = guerrero) %>%
  pull(lambda_guerrero)
aus_production %>%
  autoplot(box_cox(Gas, lambda)) +
  labs(x = "Trimestre", y = "",
       title = latex2exp::TeX(paste0(
         "Produzione trimestrale di gas trasformata, con $\\lambda$ = ",
         round(lambda,2))))
Trasformazione di Box-Cox della serie della produzione trimestrale di gas in Australia, trasformata con il parametro $\lambda$ scelto in base al metodo di Guerrero.

Figura 3.4: Trasformazione di Box-Cox della serie della produzione trimestrale di gas in Australia, trasformata con il parametro \(\lambda\) scelto in base al metodo di Guerrero.

Bibliografia

Bickel, P. J., & Doksum, K. A. (1981). An analysis of transformations revisited. Journal of the American Statistical Association, 76(374), 296–311. [DOI]
Box, G. E. P., & Cox, D. R. (1964). An analysis of transformations. Journal of the Royal Statistical Society. Series B, Statistical Methodology, 26(2), 211–252. [DOI]
Guerrero, V. M. (1993). Time-series analysis supported by power transformations. Journal of Forecasting, 12(1), 37–48. [DOI]