爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3800|回复: 2

[程序设计] 滑动T检验相关,请大佬指点一下

[复制链接]

新浪微博达人勋

发表于 2017-5-25 10:40:48 | 显示全部楼层 |阅读模式

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

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

x
附上程序:              因为程序也是我在论坛上找到的,由于是小白,所以就根据自己需要处理的数据,稍微改了一下相关数值。   我做的是1961年-2008年的径流突变检测。序列长度选了5,改了一些数值,还有一些不确定怎么改,希望大佬指点一下。

M=load('数据.txt');
x=M(:,1);y=M(:,2);t=zeros(48,1);y1=zeros(48,1);
%MMT方法检验%
%先设定子序列的长度(取n1=5;n2=5)%
n1=5;n2=5;
m=sqrt((1.0/n1)+(1.0/n2));
%开始计算%
for i=5:43
    averx1=mean(y(i-4:i));
    averx2=mean(y(i+1:i+5));
    s1=var(y(i-4:i));  
    s2=var(y(i+1:i+5));
    s=sqrt((n1*s1+n2*s2)/(n1+n2-2));
    t(i-4)=(averx2-averx1)/(s*m);  
end
plot(x(5:48),t,'r-');
y1(:)=2;                   %n=53-2时,显著性检验标准,99.5%
hold on;
plot(x,y1,'k:',x,-y1,'k:');
axis([1961,2008,-3.5,3]);
xlabel('年');ylabel('t');title('MMT(n=48)检验');



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

新浪微博达人勋

发表于 2019-6-12 22:15:02 | 显示全部楼层
想问一下,你的数据第一列是时间吗?下面是我根据自己的数据改的,我也是刚学的,不知道是不是正确,如果有错误请大佬指点一下:
M=xlsread('jiangxue.xlsx');
x=M(:,1);y=M(:,2);t=zeros(40,1);y1=zeros(40,1);
%MMT方法检验%
%先设定子序列的长度(取n1=5;n2=5)%
n1=5;n2=5;%这是选择的步长
m=sqrt((1.0/n1)+(1.0/n2));
%开始计算%
for i=5:35
    averx1=mean(y(i-4:i));
    averx2=mean(y(i+1:i+5));
    s1=var(y(i-4:i));  
    s2=var(y(i+1:i+5));
    s=sqrt((n1*s1+n2*s2)/(n1+n2-2));
    t(i-4)=(averx2-averx1)/(s*m);  
end
plot(x,t,'r-');
y1(:)=2.31;              %自由度为两个序列步长相加减去2,然后查t检验的表,我用的是显著性水平为0.05
hold on;
plot(x,y1,'k:',x,-y1,'k:');
axis([1979,2018,-3.5,3]);
xlabel('年');ylabel('t');title('MMT(n=40)检验');
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-6-12 22:18:57 | 显示全部楼层
想问一下,你的数据第一列是时间吗?下面是我根据自己的数据改的,我也是刚学的,不知道是不是正确,如果有错误请大佬指点一下:
M=xlsread('jiangxue.xlsx');
x=M(:,1);y=M(:,2);t=zeros(40,1);y1=zeros(40,1);
%MMT方法检验%
%先设定子序列的长度(取n1=5;n2=5)%
n1=5;n2=5;%这是选择的步长
m=sqrt((1.0/n1)+(1.0/n2));
%开始计算%
for i=5:35
    averx1=mean(y(i-4:i));
    averx2=mean(y(i+1:i+5));
    s1=var(y(i-4:i));  
    s2=var(y(i+1:i+5));
    s=sqrt((n1*s1+n2*s2)/(n1+n2-2));
    t(i-4)=(averx2-averx1)/(s*m);  
end
plot(x,t,'r-');
y1(:)=2.31;              %自由度为两个序列步长相加减去2,然后查t检验的表,我用的是显著性水平为0.05
hold on;
plot(x,y1,'k:',x,-y1,'k:');
axis([1979,2018,-3.5,3]);
xlabel('年');ylabel('t');title('MMT(n=40)检验');
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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