Как выполнить тест тренда Манна-Кендалла в 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)

Вот как интерпретировать вывод теста:

  • тренд : это говорит о тренде. Возможные выходные данные включают увеличение, уменьшение или отсутствие тренда.
  • h: True, если тренд присутствует. False, если тренд отсутствует.
  • p: p-значение теста.
  • z: Статистика нормализации теста.
  • Тау: Кендалл Тау.
  • s: оценка Манна-Кендала
  • var_s: дисперсия S
  • наклон: оценка Тейла-Сена/наклон
  • перехват: Перехват надежной линии Кендалла-Тейла

Основное значение, которое нас интересует, — это p-значение, которое говорит нам, есть ли статистически значимая тенденция в данных.

В этом примере p-значение равно 0,4226 , что не меньше 0,05. Таким образом, в данных временного ряда нет существенной тенденции.

Наряду с выполнением теста тренда Манна-Кендалла мы можем создать быстрый линейный график с помощью Matplotlib для визуализации фактических данных временных рядов:

import matplotlib.pyplot as plt

plt.plot (data)

раз

Из графика видно, что данные немного разбросаны, что подтверждает отсутствие четкой тенденции в данных.

Дополнительные ресурсы

Как построить временной ряд в Matplotlib
Как выполнить расширенный тест Дики-Фуллера в Python
Как построить несколько рядов из фрейма данных Pandas