Как выполнить тест тренда Манна-Кендалла в Python

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.