Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Skapa två vektorer, x_t0 och x_t1, vardera med längden n-1, så att raderna motsvarar (x[t], x[t-1])-par.
  • Bekräfta att x_t0 och x_t1 utgör (x[t], x[t-1])-par med hjälp av den förskrivna koden.
  • Använd plot() för att visa ett spridningsdiagram över x_t0 och x_t1.
  • Använd cor() för att visa korrelationen mellan x_t0 och x_t1.
  • Använd acf() med x för att automatiskt beräkna lag-1-autokorrelationen. Sätt argumentet lag.max till 1 för att producera en enda laggperiod och sätt argumentet plot till FALSE.
  • Bekräfta att skillnadsfaktorn är (n-1)/n med 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
Redigera och kör kod