Augmented dickey-fuller-test in python (met voorbeeld)
Van een tijdreeks wordt gezegd dat deze ‘stationair’ is als deze geen trend vertoont, een constante variantie in de tijd vertoont en een constante autocorrelatiestructuur in de loop van de tijd heeft.
Een manier om te testen of een tijdreeks stationair is, is door een augmented Dickey-Fuller-test uit te voeren, waarbij de volgende nul- en alternatieve hypothesen worden gebruikt:
H 0 : De tijdreeks is niet-stationair. Met andere woorden, de structuur ervan is afhankelijk van de tijd en de variatie ervan is niet constant in de tijd.
H A : De tijdreeks is stationair.
Als de p-waarde van de test onder een bepaald significantieniveau ligt (bijvoorbeeld α = 0,05), kunnen we de nulhypothese verwerpen en concluderen dat de tijdreeks stationair is.
Het volgende stapsgewijze voorbeeld laat zien hoe u een uitgebreide Dickey-Fuller-test in Python kunt uitvoeren voor een bepaalde tijdreeks.
Voorbeeld: uitgebreide Dickey-Fuller-test in Python
Stel dat we de volgende tijdreeksgegevens in Python hebben:
data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]
Voordat we een uitgebreide Dickey-Fuller-test op de gegevens uitvoeren, kunnen we een snelle plot maken om de gegevens te visualiseren:
import matplotlib. pyplot as plt plt. plot (data)
Om een uitgebreide Dickey-Fuller-test uit te voeren, kunnen we de functie adfuller() uit de statsmodels- bibliotheek gebruiken. Eerst moeten we statsmodels installeren:
pip install statsmodels
Vervolgens kunnen we de volgende code gebruiken om de augmented Dickey-Fuller-test uit te voeren:
from statsmodels. tsa . stattools import adfuller #perform augmented Dickey-Fuller test adfuller(data) (-0.9753836234744063, 0.7621363564361013, 0, 12, {'1%': -4.137829282407408, '5%': -3.1549724074074077, '10%': -2.7144769444444443}, 31.2466098872313)
Zo interpreteert u de belangrijkste waarden van het resultaat:
- Teststatistiek: -0,97538
- P-waarde: 0,7621
Omdat de p-waarde niet kleiner is dan 0,05, slagen we er niet in de nulhypothese te verwerpen.
Dit betekent dat de tijdreeks niet stationair is. Met andere woorden, de structuur ervan is afhankelijk van de tijd en de variatie ervan is niet constant in de tijd.
Aanvullende bronnen
Hoe een tijdreeks in Matplotlib te plotten
Hoe meerdere series uit een Pandas DataFrame te plotten
Hoe u een Mann-Kendall-trendtest uitvoert in Python