Sen+MK趋势分析
Sen 斜率估计用于计算趋势值,通常与MK非参数检验结合使用。即首先计算Sen趋势值,然后使用MK方法判断趋势显著性。
结果
去看原文
原理
Theil-Sen Median方法又被称为 Sen 斜率估计,是一种稳健的非参数统计的趋势计算方法。该方法计算效率高,对于测量误差和离群数据不敏感,常被用于长时间序列数据的趋势分析中。
β
=
m
e
a
n
(
x
j
−
x
i
j
−
i
)
,
∀
j
>
i
\beta=mean(\frac{x_j-x_i}{j-i}),\forall{j>i}
β=mean(j−ixj−xi),∀j>i
式中: x j x_j xj和 x i x_i xi为时间序列数据。β大于0表示时间序列呈现上升趋势;β小于0表示时间序列呈现下降趋势。
Mann-Kendall是一种非参数统计检验方法,最初由Mann在1945年提出,后由Kendall和Sneyers进一步完善,其优点是不需要测量值服从正态分布,也不要求趋势是线性的,并且不受缺失值和异常值的影响,在长时间序列数据的趋势显著检验中得到了十分广泛的应用。其统计检验方法如下:
对于时间序列
X
i
,
i
=
1
,
2
,
.
.
.
i
,
.
.
.
j
,
.
.
.
,
n
X_i,i=1, 2, ...i, ...j, ..., n
Xi,i=1,2,...i,...j,...,n。定义标准化检验统计量 Z:
式中:
x
j
x_j
xj和
x
i
x_i
xi为时间序列数据,
n
n
n为数据个数;当
n
≥
8
n≥8
n≥8时,检验统计量
S
S
S近似为正态分布,其均值和方差如下:
在给定显著性水平α下,如果 ∣ Z ∣ > Z 1 − α 2 |Z|>Z_{1-\frac{α}{2}} ∣Z∣>Z1−2α,表明不存在趋势的假设被拒绝,时间序列数据存在明显的趋势变化。 Z 1 − α 2 Z_{1-\frac{α}{2}} Z1−2α为在置信水平α下,标准正态函数分布表对应的值。当 Z Z Z的绝对值大于1.65、1.96和2.58时,表示趋势分别通过了信度为90%、95%和99%的显著性检验。
实现
Sen趋势值计算:
% @author geo_data_analysis@163.com
% 基于Sen的趋势值
[a,R]=geotiffread('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
info=geotiffinfo('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
[m,n]=size(a);
datasum=zeros(m*n,34)+NaN;
k=1;
for year=1982:2015
filename=['C:\Users\ca\Desktop\sen+mk趋势分析\data\',int2str(year),'_mvc.tif'];
data=importdata(filename);
data=reshape(data,m*n,1);
datasum(:,k)=data;
k=k+1;
end
% ...完整源码见原文
MK检验结果:
% @author geo_data_analysis@163.com
% MK趋势显著性检验
[a,R]=geotiffread('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
info=geotiffinfo('C:\Users\ca\Desktop\sen+mk趋势分析\data\1982_mvc.tif');
[m,n]=size(a);
cd=34;
datasum=zeros(m*n,cd)+NaN;
p=1;
for year=1982:2015
filename=['C:\Users\ca\Desktop\sen+mk趋势分析\data\',int2str(year),'_mvc.tif'];
data=importdata(filename);
data=reshape(data,m*n,1);
datasum(:,p)=data;
p=p+1;
end
% ...完整源码见原文
去看原文
非平稳时间序列突变检测 – Bernaola Galvan分割算法
非平稳时间序列突变检测 – Bernaola Galvan分割算法
原文有源码,更多内容,请关注地学分析与算法。