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()
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()
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()
Meer Python-tutorials vind je op deze pagina .