逐步回归matlab程序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:m
v(i)=r(i,m+1)^2/r(i,i); %计算各因子的方差贡献
end
max=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:m
v(i)=r(i,m+1)^2/r(i,i); %计算各因子的方差贡献
end
max=1;
min=1;
for i=1:m
if((max==1)&&(k(i)==1)&&(k(1)==0))||((v(i)>v(max))&&(k(i)==1)) max=i;
end
if((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;
end
else
F2=v(min)/(r(m+1,m+1)/(n-l-1));
if((F2F)
disp( [ '引入第', num2str(max), '个变量']);
k(max)=0; %如果变量i引入,则对应的k变为0
L=L+1;
l=l+1;
r=matdel(max,m+1,r);
q=1;
end
end
end
end
disp('没有可剔除或引入的变量,逐步回归结束');
a=zeros(L);
j=1;
for i=1:m
if (k(i)==0)
a(j)=i;
j=j+1;
end;
end;
xx=x(:,a(1));
for i=2:L
xx=[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','w');
ss=['引入第',num2str(a(1))];
for i=2:L
ss=[ss,',',num2str(a(i))];
end
ss=[ss,'个变量'];
ss1=['y=(',num2str(b(1)),'x',num2str(a(1)),')'];
for i=2:L
ss1=[ss1,'+(',num2str(b(i)),'x',num2str(a(i)),')'];
ss2=['复相关系数=',num2str(R)]; ss3=['剩余方差=',num2str(rs)]; ss4=['F统计量=',num2str(f)];
ss5=['剩余平方和=',num2str(Q)]; fprintf(fid,'%s\n',ss);
fprintf(fid,'%s\n',ss1);
fprintf(fid,'%s\n',ss2);
fprintf(fid,'%s\n',ss3);
fprintf(fid,'%s\n',ss4);
fprintf(fid,'%s',ss5);
fclose(fid);
end
本文档为【逐步回归matlab程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。