|
背景介绍厉害的算法有很多,但是找到最合适数据情况的算法,才是前期工作中最重要的一步。对于单条时序数据的趋势判断,本文将介绍Mannkendall算法,作为一种非参数统计检验方法,通过对数据之间的符号差值进行统计分析,可以识别其显著趋势。使用MK算法检验时序数据大致趋势时,趋势分为无明显趋势(稳定)、趋势上升、趋势下降。该检验比较样本数据的相对量级,而不是数据值本身,因此基础数据不需要遵循特定分布,也不要求变化趋势是线性的。使用比较每一对数据点来计算总体的统计量S,并将其标准化为Z值,从而判断时间序列数据是否存在显著的趋势。算法原理1.假设检验前提:H0H_0H0为真,或者在拒绝H0H_0H0,接受H1H_1H1时,数据的统计值需要达到一定的置信度零假设H0H_0H0:没有单调趋势H1H_1H1:有单调趋势2.根据给定的时间序列,得到对应数据{x1,x2,...xnx_1,x_2,...x_nx1,x2,...xn}对应这个算法的计算数据总量为n(n−1)2\frac{n(n-1)}{2}2n(n−1)3.定义差值函数sgn(xj−xi)={+1,xj−xi>00,xj−xi=0−1,xj−xi0xj−xi=0xj−xi00,xj−xi=0−1,xj−xi0xj−xi=0xj−xi10,满足。(如果样本量00S=0S+1Var(S),S0S=0S00S=0S+1Var(S),S0S=0Sαp值>\alphap值>α,则接受原假设,即时间序列中不存在显著趋势。该检验的零假设是没有趋势,备择假设是双侧检验中有趋势,或单侧检验中有上升趋势(或下降趋势)。举个例子比如说有10个数,用第二个减去第一个,第三个减去第一个,第四个减去第一个,这样分别减,都会得到他们对应的正负不同的结果(对应有增有降),只保留这些结果为±1\pm1±1或为0,一直进行这个过程到第10个数,最后就会得到9个数,他们分别代表着各自对应着第一天的趋势。然后把这几个正负求和的结果就是后面的数字对于第一天的判断结果,然后第二天,第三天也一样。得到他们每天的数字判断结果之后,进行s、z的统计量计算假设我们有以下一组时间序列数据,表示某地区5年的年平均气温:模拟数据=[12,14,13,16,15]1.计算S统计量我们需要比较每一对数据点。具体操作如下:比较第1年和后面的年份:14>12,计数+113>12,计数+116>12,计数+115>12,计数+1结果:4比较第2年和后面的年份:1314,计数+115>14,计数+1结果:1比较第3年和后面的年份:16>13,计数+115>13,计数+1结果:2比较第4年和第5年:15xix_j>x_ixj>xi时,值为1;当xj
|
|