Zacznij terazZacznij za darmo

Obliczanie autokorelacji

Autokorelacje, zwane też korelacjami opóźnionymi, służą do oceny, czy szereg czasowy zależy od swoich przeszłych wartości. Dla szeregu czasowego x o długości n rozważamy n-1 par obserwacji oddalonych od siebie o jedną jednostkę czasu. Pierwsza taka para to (x[2],x[1]), następna to (x[3],x[2]). Każda para ma postać (x[t],x[t-1]), gdzie t to indeks obserwacji przyjmujący wartości od 2 do n. Autokorelację z opóźnieniem 1 dla x można oszacować jako korelację próbkową takich par (x[t], x[t-1]).

Pary obserwacji można tworzyć ręcznie. Najpierw utwórz dwa wektory, x_t0 i x_t1, każdy o długości n-1, tak aby wiersze odpowiadały parom (x[t], x[t-1]). Następnie zastosuj funkcję cor(), aby oszacować autokorelację z opóźnieniem 1.

Na szczęście polecenie acf() oferuje wygodniejszy sposób. Wywołanie acf(..., lag.max = 1, plot = FALSE) na szeregu x automatycznie oblicza autokorelację z opóźnieniem 1.

Warto zwrócić uwagę, że oba oszacowania nieznacznie się różnią, ponieważ stosują nieco inne skalowanie przy obliczaniu kowariancji próbkowej: 1/(n-1) albo 1/n. Choć to drugie podejście daje obciążone oszacowanie, jest preferowane w analizie szeregów czasowych. Wynikowe autokorelacje różnią się jedynie o czynnik (n-1)/n.

W tym ćwiczeniu przećwiczysz zarówno ręczne, jak i automatyczne obliczanie autokorelacji z opóźnieniem 1. Szereg czasowy x oraz jego długość n (150) są już wczytane. Szereg jest widoczny na wykresie po prawej stronie.

To ćwiczenie jest częścią kursu

Analiza szeregów czasowych w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz dwa wektory, x_t0 i x_t1, każdy o długości n-1, tak aby wiersze odpowiadały parom (x[t], x[t-1]).
  • Sprawdź za pomocą gotowego kodu, że x_t0 i x_t1 tworzą pary (x[t], x[t-1]).
  • Użyj funkcji plot(), aby zobaczyć wykres punktowy x_t0 i x_t1.
  • Użyj funkcji cor(), aby obliczyć korelację między x_t0 i x_t1.
  • Użyj funkcji acf() z argumentem x, aby automatycznie obliczyć autokorelację z opóźnieniem 1. Ustaw argument lag.max na 1, aby uzyskać jeden okres opóźnienia, oraz argument plot na FALSE.
  • Sprawdź za pomocą gotowego kodu, że współczynnik różnicy wynosi (n-1)/n.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
Edytuj i uruchom kod