Výpočet autokorelací
Autokorelace neboli zpožděné korelace slouží k posouzení toho, zda časová řada závisí na svých minulých hodnotách. Pro časovou řadu x délky n uvažujeme n-1 dvojic pozorování vzdálených od sebe o jednu časovou jednotku. První taková dvojice je (x[2],x[1]), další pak (x[3],x[2]). Každá dvojice má tvar (x[t],x[t-1]), kde t je index pozorování, který v tomto případě nabývá hodnot od 2 do n. Autokorelaci x s zpožděním 1 lze odhadnout jako výběrovou korelaci těchto dvojic (x[t], x[t-1]).
Obecně lze tyto dvojice pozorování vytvořit ručně. Nejprve vytvoříme dva vektory, x_t0 a x_t1, každý o délce n-1, přičemž jejich řádky odpovídají dvojicím (x[t], x[t-1]). Poté odhadneme autokorelaci se zpožděním 1 pomocí funkce cor().
Naštěstí existuje zkratka v podobě příkazu acf(). Použitím acf(..., lag.max = 1, plot = FALSE) na řadu x se autokorelace se zpožděním 1 vypočítá automaticky.
Nakonec si všimni, že oba odhady se mírně liší, protože při výpočtu výběrové kovariance používají trochu odlišné škálování: 1/(n-1) oproti 1/n. Ačkoli druhý přístup poskytuje zkreslený odhad, v analýze časových řad je upřednostňován a výsledné odhady autokorelace se liší pouze o faktor (n-1)/n.
V tomto cvičení si procvičíš ruční i automatický výpočet autokorelace se zpožděním 1. Časová řada x a její délka n (150) jsou již načteny. Řada je zobrazena v grafu vpravo.
Toto cvičení je součástí kurzu
Analýza časových řad v R
Pokyny k cvičení
- Vytvoř dva vektory,
x_t0ax_t1, každý o délcen-1, přičemž jejich řádky odpovídají dvojicím(x[t], x[t-1]). - Pomocí předpřipraveného kódu ověř, že
x_t0ax_t1tvoří správné dvojice(x[t], x[t-1]). - Pomocí
plot()zobrazíš bodový graf hodnotx_t0ax_t1. - Pomocí
cor()zobrazíš korelaci mezix_t0ax_t1. - Pomocí
acf()s argumentemxautomaticky vypočítáš autokorelaci se zpožděním 1. Nastav argumentlag.maxna1, aby se vypočítalo pouze jediné zpoždění, a argumentplotnastav naFALSE. - Pomocí předpřipraveného kódu ověř, že rozdílový faktor je
(n-1)/n.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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