1、function stepregress(x,y,F)x=zscore(x,1); %数列标准化y=zscore(y,1); %数列标准化r=corrcoef(x,y);l=0; %消去的次数L=0; %引入变量的个数n,m=size(x); %m 为变量的个数,n 为观测的次数k=ones(m);q=1; %判断逐步回归是否继续while(q=1)q=0; for i=1:mv(i)=r(i,m+1)2/r(i,i); %计算各因子的方差贡献endmax=1;min=1;for i=1:mif(max=1)endif(min=1)k(max)=0;L=L+1;l=l+1;r=matdel(m
2、ax,m+1,r); %matdel 为消去变换程序q=1;endelseF2=v(min)/(r(m+1,m+1)/(n-l-1);if(F2F)disp( 引入第 , num2str(max), 个变量);k(max)=0; %如果变量 i 引入,则对应的 k 变为 0L=L+1;l=l+1;r=matdel(max,m+1,r);q=1;endendendenddisp(没有可剔除或引入的变量,逐步回归结束);a=zeros(L);j=1;for i=1:mif (k(i)=0)a(j)=i;j=j+1;end;end;xx=x(:,a(1);for i=2:Lxx=xx x(:,a(i
3、);end;b=regress(y,xx); %回归系数R=sqrt(1-r(m+1,m+1); %复相关系数yyy=xx*b; %y 的估计值ymean=mean(y); %y 平均值Q=(y-yyy)*(y-yyy); %剩余平方和U=(yyy-ymean)*(yyy-ymean); %回归平方和rs=Q/(n-L-1); %剩余方差f=U/L/(Q/(n-L-1); %F 统计量fid=fopen(result,w);ss=引入第,num2str(a(1);for i=2:Lss=ss,num2str(a(i);endss=ss,个变量;ss1=y=(,num2str(b(1),x,num2str(a(1),);for i=2:Lss1=ss1,+(,num2str(b(i),x,num2str(a(i),);end;ss2=复相关系数=,num2str(R);ss3=剩余方差=,num2str(rs);ss4=F 统计量=,num2str(f);ss5=剩余平方和=,num2str(Q);fprintf(fid,%sn,ss);fprintf(fid,%sn,ss1);fprintf(fid,%sn,ss2);fprintf(fid,%sn,ss3);fprintf(fid,%sn,ss4);fprintf(fid,%s,ss5);fclose(fid);end