Beräkna autokorrelationer
Autokorrelationer, eller laggade korrelationer, används för att bedöma om en tidsserie är beroende av sina tidigare värden. För en tidsserie x med längden n betraktar vi de n-1 par av observationer som ligger ett tidssteg ifrån varandra. Det första paret är (x[2],x[1]), och nästa är (x[3],x[2]). Varje sådant par har formen (x[t],x[t-1]) där t är observationsindex, som varierar från 2 till n i det här fallet. Lag-1-autokorrelationen för x kan skattas som stickprovskorrelationen för dessa (x[t], x[t-1])-par.
Generellt sett kan vi skapa dessa observationspar manuellt. Skapa först två vektorer, x_t0 och x_t1, vardera med längden n-1, så att raderna motsvarar (x[t], x[t-1])-par. Använd sedan funktionen cor() för att skatta lag-1-autokorrelationen.
Tur nog finns det en genväg: kommandot acf(). Genom att använda acf(..., lag.max = 1, plot = FALSE) på en serie x beräknas lag-1-autokorrelationen automatiskt.
Observera slutligen att de två skattningarna skiljer sig något, eftersom de använder lite olika skalningar vid beräkningen av stickprovskovariansen: 1/(n-1) respektive 1/n. Även om den sistnämnda ger en skev skattning föredras den inom tidsserieanalys, och de resulterande autokorrelationsskattningarna skiljer sig bara med faktorn (n-1)/n.
I den här övningen får du öva på både den manuella och den automatiska beräkningen av en lag-1-autokorrelation. Tidsserien x och dess längd n (150) har redan laddats in. Serien visas i diagrammet till höger.
Den här övningen är en del av kursen
Tidsserieanalys i R
Övningsinstruktioner
- Skapa två vektorer,
x_t0ochx_t1, vardera med längdenn-1, så att raderna motsvarar(x[t], x[t-1])-par. - Bekräfta att
x_t0ochx_t1utgör(x[t], x[t-1])-par med hjälp av den förskrivna koden. - Använd
plot()för att visa ett spridningsdiagram överx_t0ochx_t1. - Använd
cor()för att visa korrelationen mellanx_t0ochx_t1. - Använd
acf()medxför att automatiskt beräkna lag-1-autokorrelationen. Sätt argumentetlag.maxtill1för att producera en enda laggperiod och sätt argumentetplottillFALSE. - Bekräfta att skillnadsfaktorn är
(n-1)/nmed hjälp av den förskrivna koden.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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