Як виконати тест тенденції манна-кендалла в python


Критерій тенденції Манна-Кендалла використовується, щоб визначити, чи є тенденція в даних часових рядів. Це непараметричний тест, тобто не робиться жодних базових припущень щодо нормальності даних.

Тестові гіпотези такі:

H 0 (нульова гіпотеза): у даних немає тенденції.

H A (альтернативна гіпотеза): у даних наявна тенденція. (Це може бути як позитивна, так і негативна тенденція)

Якщо p-значення тесту є нижчим за певний рівень значущості (звичайними варіантами є 0,10, 0,05 і 0,01), то існує статистично значуще свідчення того, що в даних із часового ряду присутня тенденція.

У цьому посібнику пояснюється, як виконати тест тенденції Манна-Кендалла в Python.

Приклад: тест тенденції Манна-Кендалла в Python

Щоб виконати тест тенденції Манна-Кендалла в Python, ми спочатку встановимо пакет pymannkendall :

 pip install pymannkendall

Після встановлення цього пакета ми зможемо виконати тест тенденції Манна-Кендалла на наборі даних часового ряду:

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

Ось як інтерпретувати результат тесту:

  • trend : вказує на тенденцію. Можливий результат включає зростання, зменшення або відсутність тенденції.
  • h: істинно, якщо тенденція присутня. Помилково, якщо тенденції немає.
  • p: значення p тесту.
  • z: нормалізаційна тестова статистика.
  • Тау: Кендалл Тау.
  • s: бал Манна-Кендала
  • var_s: відхилення S
  • нахил: Theil-Sen/оцінка нахилу
  • перехоплення: перехоплення міцної лінії Кендаля-Тейла

Основним значенням, яке нас цікавить, є p-значення, яке повідомляє нам, чи є статистично значуща тенденція в даних.

У цьому прикладі p-значення дорівнює 0,4226 , що не менше 0,05. Таким чином, немає істотної тенденції в даних часових рядів.

Окрім виконання тесту тенденції Манна-Кендалла, ми можемо створити швидкий лінійний графік за допомогою Matplotlib для візуалізації фактичних даних часового ряду:

 import matplotlib. pyplot as plt

plt. plot (data)

разів

На діаграмі ми бачимо, що дані трохи розсіяні, що підтверджує відсутність чіткої тенденції в даних.

Додаткові ресурси

Як побудувати часовий ряд у Matplotlib
Як виконати розширений тест Дікі-Фуллера в Python
Як побудувати декілька серій із Pandas DataFrame

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *