Come eseguire un test di tendenza di mann-kendall in python
Un test di tendenza di Mann-Kendall viene utilizzato per determinare se esiste o meno una tendenza nei dati delle serie temporali. Questo è un test non parametrico, il che significa che non vengono fatte ipotesi sottostanti sulla normalità dei dati.
Le ipotesi del test sono le seguenti:
H 0 (ipotesi nulla): nei dati non è presente alcun trend.
H A (ipotesi alternativa): nei dati è presente una tendenza. (Questa potrebbe essere una tendenza positiva o negativa)
Se il valore p del test è inferiore a un certo livello di significatività (le scelte comuni sono 0,10, 0,05 e 0,01), allora esiste un’evidenza statisticamente significativa della presenza di una tendenza nei dati delle serie temporali.
Questo tutorial spiega come eseguire un test di tendenza di Mann-Kendall in Python.
Esempio: test di tendenza di Mann-Kendall in Python
Per eseguire un test di tendenza di Mann-Kendall in Python, installeremo prima il pacchetto pymannkendall :
pip install pymannkendall
Una volta installato questo pacchetto, possiamo eseguire il test di tendenza di Mann-Kendall su un set di dati di serie temporali:
#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)
Ecco come interpretare il risultato del test:
- trend : indica il trend. Il possibile risultato include una tendenza in aumento, in diminuzione o nessuna tendenza.
- h: vero se il trend è presente. Falso se non è presente alcun trend.
- p: il valore p del test.
- z: la statistica del test di normalizzazione.
- Tau: Kendall Tau.
- s: punteggio Mann-Kendal
- var_s: deviazione S
- pendenza: stimatore Theil-Sen/pendenza
- intercettazione: Intercettazione della robusta linea Kendall-Theil
Il valore principale che ci interessa è il valore p, che ci dice se esiste o meno un trend statisticamente significativo nei dati.
In questo esempio, il valore p è 0,4226 , che non è inferiore a 0,05. Pertanto non vi è alcun trend significativo nei dati delle serie storiche.
Oltre a eseguire il test di tendenza di Mann-Kendall, possiamo creare un rapido grafico a linee utilizzando Matplotlib per visualizzare i dati effettivi delle serie temporali:
import matplotlib. pyplot as plt plt. plot (data)
volte
Dal grafico possiamo vedere che i dati sono un po’ sparsi, il che conferma che non c’è una tendenza chiara nei dati.
Risorse addizionali
Come tracciare una serie temporale in Matplotlib
Come eseguire un test Dickey-Fuller aumentato in Python
Come tracciare più serie da un Pandas DataFrame