mann_kendall文档

mann_kendall执行一个标准的简单曼-肯德尔检验,以确定一个显著趋势的存在。(需要统计工具箱)

回到气候数据工具内容

内容

语法

H = mann_kendall(y) H = mann_kendall(y,alpha) H = mann_kendall(…,'dim',dim) [H,p] = mann_kendall(…)

描述

H = mann - kendall(y)对时间序列进行标准的简单Mann-Kendall检验y确定一个重要趋势的存在。如果h真正的,趋势呈现;如果h,你可以拒绝一个趋势的假设。这个函数假设y在时间上采样相等。

H = mann_kendall(y,)指定0到1范围内的alpha显著性水平。默认的等于0.05,对应5%显著性水平。

H = mann_kendall(…,'dim',dim)指定计算趋势的维度。默认情况下,如果y为一维数组,则趋势沿?的第一个非单维计算y;如果y为二维矩阵,趋势按?的行(维数1)计算y;如果y为三维矩阵,趋势向下计算维数为3。

[h,p] = mann_kendall(…)还返回趋势的p值。

例1:1D阵列

考虑这两个数组,一个有趋势,一个没有:

X = (1:1000)';Y0 = randn(size(x)) + 1000;%无趋势的随机数据Y1 = randn(size(x)) + 1000 + x/500;%随机数据,趋势为1/500情节(x, y0,“b”);持有情节(x, y₁,“r”);

为了帮助显示趋势,请使用polyplot的一阶多项式趋势线y0而且日元

polyplot (x, y0, 1“b”“线宽”2) polyplot (x, y₁,1,“r”“线宽”,2)

为了验证趋势的大小y0而且日元,使用趋势功能:

趋势(y0)
Ans = 7.8691e-05

...不出所料,趋势在y0大约为零。现在检查日元

趋势(日元)
Ans = 0.0020

...而且不出所料,趋势在日元是我们故意强加的1/500。这两个趋势幅度看起来都是接近于零的小数字,但并不是完全为零。那么,这些趋势都很重要吗?使用mann_kendall为了找到答案,我们从y0

mann_kendall (y0)
Ans =逻辑0

(逻辑零)证实了这一点y0时间序列除了噪声什么都没有。现在检查日元,其中,回想一下,我们施加了1/500的趋势:

mann_kendall(日元)
Ans =逻辑1

逻辑1或真正的答案证实了日元包含噪声,其趋势在量级上很小,但在默认alpha = 5%显著性水平下仍存在趋势。5%的显著性对你来说不够严格吗?收紧到0.1%,像这样:

mann_kendall(0.001日元)
Ans =逻辑1

这证实了趋势日元存在0.1%显著性。

例2:多个时间序列

如果在二维矩阵中有多个时间序列,则mann_kendall函数可以同时对它们进行操作。例如,我们将创建一个数据集D使用例1中的两个1D阵列时间序列:

D = [y0 y1];

默认情况下,如果输入为mann_kendall是一个二维矩阵,函数将按行操作,因此测试趋势的意义在y0而且日元这简单吗:

mann_kendall (D)
Ans = 1×2逻辑阵列0 1 .单击“确定”

0而且1答案表示在的第一列中没有明显的趋势D的第二列有明显的趋势D

如果每个时间序列都在自己的行中,而不是在自己的列中,则指定操作的维数如下:

Dt = D';%转置D使时间经过Dt的列。mann_kendall (Dt,“暗”,2)
Ans = 2×1逻辑阵列0 1 .单击“确定”

也可以指定显著性水平alpha。让我们真的放宽我们的标准,设定为99.999%:

mann_kendall (Dt, 0.99999,“暗”,2)
Ans = 2×1逻辑阵列1

哇,如果我们足够放松我们的标准,甚至y0噪音包含了一个明显的趋势!

例3:3D数据

在过去的几十年里,海洋表面的温度有显著的变化吗?要回答这个问题,请加载60x55x802 pacific_sst数据集,其中包含从1950年到2016年802个月海面温度的网格:

负载pacific_sst

对于每年12次的抽样率(每月数据),使用趋势函数计算海温趋势,以度为单位,并使用imagescn绘制地图。设置颜色映射cmocean

计算SST趋势:Tr =趋势(sst,12);绘制趋势图:图imagescn(lon,lat,tr) cb = colorbar;ylabel (cb、'sst trend (\circC/yr)') cmocean (“平衡”“主”

上面的地图显示,在大多数地方,海洋似乎正在变暖。但这种趋势显著吗?使用mann_kendall函数求出,并使用点画功能:

显著性= mann_kendall(sst);%(可能需要一秒钟)持有点画(经度、纬度、意义)

上面的地图显示,在alpha = 5%的水平上,海温趋势在大多数地方都是显著的。你可以尝试更严格的标准。

想知道季节对计算有什么影响吗?试着用deseason从海表温度数据集中去除季节周期,重新计算趋势和意义。

参考文献

曼恩,H. B.(1945),反趋势非参数检验,计量经济学,13,245-259。

肯德尔,m.g.(1975),等级相关方法,格里芬,伦敦。

作者信息

这个函数是气候数据工具箱Matlab.函数和支持文档由Chad A. G万博1manbetxreene编写,改编自Mann_Kendall由Simone Fatichi设计。