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