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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值