So berechnen Sie die Autokorrelation in Python

Von Fabian
Kategorie: Python
Tags: Zeitreihen
Lesezeit: 2 Minuten

Die Autokorrelation misst den Ähnlichkeitsgrad zwischen einer Zeitreihe und einer verzögerten Version von sich selbst über aufeinanderfolgende Zeitintervalle.

Es wird manchmal auch als "serielle Korrelation" oder "verzögerte Korrelation" bezeichnet, da es die Beziehung zwischen den aktuellen Werten einer Variablen und ihren historischen Werten misst.

Wenn die Autokorrelation in einer Zeitreihe hoch ist, können zukünftige Werte leicht vorhergesagt werden, indem einfach auf vergangene Werte Bezug genommen wird.

So berechnen Sie die Autokorrelation in Python

Angenommen, wir haben die folgenden Zeitreihen in Python, die den Wert einer bestimmten Variablen in 15 verschiedenen Zeiträumen anzeigen:

# Daten definieren
x = [22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51]

Wir können die Autokorrelation für jede Verzögerung in der Zeitreihe mithilfe der Funktion acf() aus der statsmodels Bibliothek berechnen:

import statsmodels.api as sm

# Autokorrelationen berechnen
sm.tsa.acf(x)

array([ 1.        ,  0.83174224,  0.65632458,  0.49105012,  0.27863962,
        0.03102625, -0.16527446, -0.30369928, -0.40095465, -0.45823389,
       -0.45047733])

Die Interpretation der Ausgabe ist wie folgt:

  • Die Autokorrelation bei Verzögerung 0 ist 1.
  • Die Autokorrelation bei Verzögerung 1 beträgt 0,8317.
  • Die Autokorrelation bei Verzögerung 2 beträgt 0,6563.
  • Die Autokorrelation bei Verzögerung 3 beträgt 0,4910.

Und so weiter.

Wir können auch die Anzahl der Verzögerungen mit dem Argument nlags angeben:

sm.tsa.acf(x, nlags=5)

array([1.0, 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625])

So zeichnen Sie die Autokorrelationsfunktion in Python

Wir können die Autokorrelationsfunktion für eine Zeitreihe in Python mithilfe der Funktion tsaplots.plot_acf() aus der Bibliothek statsmodels zeichnen:

from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#Autokorrelationsfunktion plotten
fig = tsaplots.plot_acf(x, lags=10)
plt.show()

Autokorrelationsfunktion in Python

Die x-Achse zeigt die Anzahl der Verzögerungen an und die y-Achse zeigt die Autokorrelation bei dieser Anzahl von Verzögerungen an. Standardmäßig beginnt der Plot bei Verzögerung = 0 und die Autokorrelation ist bei Verzögerung = 0 immer 1.

Wir können auch die ersten Verzögerungen vergrößern, indem wir mit dem Verzögerungsargument weniger Verzögerungen verwenden:

from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#Autokorrelationsfunktion plotten
fig = tsaplots.plot_acf(x, lags=5)
plt.show()

Darstellung der Autokorrelationsfunktion in Python

Wir können auch den Titel und die Farbe der im Plot verwendeten Kreise mit den Argumenten title und color ändern:

from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#Autokorrelationsfunktion plotten
fig = tsaplots.plot_acf(x, lags=5, color='g', title='Autocorrelation function')
plt.show()

Autokorrelationsfunktion in Python mit benutzerdefiniertem Titel

Weitere Python-Tutorials finden Sie auf dieser Seite.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: