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)&(k(i)=1)&(k(1)=0)|(v(i)v(max)&(k(i)=1)max=i;。
2、endif(min=1)&(k(i)=0)&(k(1)=1)|(v(i)F)disp( 引入第, num2str(max), 个变量);k(max)=0;L=L+1;l=l+1;r=matdel(max,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(没有可剔除或引入的变量,逐步回归结束。
3、);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);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,。
4、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。