Как выполнить тест тренда Манна-Кендалла в 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, поэтому мы отвергаем нулевую гипотезу теста и делаем вывод, что в данных присутствует тенденция.