利用MATLAB进行滑动t检验
作者:第八星系-石头人邮箱:2205455617@qq.com
clc;clear;close all;
%% 读取数据
load data.mat % 读取数据
time = data(:,1); % 时间序列数据
sw = data(:,2); % 对应数据
滑动t检验
step = 3; n1 = 3; n2 = 3; % 设置子序列步长
v = step+step-2; % 自由度
t=[];
ttest=2.78; % alpha=0.05,自由度=4时,检验值t=2.78
for i = 1:length(time)-step-step+1
x1 = sw(i:i+step-1);
x2 = sw(i+step:i+step+step-1);
meanx1 = mean(x1);
meanx2 = mean(x2);
a = meanx1-meanx2;
b = (n1+n2)/(n1*n2);
varx1 = var(x1);
varx2 = var(x2);
c= (n1*varx1+n2*varx2)/(n1+n2-2);
t1=a/sqrt(c*b);
t=cat(1,t,t1); % 按列连接(列数相同)
end
画图
x = time(step:length(time)-step);
figure(2)
plot(x,t,'r-','linewidth',1.2)
axis();
xlabel('年份','fontname','微软雅黑','FontSize',13);
ylabel('t 统计量','fontname','微软雅黑','FontSize',13);
hold on
plot(xlim,,'b--','linewidth',0.8)
hold on
plot(xlim,[-ttest, -ttest],'b--','linewidth',0.8)
hold on
plot(xlim,,'k-','linewidth',0.8)
legend('t 统计量(step=3)','0.05显著水平','fontname','微软雅黑','FontSize',11,'Position',);
完整代码
%% 利用MATLAB进行滑动t检验
clc;clear;close all;
%% 读取数据
load data.mat % 读取数据
time = data(:,1); % 时间序列数据
sw = data(:,2); % 对应数据
%%滑动t检验
step = 3; n1 = 3; n2 = 3; % 设置子序列步长
v = step+step-2; % 自由度
t=[];
ttest=2.78; % alpha=0.05,自由度=4时,检验值t=2.78
for i = 1:length(time)-step-step+1
x1 = sw(i:i+step-1);
x2 = sw(i+step:i+step+step-1);
meanx1 = mean(x1);
meanx2 = mean(x2);
a = meanx1-meanx2;
b = (n1+n2)/(n1*n2);
varx1 = var(x1);
varx2 = var(x2);
c= (n1*varx1+n2*varx2)/(n1+n2-2);
t1=a/sqrt(c*b);
t=cat(1,t,t1); % 按列连接(列数相同)
end
x = time(step:length(time)-step);
figure(2)
plot(x,t,'r-','linewidth',1.2)
axis();
xlabel('年份','fontname','微软雅黑','FontSize',13);
ylabel('t 统计量','fontname','微软雅黑','FontSize',13);
hold on
plot(xlim,,'b--','linewidth',0.8)
hold on
plot(xlim,[-ttest, -ttest],'b--','linewidth',0.8)
hold on
plot(xlim,,'k-','linewidth',0.8)
legend('t 统计量(step=3)','0.05显著水平','fontname','微软雅黑','FontSize',11, ...
'Position',);
微信搜索“第八星系人造大气理论爱好者”公众号,关注获取文章数据
666 我喜欢你的这种解决方式,非常创新!
页:
[1]