第八星系人气爱 发表于 2024-2-29 23:02:27

利用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',);
微信搜索“第八星系人造大气理论爱好者”公众号,关注获取文章数据

2271030262 发表于 2024-4-27 01:10:33

666

SuzannaGre 发表于 2024-4-27 17:18:35

我喜欢你的这种解决方式,非常创新!
页: [1]
查看完整版本: 利用MATLAB进行滑动t检验