Hoe autocorrelatie in python te berekenen


Autocorrelatie meet de mate van gelijkenis tussen een tijdreeks en een vertraagde versie van zichzelf over opeenvolgende tijdsintervallen.

Het wordt ook wel ’seriële correlatie‘ of ‚vertraagde correlatie‘ genoemd omdat het de relatie meet tussen de huidige waarden van een variabele en zijn historische waarden.

Wanneer de autocorrelatie in een tijdreeks hoog is, wordt het eenvoudig om toekomstige waarden te voorspellen door simpelweg naar waarden uit het verleden te verwijzen.

Hoe autocorrelatie in Python te berekenen

Stel dat we in Python de volgende tijdreeks hebben die de waarde van een bepaalde variabele voor 15 verschillende perioden weergeeft:

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

We kunnen de autocorrelatie voor elke vertraging in de tijdreeks berekenen met behulp van de acf()-functie uit de statsmodels-bibliotheek:

 import statsmodels.api as sm

#calculate autocorrelations
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])

De manier om het resultaat te interpreteren is als volgt:

  • De autocorrelatie bij lag 0 is 1 .
  • De autocorrelatie bij lag 1 is 0,8317 .
  • De autocorrelatie bij lag 2 is 0,6563 .
  • De autocorrelatie bij lag 3 is 0,4910 .

Enzovoort.

We kunnen ook het aantal vertragingen opgeven dat moet worden gebruikt met het nlags- argument:

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

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

Hoe de autocorrelatiefunctie in Python te plotten

We kunnen de autocorrelatiefunctie voor een tijdreeks in Python plotten met behulp van de functie tsaplots.plot_acf() uit de statsmodels-bibliotheek:

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

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags=10)
plt.show() 

Autocorrelatiefunctie in Python

Op de x-as wordt het aantal vertragingen weergegeven en op de y-as de autocorrelatie bij dat aantal vertragingen. Standaard begint de plot bij lag = 0 en is de autocorrelatie altijd 1 bij lag = 0.

We kunnen ook inzoomen op de eerste vertragingen door ervoor te kiezen minder vertragingen te gebruiken met het vertragingsargument :

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

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags= 5 )
plt.show() 

Autocorrelatiefunctie plotten in Python

U kunt ook de titel en kleur van de cirkels die in de plot worden gebruikt, wijzigen met de titel- en kleurargumenten :

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

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

Autocorrelatiefunctie in Python met aangepaste titel

Meer Python-tutorials vind je op deze pagina .

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert