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
Instrukcje do ćwiczenia
- Utwórz dwa wektory,
x_t0ix_t1, każdy o długościn-1, tak aby wiersze odpowiadały parom(x[t], x[t-1]). - Sprawdź za pomocą gotowego kodu, że
x_t0ix_t1tworzą pary(x[t], x[t-1]). - Użyj funkcji
plot(), aby zobaczyć wykres punktowyx_t0ix_t1. - Użyj funkcji
cor(), aby obliczyć korelację międzyx_t0ix_t1. - Użyj funkcji
acf()z argumentemx, aby automatycznie obliczyć autokorelację z opóźnieniem 1. Ustaw argumentlag.maxna1, aby uzyskać jeden okres opóźnienia, oraz argumentplotnaFALSE. - 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