Mann-Kendall 突变分析MATLAB程序
(2017-10-19 12:20:57)分类: MATLAB |
看了很多书和论文,结合网上的资源,自己编写的Mann-Kendall 突变分析程序
特别要注意MK突变分析中的ESk和varSk在很多国内教材和中文论文中的公式是有问题的,包括很多网上所有到的MK代码也是没有注意到这个问题。
参考过的资料不再单独列出,特此申明!
function [UF,UB,U_Alpha] =
MannKendallMutation(X,Alpha,OutIndex)
% 时间序列数据的Mann-Kendall突变分析
%
% Input
% X
- 时间序列数据,向量,Time Series of
Data
% Alpha
- 显著性水平
% OutIndex
-
画图指示,默认OutIndex=1
%
% Output
% UF
- UF统计量序列,1*(N-1)
% UB
- UB统计量序列,1*(N-1)
% U_Alpha
-
显著性水平Alpha下的正态分布分位数
%
%
%
-----------------------------------------------------
if (nargin < 3) || (isempty(OutIndex)), OutIndex = 1;
end
if (nargin < 2) || (isempty(Alpha)), Alpha = 0.05;
end
N = length(X);
%%
% 在时间序列X为独立随机的假设下,UF服从标准正态分布
% 计算UF统计量
UF = zeros(1,N-1);
% 时间序列X的UF统计量
riVec = zeros(1,N);
Sk = 0;
for ii = 2:N
end
%%
% 在时间序列X为独立随机的假设下,UB服从标准正态分布
% 计算UB统计量
Y = X(N:-1:1);
%
取时间序列X的逆序
UB = zeros(1,N-1);
% 时间序列X的UB统计量
riVec = zeros(1,N);
Sk = 0;
for ii = 2:N
end
%%
% 若UF > U_Alpha, 表明序列存在明显的趋势变化
U_Alpha = norminv(1 - Alpha / 2);
if OutIndex == 1
end
% end of function MannKendallMutation
%%