📄 modeloutdata.m
字号:
function [G,RSS,Kn,nols]=modeloutdata(region,X,ph,id,z,vmax)
% construct linear regression models: z=a1*x1+a2*x2+ ... +c
% G - models, RSS - residual sums of squres, Kn - number of parameters
% Kaijun WANG kjwang@mail.xidian.edu.cn, sunac@bigfoot.com, May 2006.
nr=size(region,1);
[nl,nx]=size(X);
for in=1:nr
tu=[region(in,2):region(in,5)]';
n=length(tu); % n points in the region
% sum of data points in the region
for j=1:nx
x=X(tu,j);
h1(j)=sum(x); % sum of x(j)
hm(j)=mean(x); % mean x(j)
k=id(j,j);
x=ph(tu,k);
h2(j)=sum(x); % sum of x(j)^2
end
% calculate L(i,j)
for i=1:nx
L(i,i)=h2(i)-n*hm(i)^2;
for j=i+1:nx
k=id(i,j);
x=ph(tu,k);
h12=sum(x);
L(i,j)=h12-n*hm(i)*hm(j);
L(j,i)=L(i,j);
end
end
% solve for im+1 regression coefficients by least-squares
% find coefficients ai for model z=a1*x1+a2*x2+ ... +a0*I
k=0;
ks=setdiff([1:nx],z); % independent variables
if vmax=='allcoef'
vm=1;
elseif vmax==0
vm=length(ks);
elseif vmax>0
vm=vmax;
end
for im=1:vm
if vmax=='allcoef'
km=ks;
nk=size(km,1);
else
km=combntns(ks,im); % combinations of x(i)
nk=size(km,1);
end
for i=1:nk
k=k+1;
ki=km(i,:);
Lxz=L(ki,z); % x(i)-z correlated matrix
Lxx=L(ki,ki); % x(i)-x(j) correlated matrix
a=Lxx\Lxz; % im regression coefficients
c=zeros(nx,1);
c(ki)=a;
% residual sums of squres for model G (same as next method)
if 0
s1=0; s2=0; s3=0;
for j=1:nx
s1=s1+L(j,j)*c(j)^2;
s2=s2+L(j,z)*c(j);
for l=j+1:nx
s3=s3+c(j)*c(l)*L(j,l);
end
end
RSS(k,in)=L(z,z)+s1-2*s2+2*s3;
end
c(z)=hm(z)-hm*c; % constant coefficient
a=[a;c(z)];
x=X(tu,:);
Z=x(:,z);
Y=[x(:,ki) ones(n,1)] ;
% solve linear regression by invert matrix, same as above a=Lxx\Lxz
% [a2,res2,sigma]=mregressReina(Z,x(:,ki),1);
% this subfunction is same as: xv=inv(Y'*Y); a=xv*Y'*Z;
c([ki z])=a;
G(k,:,in)=c'; % coefficients of model G
x=find(ki>nx/2); % find polynomial items
nols(k,in)=length(x);
Kn(k,in)=im+2; % number of parameters
Z_hat = Y *a; % fitted regression values
residuals = Z - Z_hat;
% residual sums of squres
RSS(k,in)=norm(residuals)^2;
end % end i
end % end im
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -