Matlab一元线性拟合及F检验

matlab小工具
计算线性拟合趋势及F检验

function[yx,fpd]=nihe(ysh,a)
% 一元线性拟合函数 2022/9/10 zg
% ysh 原始函数
% 主要使用polyfit 
% 多建立一列代表x轴的函数,然后拟合,输出结果,进行f检验
% a 检验概率,例如0.05 --> 95%
% yx 为趋势系数
% fpd 为是否过检验,1表示通过,NaN不通过
sz=size(ysh);  % 根据自己的数据,我的数据是lonXlatXtime 所以选第三维
x=1:sz(3);  % 这里根据实际情况建立X轴序列,相当于给需要计算的数据进行编号(等间隔或者不等间隔)
for i=1:sz(1)
    for j=1:sz(2)
        y=squeeze(ysh(i,j,:));
        [P,S]=polyfit(x',y,1);
        yx(i,j)=P(:,1);
        % F % 这部分参考了一篇文章的,找到再补
        [Yfore,~]= polyval(P,x,S); 
        Q=nansum((y-Yfore').^2);
        U=nansum((Yfore'-nanmean(y)).^2);
        F=U/(Q/(length(x)-2));  %查F表进行显著性检验 
        Fdz=finv(1-a,1,sz(3)-2);   % finv 相当于查表
        if F>Fdz       
            fpd(i,j)=1;
        else
            fpd(i,j)=NaN; 
        end
    end
end

你可能感兴趣的:(工具,matlab,开发语言,算法)