Autocorrelaties berekenen
Autocorrelaties of vertragingscorrelaties worden gebruikt om te beoordelen of een tijdreeks afhankelijk is van zijn verleden. Voor een tijdreeks x met lengte n bekijken we de n-1 paren waarnemingen die één tijdseenheid uit elkaar liggen. Het eerste paar is (x[2],x[1]), en het volgende is (x[3],x[2]). Elk paar heeft de vorm (x[t],x[t-1]), waarbij t de index van de waarneming is, die we in dit geval laten variëren van 2 tot n. De lag-1-autocorrelatie van x kun je schatten als de steekproefcorrelatie van deze (x[t], x[t-1])-paren.
In het algemeen kunnen we deze paren handmatig maken. Maak eerst twee vectoren, x_t0 en x_t1, elk met lengte n-1, zodat de rijen overeenkomen met (x[t], x[t-1])-paren. Pas daarna de functie cor() toe om de lag-1-autocorrelatie te schatten.
Gelukkig biedt het commando acf() een snelkoppeling. Door acf(..., lag.max = 1, plot = FALSE) toe te passen op een reeks x wordt de lag-1-autocorrelatie automatisch berekend.
Let tot slot op dat de twee schattingen licht verschillen omdat ze net iets andere schalingen gebruiken bij het berekenen van de steekproefcovariantie, 1/(n-1) versus 1/n. Hoewel de laatste een vertekende schatting geeft, heeft die in tijdreeksanalyse de voorkeur, en de resulterende autocorrelatieschattingen verschillen slechts met een factor (n-1)/n.
In deze oefening oefen je zowel de handmatige als de automatische berekening van een lag-1-autocorrelatie. De tijdreeks x en de lengte n (150) zijn al ingeladen. De reeks staat afgebeeld in de grafiek rechts.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in R
Oefeninstructies
- Maak twee vectoren,
x_t0enx_t1, elk met lengten-1, zodat de rijen overeenkomen met de(x[t], x[t-1])-paren. - Bevestig met de voorgecodeerde regels dat
x_t0enx_t1(x[t], x[t-1])-paren zijn. - Gebruik
plot()om de spreidingsplot vanx_t0enx_t1te bekijken. - Gebruik
cor()om de correlatie tussenx_t0enx_t1te bekijken. - Gebruik
acf()metxom automatisch de lag-1-autocorrelatie te berekenen. Zet het argumentlag.maxop1om één vertragingsperiode te krijgen en zet het argumentplotopFALSE. - Bevestig dat de verschilfactor
(n-1)/nis met de voorgecodeerde regels.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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