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

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

Тест тренда Манна-Кендалла используется для определения того, существует ли тренд в данных временного ряда. Это непараметрический тест, означающий, что не делается никаких предположений о нормальности данных.

Гипотезы для теста следующие:

H 0 (нулевая гипотеза): в данных отсутствует тренд.

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

Если p-значение теста ниже некоторого уровня значимости (обычно выбираются значения 0,10, 0,05 и 0,01), то имеется статистически значимое свидетельство того, что в данных временного ряда присутствует тенденция.

В этом руководстве объясняется, как выполнить тест тренда Манна-Кендалла в R.

Пример: тест тренда Манна-Кендалла в R

Чтобы выполнить тест тренда Манна-Кендалла в R, мы будем использовать функцию MannKendall() из библиотеки Kendall , которая использует следующий синтаксис:

МаннКендалл(x)

куда:

  • x = вектор данных, часто временной ряд

Чтобы проиллюстрировать, как выполнить тест, мы будем использовать встроенный набор данных PrecipGL из библиотеки Кендалла , который содержит информацию о годовых осадках для всех Великих озер с 1900 по 1986 годы:

#load Kendall library and PrecipGL dataset
library(Kendall)
data(PrecipGL)

#view dataset
PrecipGL

Time Series:
Start = 1900 
End = 1986 
Frequency = 1 
[1] 31.69 29.77 31.70 33.06 31.31 32.72 31.18 29.90 29.17 31.48 28.11 32.61
[13] 31.31 30.96 28.40 30.68 33.67 28.65 30.62 30.21 28.79 30.92 30.92 28.13
[25] 30.51 27.63 34.80 32.10 33.86 32.33 25.69 30.60 32.85 30.31 27.71 30.34
[37] 29.14 33.41 33.51 29.90 32.69 32.34 35.01 33.05 31.15 36.36 29.83 33.70
[49] 29.81 32.41 35.90 37.45 30.39 31.15 35.75 31.14 30.06 32.40 28.44 36.38
[61] 31.73 31.27 28.51 26.01 31.27 35.57 30.85 33.35 35.82 31.78 34.25 31.43
[73] 35.97 33.87 28.94 34.62 31.06 38.84 32.25 35.86 32.93 32.69 34.39 33.97
[85] 32.15 40.16 36.32
attr(,"title")
[1] Annual precipitation, 1900-1986, Entire Great Lakes

Чтобы увидеть, есть ли тенденция в данных, мы можем выполнить тест тенденции Манна-Кендалла:

#Perform the Mann-Kendall Trend Test
MannKendall(PrecipGL)

tau = 0.265, 2-sided pvalue =0.00029206

Статистика теста равна 0,265 , а соответствующее двустороннее значение p равно 0,00029206.Поскольку это значение p меньше 0,05, мы отклоним нулевую гипотезу теста и придем к выводу, что в данных присутствует тенденция.

Чтобы визуализировать тенденцию, мы можем создать временной график годового количества осадков по годам и добавить плавную линию, чтобы изобразить тенденцию:

#Plot the time series data
plot(PrecipGL)

#Add a smooth line to visualize the trend 
lines(lowess(time(PrecipGL),PrecipGL), col='blue')
График временного ряда с плавной линией

Обратите внимание, что мы также можем выполнить тест тренда Манна-Кендалла с поправкой на сезонные колебания, чтобы учесть любую сезонность в данных, используя команду SeasonalMannKendall(x) :

#Perform a seasonally-adjusted Mann-Kendall Trend Test
SeasonalMannKendall(PrecipGL)

tau = 0.265, 2-sided pvalue =0.00028797

Статистика теста равна 0,265 , а соответствующее двустороннее значение p равно 0,00028797.И снова это значение p меньше 0,05, поэтому мы отвергаем нулевую гипотезу теста и делаем вывод, что в данных присутствует тенденция.

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