Calcolare le autocorrelazioni
Le autocorrelazioni, o correlazioni ritardate, servono per valutare se una serie temporale dipende dal proprio passato. Per una serie temporale x di lunghezza n consideriamo le n-1 coppie di osservazioni distanti un'unità di tempo. La prima coppia è (x[2],x[1]), la successiva è (x[3],x[2]). Ogni coppia ha la forma (x[t],x[t-1]), dove t è l'indice dell'osservazione, che in questo caso varia da 2 a n. L'autocorrelazione al ritardo 1 (lag-1) di x può essere stimata come la correlazione campionaria di queste coppie (x[t], x[t-1]).
In generale, possiamo creare manualmente queste coppie di osservazioni. Per prima cosa, crea due vettori, x_t0 e x_t1, entrambi di lunghezza n-1, in modo che le righe corrispondano alle coppie (x[t], x[t-1]). Poi applica la funzione cor() per stimare l'autocorrelazione al ritardo 1.
Per fortuna, il comando acf() offre una scorciatoia. Applicando acf(..., lag.max = 1, plot = FALSE) a una serie x si calcola automaticamente l'autocorrelazione al ritardo 1.
Infine, nota che le due stime differiscono leggermente perché usano scalature lievemente diverse nel calcolo della covarianza campionaria, 1/(n-1) contro 1/n. Sebbene la seconda fornisca una stima distorta, è preferita nell'analisi delle serie temporali, e le stime di autocorrelazione risultanti differiscono solo per un fattore (n-1)/n.
In questo esercizio, metterai in pratica sia il calcolo manuale sia quello automatico dell'autocorrelazione al ritardo 1. La serie temporale x e la sua lunghezza n (150) sono già state caricate. La serie è mostrata nel grafico a destra.
Questo esercizio fa parte del corso
Analisi delle serie temporali in R
Istruzioni dell'esercizio
- Crea due vettori,
x_t0ex_t1, entrambi di lunghezzan-1, in modo che le righe corrispondano alle coppie(x[t], x[t-1]). - Conferma che
x_t0ex_t1rappresentano coppie(x[t], x[t-1])usando il codice già scritto. - Usa
plot()per visualizzare lo scatterplot dix_t0ex_t1. - Usa
cor()per visualizzare la correlazione trax_t0ex_t1. - Usa
acf()conxper calcolare automaticamente l'autocorrelazione al ritardo 1. Imposta l'argomentolag.maxa1per ottenere un singolo periodo di ritardo e imposta l'argomentoplotaFALSE. - Conferma che il fattore di differenza è
(n-1)/nusando il codice già scritto.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Define x_t0 as x[-1]
x_t0 <-
# Define x_t1 as x[-n]
x_t1 <-
# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs
head(cbind(x_t0, x_t1))
# Plot x_t0 and x_t1
plot(___, ___)
# View the correlation between x_t0 and x_t1
cor(___, ___)
# Use acf with x
acf(___, lag.max = ___, plot = ___)
# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n