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
% ...完整源码见原文
去看原文