一元线性回归的matlab实现(含检验)【更新】说明:正文中命令部分可以直接在Matlab中运行,作者(Yangfd09_LZU)在
MATLAB R2009a(7.8.0.347)中运行通过
%求一元线性回归方程
%数据要求:两行。第一行存放x的观察值,第二行存放y的观察值
%数据文件名:data_yyhg.mat;变量名:test
%load data_yyhg.mat
N=length(test(1,:)); %注:也可以用[M,N]=size(test)
% 但不能用N=size(test(1,:))
sx=0;sx2=0;sy=0;sy2=0;sxy=0;Lxy=0;Lyy=0;
for i=1:N
sx=sx+test(1,i);
sx2=sx2+test(1,i)^2;
sy=sy+test(2,i);
sy2=sy2+test(2,i)^2;
sxy=sxy+test(1,i)*test(2,i);
Lxy=Lxy+(test(1,i)-sum(test(1,:))/N)*(test(2,i)-sum(test(2,:)/N));
Lyy=Lyy+(test(2,i)-sum(test(2,:))/N)^2;
end
r=[N,sx;sx,sx2]\[sy;sxy];
a=r(1);b=r(2);
%F分布检验
U=b*Lxy;
Q=Lyy-U;
F=(N-2)*U/Q;
%拟合优度检验
x=test(1,:);y=a+b*x;eq=sum(test(2,:))/N;
ssd=0;ssr=0;
for i=1:N
ssd=ssd+(test(2,i)-y(i))^2;
ssr=ssr+(y(i)-eq)^2;
end
sst=ssd+ssr;
RR=ssr/sst;
%命令窗口中显示回归方程
str=[blanks(5),'y=','(',num2str(a),')','+','(',num2str(b),')','*x'];
disp(' ')
disp('回归方程为:')
disp(str)