Jak wykonać test trendu manna-kendalla w pythonie


Test trendu Manna-Kendalla służy do określenia, czy istnieje trend w danych szeregów czasowych. Jest to test nieparametryczny, co oznacza, że nie przyjmuje się żadnych założeń dotyczących normalności danych.

Hipotezy testowe są następujące:

H 0 (hipoteza zerowa): w danych nie ma trendu.

H A (hipoteza alternatywna): W danych występuje trend. (Może to być tendencja pozytywna lub negatywna)

Jeśli wartość p testu jest poniżej pewnego poziomu istotności (najczęściej wybierane wartości to 0,10, 0,05 i 0,01), wówczas istnieje statystycznie istotny dowód na obecność trendu w danych z szeregów czasowych.

W tym samouczku wyjaśniono, jak przeprowadzić test trendu Manna-Kendalla w języku Python.

Przykład: test trendu Manna-Kendalla w Pythonie

Aby wykonać test trendu Manna-Kendalla w Pythonie, najpierw zainstalujemy pakiet pymannkendall :

 pip install pymannkendall

Po zainstalowaniu tego pakietu możemy wykonać test trendu Manna-Kendalla na zbiorze danych szeregów czasowych:

 #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)

Oto jak zinterpretować wynik testu:

  • trend : Wskazuje trend. Możliwy wynik obejmuje tendencję rosnącą, malejącą lub brak trendu.
  • h: prawda, jeśli trend jest obecny. Fałsz, jeśli nie ma trendu.
  • p: Wartość p testu.
  • z: statystyka testu normalizacyjnego.
  • Tau: Kendall Tau.
  • s: Wynik Manna-Kendala
  • var_s: odchylenie S
  • nachylenie: Theil-Sen/estymator nachylenia
  • przechwycenie: Przechwycenie mocnej linii Kendall-Theil

Główną wartością, która nas interesuje, jest wartość p, która mówi nam, czy istnieje statystycznie istotny trend w danych.

W tym przykładzie wartość p wynosi 0,4226 , czyli nie mniej niż 0,05. W związku z tym nie ma istotnego trendu w danych szeregów czasowych.

Oprócz wykonania testu trendu Manna-Kendalla możemy utworzyć szybki wykres liniowy za pomocą Matplotlib w celu wizualizacji rzeczywistych danych szeregów czasowych:

 import matplotlib. pyplot as plt

plt. plot (data)

czasy

Z wykresu widać, że dane są nieco rozproszone, co potwierdza brak wyraźnego trendu w danych.

Dodatkowe zasoby

Jak wykreślić szereg czasowy w Matplotlib
Jak wykonać rozszerzony test Dickeya-Fullera w Pythonie
Jak wykreślić wiele serii z ramki danych Pandas

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *