爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4353|回复: 2

MATLAB 进行MK检验和滑动T检验问题

[复制链接]

新浪微博达人勋

发表于 2016-4-13 17:31:41 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图:
问题概况: 用MATLAB画出的MK检验突变点与滑动T检验得到的不一致,改怎么处理?
我看过提问的智慧: 看过
自己思考时长(天): 3

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 liuwenyan150825 于 2016-4-13 17:43 编辑

用MK检验与滑动T检验得到的结果不一致,怎么办?
MK检验程序
  1. <p><p><p>MK检验程序
  2. clc,clear;
  3. [a,textdata]=xlsread('问题.xlsx');
  4.    s=mean(reshape(a(:,2),12,[]));
  5. s;
  6. timeSeries=[1960:2010]';
  7. dataSeries=s';  %
  8. dataCount=length(dataSeries);
  9. %% 正序列计算
  10. SK=zeros(size(dataSeries));  % 定义SK
  11. UFK=zeros(size(dataSeries));  % 定义UFK
  12. s=0;
  13. for i=2:dataCount
  14.     for j=1:i
  15.         if dataSeries(i)>dataSeries(j)
  16.             s=s+1;
  17.         else
  18.             s=s+0;
  19.         end
  20.     end
  21.     SK(i)=s;
  22.     E=i*(i-1)/4;  % SK均值
  23.     Var=i*(i-1)*(2*i+5)/72; % SK方差
  24.     UFK(i)=(SK(i)-E)/sqrt(Var);
  25. end
  26. %% 逆序列计算
  27. oppSK=zeros(size(dataSeries));
  28. UBK=zeros(size(dataSeries));
  29. s=0;
  30. opphumiditySeries=flipud(dataSeries);
  31. for i=2:dataCount
  32.     for j=1:i
  33.         if opphumiditySeries(i)>opphumiditySeries(j)
  34.             s=s+1;
  35.         else
  36.             s=s+0;
  37.         end
  38.     end
  39.     oppSK(i)=s;
  40.     E=i*(i-1)/4;  % SK均值
  41.     Var=i*(i-1)*(2*i+5)/72; % SK方差
  42.     UBK(i)=0-(oppSK(i)-E)/sqrt(Var);
  43. end
  44. oppUBK=flipud(UBK);
  45. %  xlswrite(outputdata,UFK,'Sheet2','A1');% 输出结果
  46. %  xlswrite(outputdata,oppUBK,'Sheet2','B1');
  47. %% 制图
  48. figure(3);
  49. plot(timeSeries,UFK,'r-','linewidth',1.5);
  50. hold on
  51. plot(timeSeries,oppUBK,'b-.','linewidth',1.5);
  52. plot(timeSeries,1.96*ones(dataCount,1),':','linewidth',1);
  53. axis([min(timeSeries),max(timeSeries),-5,5]);
  54. legend('UF统计量','UB统计量','0.05显著水平');
  55. xlabel('t (year)','FontName','TimesNewRoman','FontSize',12);
  56. ylabel('统计量','FontName','TimesNewRoman','Fontsize',12);
  57. hold on
  58. plot(timeSeries,0*ones(dataCount,1),'-.','linewidth',1);
  59. plot(timeSeries,1.96*ones(dataCount,1),':','linewidth',1);
  60. plot(timeSeries,-1.96*ones(dataCount,1),':','linewidth',1);

  61. p=[];u=[];
  62. for n=1:length(UFK)
  63.        if UFK(n)-oppUBK(n)>0
  64.            p=[p,n];
  65.        else
  66.            u=[u,n];
  67.        end
  68. end
  69. p
  70. u
  71. nian=timeSeries;
  72. delete=nian(p)





  73. 滑动T检验程序

  74. clc,clear;
  75. [a,textdata]=xlsread('问题.xlsx');
  76.    s=mean(reshape(a(:,2),12,[]));
  77. s;
  78. timeSeries=[1960:2010]';
  79. dataSeries=s';  %
  80. dataCount=length(dataSeries);

  81. %% 设置步长与检验值
  82. step=10;  % 步长
  83. v=step+step-2; % 计算自由度
  84. ttest=1.734; % 查表得t检验值,修改
  85. len1=step;
  86. len2=step;
  87. x=timeSeries(step:dataCount-step);
  88. for i=step:dataCount-step
  89.     n1=dataSeries(i-step+1:i);
  90.     n2=dataSeries(i+1:i+step);
  91.     mean1=mean(n1);
  92.     mean2=mean(n2);
  93.     c=(len1+len2)/(len1*len2);
  94.     var1=1/len1*sum((n1-mean1).^2);
  95.     var2=1/len2*sum((n2-mean2).^2);
  96.     delta1=len1*var1+len2*var2;
  97.     delta=delta1/(len1+len2-2);
  98.     t(i-step+1)=(mean1-mean2)/sqrt(delta*c);
  99. end
  100. %% 制图
  101. figure(1);
  102. plot(x,t,'r-','linewidth',1.5);
  103. xlabel('t (年)','FontName','TimesNewRoman','FontSize',12);
  104. ylabel('统计量','FontName','TimesNewRoman','Fontsize',12);
  105. axis([min(x),max(x),-4,4]);
  106. hold on
  107. plot(x,0*ones(i-step+1,1),'-.','linewidth',1);
  108. plot(x,ttest*ones(i-step+1,1),':','linewidth',1);% 更改数字
  109. plot(x,-ttest*ones(i-step+1,1),':','linewidth',1);% 更改数字
  110. legend('t统计量','0.05显著水平');
  111. 所用数据为51年的观测值,上传不上去啊</p><p>1028416496这是我的qq,知道的请加我一下,我可以把数据再发给您
  112. </p>
复制代码





密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-16 19:10:35 | 显示全部楼层
你可以尝试改变滑动t检验的步长试一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-4-21 09:00:57 | 显示全部楼层
不好意思,刚看到,步长我基本上已经都尝试了,但是还是不行,要不就是MK检验与滑动T检验的不重合,要不就是有两个交点
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表