mk突变点检测_MK检验突变分析 matlab
% Mann-Kendall突变检测
% 数据序列y
% 结果序列UFk,UBk2
%读取excel中的数据,赋给矩阵y
%获取y的样本数
%A为时间和降水数据列
x=降水(:,1);%时间序列
y=降水(:,2);%降水数据列
N=length(x);
n=length(y);
% 正序列计算---------------------------------
% 定义累计量序列Sk,长度=y,初始值=0
Sk=zeros(size(y));
% 定义统计量UFk,长度=y,初始值=0
UFk=zeros(size(y));
% 定义Sk序列元素s
s = 0;
% i从2开始,因为根据统计量UFk公式,i=1时,Sk(1)、E(1)、Var(1)均为0
% 此时UFk无意义,因此公式中,令UFk(1)=0
for i=2:n
for j=1:i
if y(i)>y(j)
s=s+1;
else
s=s+0;
end;
end;
Sk(i)=s;
E=i*(i-1)/4; % Sk(i)的均值
Var=i*(i-1)*(2*i+5)/72; % Sk(i)的方差
UFk(i)=(Sk(i)-E)/sqrt(Var);
end;
% ------------------------------正序列计算end
% 逆序列计算---------------------------------
% 构造逆序列y2,长度=y,初始值=0
y2=zeros(size(y));
% 定义逆序累计量序列Sk2,长度=y,初始值=0
Sk2=zeros(size(y));
% 定义逆序统计量UBk,长度=y,初始值=0
UBk=zeros(size(y));
% s归0
s=0;
% 按时间序列逆转样本y
% 也可以使用y2=flipud(y);或者y2=flipdim(y,1);
for i=1:n
y2(i)=y(n-i+1);
end;
% i从2开始,因为根据统计量UBk公式,i=1时,Sk2(1)、E(1)、Var(1)均为0
% 此时UBk无意义,因此公式中,令UBk(1)=0
for i=2:n
for j=1:i
if y2(i)>y2(j)
s=s+1;
else
s=s+0;
end;
end;
Sk2(i)=s;
E=i*(i-1)/4; % Sk2(i)的均值
Var=i*(i-1)*(2*i+5)/72; % Sk2(i)的方差
% 由于对逆序序列的累计量Sk2的构建中,依然用的是累加法,即后者大于前者时s加1,
% 则s的大小表征了一种上升的趋势的大小,而序列逆序以后,应当表现出与原序列相反
% 的趋势表现,因此,用累加法统计Sk2序列,统计量公式(S(i)-E(i))/sqrt(Var(i))
% 也不应改变,但统计量UBk应取相反数以表征正确的逆序序列的趋势
UBk(i)=0-(Sk2(i)-E)/sqrt(Var);
end;
% ------------------------------逆序列计算end
% 此时上一步的到UBk表现的是逆序列在逆序时间上的趋势统计量
% 与UFk做图寻找突变点时,2条曲线应具有同样的时间轴,因此
% 再按时间序列逆转结果统计量UBk,得到时间正序的UBk2,做图用
UBk2=zeros(size(y));
% 也可以使用UBk2=flipud(UBk);或者UBk2=flipdim(UBk,1);
for i=1:n
UBk2(i)=UBk(n-i+1);
end;
% 做突变检测图时,使用UFk和UBk2
figure(3)%画图
plot(x,UFk,'r-','linewidth',1);
hold on
plot(x,UBk2,'b-.','linewidth',1);
plot(x,1.96*ones(N,1),':','linewidth',0.5);
plot(x,2.56*ones(N,1),':','linewidth',0.5);
axis([min(x),max(x),-5,5]);
legend('UF统计量','UB统计量');
xlabel('年份','FontName','TimesNewRoman','FontSize',9);
ylabel('统计量','FontName','TimesNewRoman','Fontsize',9);
%grid on
hold on
plot(x,0*ones(N,1),'-.','linewidth',0.5);
plot(x,1.96*ones(N,1),':','linewidth',0.5);
plot(x,-1.96*ones(N,1),':','linewidth',0.5);
plot(x,2.56*ones(N,1),':','linewidth',0.5);
plot(x,-2.56*ones(N,1),':','linewidth',0.5);
time=1951:6:2014
Xlabel('年份');
Ylabel('统计量');
mk突变点检测_MK检验突变分析 matlab相关推荐
- mk突变点检测_MK突变检测程序
MannKendall 突变检测算法 MATLAB 源码 题目: MannKendall 突变检测算法 MATLAB 源码 %% 以下是单边 MannKendall 突变检测算法 % GreenSim ...
- mk突变点检测_mk突变检测
寄信人: fig ([晋]『康杰中学』) 标 题: 没主题 发信站: 南京大学小百合站 (Sun May 23 19:18:25 2010) 来 源: 172.16.74.204 Fortran: p ...
- mk突变点检测_气候突变检测
1.气候突变是什么意思 科学家们所说的气候变化,通常指的是"气候渐变".也就是我们经常说的,"地球在逐渐变暖",或者是"气候在慢慢变暖".但 ...
- mk突变点检测_科学网—从网上找的M-K突变检验的程序 - 张乐乐的博文
%从matlab论坛上找的MK突变检验的程序,这个程序运行的结果跟我自己编写程序运行出来的结果一样,但是跟魏凤英老师书上的例子出图结果不一样 A=xlsread('test-mk.xlsx'); x= ...
- mk突变点检测_Mann-Kendall突变检测(mk突变检测)
本帖最后由 vb1987 于 2013-6-12 23:27 编辑 %最近写论文需要用到MK检验法,网上收集到大量的matlab代码,但是没有一个代码能够 %完全正确运行或者分析信息不全,结合多位网友 ...
- 突变点检测:带突变的趋势描述测试过程
linear_trend_degree(inputdata) (-0.8665321784088783, 5.094899437816308e-08) temp_trend_desc(-0.86653 ...
- python 时间序列突变检测_Python 百度指数突变点检测
百度指数是一款非常好用的工具,通过它我们能知道某些关键词在过去的一些日子里的热度变化趋势并能够对这些数据进行分析.如果能用得好百度指数,我们将能产出巨大的价值.你可以通过关注文章下方的Python实用 ...
- MATLAB 美国标准普尔500指数(sp500)的资产收益率分布的拟合与检验 统计图 拟合检验 描述性统计量分析 matlab
MATLAB 美国标准普尔500指数(sp500)的资产收益率分布的拟合与检验 统计图 拟合检验 描述性统计量分析 matlab 文章目录 实验内容 实验(一):下载并保存数据 实验(二):数据的描述 ...
- 突变点检测:时间序列趋势检验以及突变点检测任务简说
最近因业务需求,需要对时间序列数据进行趋势描述和突变点检测,做一个程序自动识别趋势变化趋势.然而趋势以及突变点检测的方法发展较为缓慢,近年来也没有什么新的方法出现.我做的也比较浅显,后续继续探索补充算 ...
最新文章
- ceph osd混合部署和普通部署
- BAT新风向标:程序员有福利了!
- CTFshow 命令执行 web34
- 初学者怎么自学python编程_怎样自学python编程?从零开始学习python,400集免费教程!...
- PHP报不存在图像文件,使用TP3.2.3图片文件上传显示不存在图像文件
- Goroutine心跳检测
- STM32|4-20mA输出电路
- 深度学习入门实例——基于keras的mnist手写数字识别
- 在pysot中的SiamRPN and SiamRPN++论文结构和代码对应分析
- 分享各类优秀与设计师制作公司相关的资源网站
- 《动手学深度学习》(PyTorch版)代码注释 - 48 【Multi-scale_target_detection】
- 一个例子说明贝叶斯定理
- 为什么今年的苹果手机不支持5G?原因有四点,网友:错怪库克了
- 黑色的计算机英语造句,黑色英语怎么写
- oracle返回当年的第一天,oracle 获取 当年第一天 当月第一天
- 启动虚拟机,电脑蓝屏强制自动重启问题解决
- python 字符串转16进制数字
- php 代码梅花,wordpress梅花飘落效果制作
- 如此丝滑,Hive 中的各种常用 set 设置用起来就是爽啊
- 计算机画大熊猫教案,幼儿园大班《画熊猫》教案