Hoe u een mann-kendall-trendtest uitvoert in python
Om te bepalen of er al dan niet sprake is van een trend in tijdreeksgegevens, wordt een Mann-Kendall-trendtest gebruikt. Dit is een niet-parametrische test, wat betekent dat er geen onderliggende aannames worden gedaan over de normaliteit van de gegevens.
De testhypotheses zijn als volgt:
H 0 (nulhypothese): er is geen trend aanwezig in de gegevens.
H A (alternatieve hypothese): Er is een trend aanwezig in de gegevens. (Dit kan een positieve of negatieve trend zijn)
Als de p-waarde van de test onder een bepaald significantieniveau ligt (veel voorkomende keuzes zijn 0,10, 0,05 en 0,01), dan is er statistisch significant bewijs dat er een trend aanwezig is in de gegevens uit de tijdreeks.
In deze tutorial wordt uitgelegd hoe u een Mann-Kendall-trendtest uitvoert in Python.
Voorbeeld: Mann-Kendall-trendtest in Python
Om een Mann-Kendall-trendtest in Python uit te voeren, zullen we eerst het pymannkendall- pakket installeren:
pip install pymannkendall
Zodra we dit pakket hebben geïnstalleerd, kunnen we de Mann-Kendall-trendtest uitvoeren op een tijdreeksgegevensset:
#create dataset data = [31, 29, 28, 28, 27, 26, 26, 27, 27, 27, 28, 29, 30, 29, 30, 29, 28] #perform Mann-Kendall Trend Test import pymannkendall as mk mk. original_test (data) Mann_Kendall_Test(trend='no trend', h=False, p=0.422586268671707, z=0.80194241623, Tau=0.147058823529, s=20.0, var_s=561.33333333, slope=0.0384615384615, intercept=27.692307692)
Zo interpreteert u het testresultaat:
- trend : Dit geeft de trend aan. De mogelijke uitkomst omvat een stijgende, dalende of geen trend.
- h: waar als de trend aanwezig is. Onwaar als er geen trend aanwezig is.
- p: De p-waarde van de test.
- z: de normalisatieteststatistiek.
- Tau: Kendall Tau.
- s: Mann-Kendal-score
- var_s: afwijking S
- helling: Theil-Sen/hellingschatter
- onderschepping: Onderschepping van de stevige Kendall-Theil-lijn
De belangrijkste waarde waarin we geïnteresseerd zijn, is de p-waarde, die ons vertelt of er al dan niet een statistisch significante trend in de gegevens zit.
In dit voorbeeld is de p-waarde 0,4226 , wat niet minder is dan 0,05. Daarom is er geen significante trend in de tijdreeksgegevens.
Naast het uitvoeren van de Mann-Kendall-trendtest kunnen we met Matplotlib een snelle lijngrafiek maken om de feitelijke tijdreeksgegevens te visualiseren:
import matplotlib. pyplot as plt plt. plot (data)
keer
Uit de grafiek kunnen we zien dat de gegevens enigszins verspreid zijn, wat bevestigt dat er geen duidelijke trend in de gegevens zit.
Aanvullende bronnen
Hoe een tijdreeks in Matplotlib te plotten
Hoe u een uitgebreide Dickey-Fuller-test uitvoert in Python
Hoe meerdere series uit een Pandas DataFrame te plotten