Zum Hauptinhalt springen

Autokorrelation in R

Übe Autokorrelation in R mit Lernmaterial aus DataCamps Kurs Introduction to Time Series Analysis.
· 6 Min. lesen

Entdecke KI

Wenn du unseren Kurs Introduction to Time Series Analysis in R belegen möchtest, findest du hier den Link.

Autokorrelationen berechnen

Autokorrelationen bzw. verzögerte Korrelationen helfen einzuschätzen, ob eine Zeitreihe von ihrer Vergangenheit abhängt. Für eine Zeitreihe x der Länge n betrachten wir die n-1 Wertepaarungen im Abstand einer Zeiteinheit. Das erste Paar ist (x[2],x[1]), das nächste (x[3],x[2]). Jedes dieser Paare hat die Form (x[t],x[t-1]), wobei t der Beobachtungsindex ist, der hier von 2 bis n läuft. Die Lag-1-Autokorrelation von x lässt sich als Stichprobenkorrelation dieser (x[t], x[t-1])-Paare schätzen.

Allgemein können wir diese Wertepaarungen manuell erzeugen. Erstelle zwei Vektoren, x_t0 und x_t1, jeweils der Länge n-1, sodass die Zeilen den (x[t], x[t-1])-Paaren entsprechen. Wende dann die Funktion cor() an, um die Lag-1-Autokorrelation zu schätzen.

Zum Glück gibt es mit dem Befehl acf() eine Abkürzung. Mit acf(..., lag.max = 1, plot = FALSE) für eine Serie x wird die Lag-1-Autokorrelation automatisch berechnet.

Beachte abschließend, dass sich beide Schätzer geringfügig unterscheiden, weil bei der Berechnung der Stichprobenkovarianz unterschiedliche Skalierungen verwendet werden: 1/(n-1) gegenüber 1/n. Obwohl Letzteres einen verzerrten Schätzer liefert, wird es in der Zeitreihenanalyse bevorzugt; die resultierenden Autokorrelationsschätzer unterscheiden sich lediglich um den Faktor (n-1)/n.

In dieser Übung trainierst du sowohl die manuelle als auch die automatische Berechnung einer Lag-1-Autokorrelation. Die Zeitreihe x und ihre Länge n (150) sind bereits geladen. Die Serie siehst du im rechten Plot.

Anweisungen

  • Erstelle zwei Vektoren, x_t0 und x_t1, jeweils der Länge n-1, sodass die Zeilen den (x[t], x[t-1])-Paaren entsprechen.
  • Bestätige mit dem vorgegebenen Code, dass x_t0 und x_t1 tatsächlich (x[t], x[t-1])-Paare sind.
  • Verwende plot(), um das Streudiagramm von x_t0 und x_t1 anzuzeigen.
  • Verwende cor(), um die Korrelation zwischen x_t0 und x_t1 auszugeben.
  • Verwende acf() mit x, um die Lag-1-Autokorrelation automatisch zu berechnen. Setze das Argument lag.max auf 1 und plot auf FALSE.
  • Bestätige mit dem vorgegebenen Code, dass der Unterschiedsfaktor (n-1)/n ist.

# 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

Wenn das klar ist, mach mit der nächsten Übung weiter! Falls nicht, hier ist ein Übersichtsvideo.

Übersichtsvideo zur Autokorrelation

Die Autokorrelationsfunktion

Autokorrelationen lassen sich für viele Lags schätzen, um besser zu beurteilen, wie eine Zeitreihe mit ihrer Vergangenheit zusammenhängt. Besonders interessiert uns meist der Zusammenhang mit der jüngsten Vergangenheit.

Die Funktion acf(..., lag.max = ..., plot = FALSE) schätzt alle Autokorrelationen von 0, 1, 2, ... bis zum Wert des Arguments lag.max. In der vorherigen Übung hast du dich auf die Lag-1-Autokorrelation konzentriert, indem du lag.max auf 1 gesetzt hast.

In dieser Übung erkundest du weitere Anwendungen des Befehls acf(). Auch hier ist die Zeitreihe x bereits geladen und rechts im Plot dargestellt.

Anweisungen

  • Verwende acf(), um die Autokorrelationen der Serie x von 0 bis 10 anzuzeigen. Setze lag.max auf 10 und belasse plot bei FALSE.
  • Kopiere den Autokorrelationsschätzer (ACF) bei Lag 10.
  • Kopiere den Autokorrelationsschätzer (ACF) bei Lag 5.

# Generate ACF estimates for x up to lag-10
acf(___, lag.max = ___, plot = FALSE)

# Type the ACF estimate at lag-10 


# Type the ACF estimate at lag-5

Die Autokorrelationsfunktion visualisieren

Wenn wir die Autokorrelationsfunktion (ACF) für viele Lags schätzen, können wir beurteilen, wie eine Zeitreihe x mit ihrer Vergangenheit zusammenhängt. Die numerischen Schätzwerte sind wichtig für Detailrechnungen, aber auch die Visualisierung der ACF als Funktion des Lags ist hilfreich.

Tatsächlich erstellt der Befehl acf() standardmäßig eine Abbildung. Er trifft außerdem eine Standardwahl für lag.max, also die maximale Anzahl der angezeigten Lags.

Drei Zeitreihen x, y und z wurden in deine R-Umgebung geladen und rechts geplottet. Die Zeitreihe x zeigt starke Persistenz, das heißt, der aktuelle Wert liegt nah an den unmittelbar vorausgehenden. Die Zeitreihe y zeigt ein periodisches Muster mit einer Zykluslänge von etwa vier Beobachtungen, der aktuelle Wert ähnelt also dem von vor vier Zeitpunkten. Die Zeitreihe z zeigt kein klares Muster.

In dieser Übung plottest du die geschätzte Autokorrelationsfunktion für jede Zeitreihe. In den von acf() erzeugten Plots ist der Lag auf der horizontalen Achse markiert, und die Höhe der vertikalen Balken zeigt den jeweiligen Autokorrelationsschätzer an. Denk daran: Die ACF bei Lag 0 ist immer 1.

Außerdem enthalten alle ACF-Abbildungen zwei blaue, horizontale, gestrichelte Linien, die lagweise 95%-Konfidenzintervalle um null darstellen. Damit lässt sich prüfen, ob ein einzelner Autokorrelationsschätzer bei einem bestimmten Lag gegenüber dem Nullwert null statistisch signifikant ist, also ob dort keine Autokorrelation vorliegt.

Anweisungen

Verwende drei Aufrufe der Funktion acf(), um die geschätzten ACFs deiner drei Zeitreihen (x, y und z) anzuzeigen. Zusätzliche Argumente sind nicht nötig.


# View the ACF of x
acf(___)

# View the ACF of y


# View the ACF of z


Wenn du mehr aus diesem Kurs mitnehmen möchtest, hier ist der Link.

Schau dir auch unser Time Series Analysis using R: Tutorial an.

Themen

Ähnlich

Blog

2022-2023 DataCamp Classrooms Jahresbericht

Tutorial

OLS-Regression: Die wichtigsten Ideen erklärt