偏最小二乘回归是一种新型的多元统计数据
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
方法
偏最小二乘回归是一种新型的多元统计数据分析方法,它与1983年由伍德和阿巴诺等人首次提出。近十年来,它在理论、方法和应用方面都得到了迅速的发展。密西根大学的弗耐尔教授称偏最小二乘回归为第二代回归分析方法。 偏最小二乘回归方法在统计应用中的重要性主要的有以下几个方面:
(1)偏最小二乘回归是一种多因变量对多自变量的回归建模方法。
(2)偏最小二乘回归可以较好地解决许多以往用普通多元回归无法解决的问题。在普通多元线形回归的应用中,我们常受到许多限制。最典型的问题就是自变量之间的多重相关性。如果采用普通的最小二乘方法,这种变量多重相关性就会严重危害参数估计,扩大模型误差,并破坏模型的稳定性。变量多重相关问题十分复杂,长期以来在理论和方法上都未给出满意的
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
,这一直困扰着从事实际系统分析的工作人员。在偏最小二乘回归中开辟了一种有效的技术途径,它利用对系统中的数据信息进行分解和筛选的方式,提取对因变量的解释性最强的综合变量,辨识系统中的信息与噪声,从而更好地克服变量多重相关性在系统建模中的不良作用。
(3)偏最小二乘回归之所以被称为第二代回归方法,还由于它可以实现多种数据分析方法的综合应用。
偏最小二乘回归=多元线性回归分析+典型相关分析+主成分分析
由于偏最小二乘回归在建模的同时实现了数据结构的简化,因此,可以在二维平面图上对多维数据的特性进行观察,这使得偏最小二乘回归分析的图形功能十分强大。在一次偏最小二乘回归分析计算后,不但可以得到多因变量对多自变量的回归模型,而且可以在平面图上直接观察两组变量之间的相关关系,以及观察样本点间的相似性结构。这种高维数据多个层面的可视见性,可以使数据系统的分析内容更加丰富,同时又可以对所建立的回归模型给予许多更详细深入的实际解释。
一、 偏最小二乘回归的建模策略\原理\方法
1
1.1建模原理
设有 q个因变量{}和p自变量{}。为了研究因变量和自变量y,...,yx,...,x1q1p
的统计关系,我们观测了n个样本点,由此构成了自变量与因变量的数据表X={}和.Y={}。偏最小二乘回归分别在X与Y中提取出成分 和x,...,xy,...,yt1p1q1
(也就是说, 是 的线形组合, 是 的线形组合).在提取这x,...,xy,...,yutu1p1q111
两个成分时,为了回归分析的需要,有下列两个
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
:
(1) 和应尽可能大地携带他们各自数据表中的变异信息; tu11
(2) 与 的相关程度能够达到最大。 tu11
这两个要求表明,和 应尽可能好的代表数据表X和Y,同时自变量的成分 tu11
对因变量的成分 又有最强的解释能力。 tu11
在第一个成分和 被提取后,偏最小二乘回归分别实施X 对 的回归tut111以及 Y对 的回归。如果回归方程已经达到满意的精度,则算法终止;否则,u1
将利用 X被解释后的残余信息以及Y 被 解释后的残余信息进行第二轮的tt11
成分提取。如此往复,直到能达到一个较满意的精度为止。若最终对 X共提取了 m个成分对偏最小二乘回归将通过实施 的tttyt11mkm,…,,,…,,回归,然后再表达成关于原变量 的回归方程,k=1,2,…,q 。 ykxx1m,…,,
1.2计算方法推导
为了数学推导方便起见,首先将数据做
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
化处理。X 经标准化处理后的数据矩阵记为=(,…,),经标准化处理后的数据矩阵记为EYj0n,pEE010p
F=(,…,)。 FF0010qn,p
第一步 记是的第一个成分,是的第一个轴,它是一个单位向量,twEE1100
既||||=1。 w1
记是F的第一个成分,=F 是F的第一个轴,并且||||=1。 uu10100ccc111。
2
如果要能分别很好的代表X与Y中的数据变异信息,根据主成分分tu11,
析原理,应该有
Var()max u,1
Var()t,max 1
tu另一方面,由于回归建模的需要,又要求对有很大的解释能力,有典型相关11
tu分析的思路,与的相关度应达到最大值,既 11
,tur()max 11,
因此,综合起来,在偏最小二乘回归中,我们要求与的协方差达到最大,既 tu11
Cov()=r(),tutuVar()Var() max 1111tu11,,
正规的数学表述应该是求解下列优化问题,既
max,wcEF0011,wc11',,1,ww11s.t ,',1,cc11,
'22'因此,将在||||=1和||||=1的约束条件下,去求()的最大w1wccEF11100
值。
如果采用拉格朗日算法,记
''''s=Fw01wccwc,,E1111112, (,1), (,1) 0
对s分别求关于和的偏导并令之为零,有 w1c,,121,,
,s'2 =F=0 (1 -2) w01,cE11 ,0,w1
,s' ==0 (1-3) Ew201c,F120 ,,c1
,s' =,(,1)=0 (1-4) w1w1,,1
3
,s' =,(,1)=0 (1-5) cc11,,2
由式(1-2)~(1-5),可以推出
'' 2,,2,,wEFc,,Ew,Fc,1012010101
''记,所以,正是优化问题的目标函数值. ,,2,,2,,wEFc,10112011把式(1-2)和式(1-3)写成
' (1-6) EFc,,w00111
' (1-7) FEw,,c00111将式(1-7)代入式(1-6),有
2'' (1-8) EFFEw,,w0000111
同理,可得
2'' (1-9) FEEFc,,c0000111
2''可见,是矩阵的特征向量,对应的特征值为.是目标函数值,它要EFFEw,,0000111
''求取最大值,所以, 是对应于矩阵最大特征值的单位特征向量.而另EFFEw00001
2''一方面, 是对应于矩阵最大特征值的单位特征向量. FEEFc,000011求得轴和后,即可得到成分 wc11
t,Ew101
u,Fc101
然后,分别求和F对,的三个回归方程 Etu0011
' (1-10) E,tp,E1011
', (1-11) F,uq,F1101
' (1-12) F,tr,F1011
式中,回归系数向量是
4
'Et01 (1-13) p,12||t||1
'Fu01 (1-14) q,12||u||1
'Ft01 (1-15) r,12||t||1
,而,,分别是三个回归方程的残差矩阵. EFF111
第二步 用残差矩阵和取代和,然后,求第二个轴和以及第二FEEFwc002112
个成分,,有 tu22
= wtE221
= uFc212
'' ,,,t,u,,wEFc2122212
2''是对应于矩阵最大特征值的特征值, 是对应于矩阵wEFFE,c1121122''最大特征值的特征向量.计算回归系数 FEEF1111
'Et12 p,22||t||2
'Ft12 r,22||t||2因此,有回归方程
' E,tp,E2122
' F,tr,F2122如此计算下去,如果X的秩是A,则会有
'' (1-16) E,tp,?,tpA1A01
''F,tr,?,tr,F (1-17) A1AA01
由于,均可以表示成E,?,E的线性组合,因此,式(1-17)还可以还原t,?,t010p1A
5
*成关于的回归方程形式,即 x*,Ey,Fj0kk0k
** k=1,2,…,q y*,,x,?,,x,FpkkkpAk11
是残差距阵的第k列。 FFAkA
1.3交叉有效性
下面要讨论的问题是在现有的数据表下,如何确定更好的回归方程。在许多情形下,偏最小二乘回归方程并不需要选用全部的成分进行回归建模,而t,?,t1A
是可以象在主成分分析一样,采用截尾的方式选择前m 个成分
,仅用这m 个后续的成分就可以得到一个预测性较好t,?,t(m,A,A,秩(X))1m
的模型。事实上,如果后续的成分已经不能为解释提供更有意义的信息时,采用F0
过多的成分只会破坏对统计趋势的认识,引导错误的预测结论。在多元回归分析一章中,我们曾在调整复测定系数的内容中讨论过这一观点。
下面的问题是怎样来确定所应提取的成分个数。
在多元回归分析中,曾介绍过用抽样测试法来确定回归模型是否适于预测应用。我们把手中的数据分成两部分:第一部分用于建立回归方程,求出回归系数估计量
2ˆˆ,拟合值以及残差均方和;再用第二部分数据作为实验点,代入刚才所求yb,BBB
222ˆˆˆˆ得的回归方程,由此求出。一般地,若有,则回归方程会有更好的预y和,,,,TTTB
22ˆˆ测效果。若 ,则回归方程不宜用于预测。 ,,,,TB
在偏最小二乘回归建模中,究竟应该选取多少个成分为宜,这可通过考察增加一个新的成分后,能否对模型的预测功能有明显的改进来考虑。采用类似于抽样测试法的工作方式,把所有n个样本点分成两部分:第一部分除去某个样本点的i所有样本点集合(共含n-1个样本点),用这部分样本点并使用h个成分拟合一个回归方程;第二部分是把刚才被排除的样本点代入前面拟合的回归方程,得到y在ij
ˆ样本点上的拟合值y。对于每一个=1,2,…,n,重复上述测试,则可以定义yiihj(,i)j的预测误差平方和为PRESS,有 hj
n2ˆPRESS,(y,y) (1-18) ,(,)hjijhji,1i
6
定义Y 的预测误差平方和为,有 PRESSh
p
(1-19) PRESS,PRESS,hhj,1j
显然,如果回归方程的稳健性不好,误差就很大,它对样本点的变动就会十分敏感,这种扰动误差的作用,就会加大的值。 PRESSh
另外,再采用所有的样本点,拟合含h 个成分的回归方程。这是,记第个样本i
ˆ点的预测值为,则可以记的误差平方和为,有 yySShjijhj
n2ˆ (1-20) SS,(y,y),hjijhji,1i
定义Y的误差平方和为,有 SSh
p
(1-21) SS,SS,hhj,1j
一般说来,总是有大于,而则总是小于。下面比较和PRESSSSSSSSSShhhh,1h,1
。是用全部样本点拟合的具有h-1个成分的方程的拟合误差; PRESSSShh,1
增加了一个成分,但却含有样本点的扰动误差。如果h个成分的回归方tPRESShh
程的含扰动误差能在一定程度上小于(h-1)个成分回归方程的拟合误差,则认为增加一个成分,会使预测结果明显提高。因此我们希望的比值能t(PRESS/SS)hhh,1越小越好。在SIMCA-P软件中,指定
2 (PRESS/SS),0.95hh,1
PRESS,0.95SS即时,增加成分t就是有益的;或者反过来说,当hh,1h
PRESS,0.95SS时,就认为增加新的成分t,对减少方程的预测误差无明显hh,1h
的改善作用.
另有一种等价的定义称为交叉有效性。对每一个变量y,定义 k
PRESS2hk Q (1-22) ,1,hkSS(h,1)k
7
对于全部因变量Y,成分交叉有效性定义为 th
q
PRESS,hkPRESS2k,1h (1-23) Q,1,,1,hSS(h,1)SS,(h,1)k
用交叉有效性测量成分对预测模型精度的边际贡献有如下两个尺度。 th
22(1) 当时, 成分的边际贡献是显著的。显而易tQ,(1,0.95),0.0975hh
22见, 与是完全等价的决策原则。 Q,0.0975(PRESS/SS),0.95hhh,1(2) 对于k=1,2,…,q,至少有一个k,使得
2 Q,0.0975h
这时增加成分,至少使一个因变量的预测模型得到显著的改善,因此,也tyhk可以考虑增加成分是明显有益的。 th
明确了偏最小二乘回归方法的基本原理、方法及算法步骤后,我们将做
实证分析。
附 录 function w=maxdet(A)
%求矩阵的最大特征值
[v,d]=eig(A);
[n,p]=size(d);
d1=d*ones(p,1);
d2=max(d1);
8
i=find(d1==d2);
w=v(:,i);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [c,m,v]=norm1(C) %对数据进行标准化处理
[n,s]=size(C);
for i=1:n
for j=1:s
c(i,j)=(C(i,j)-mean(C(:,j)))/sqrt(cov(C(:,j)));
end
end
m=mean(C);
for j=1:s
v(1,j)=sqrt(cov(C(:,j))); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [t,q,w,wh,f0,FF]=fun717(px,py,C)
% px自变量的输入个数
% py输入因变量的个数。
% C输入的自变量和因变量组成的矩阵
% t提取的主成分
% q为回归系数。
% w最大特征值所对应的特征向量。
9
% wh处理后的特征向量
% f0回归的标准化的方程系数
% FF原始变量的回归方程的系数
c=norm1(C); %norm1为标准化函数
y=c(:,px+1:px+py); %截取标准化的因变量
E0=c(:,1:px);
F0=c(:,px+1:px+py);
A=E0'*F0*F0'*E0;
w(:,1)=maxdet(A); %求最大特征向量
t(:,1)=E0*w(:,1); %提取主成分
E(:,1:px)=E0-t(:,1)*(E0'*t(:,1)/(t(:,1)'*t(:,1)))';
% 获得回归系数
p(:,1:px)=(E0'*t(:,1)/(t(:,1)'*t(:,1)))';
for i=0:px-2
B(:,px*i+1:px*i+px)=E(:,px*i+1:px*i+px)'*F0*F0'*E(:,px*i+1:px*i+px);
w(:,i+2)=maxdet(B(:,px*i+1:px*i+px));
% maxdet为求最大特征值的函数
t(:,i+2)=E(:,px*i+1:px*i+px)*w(:,i+2);
p(:,px*i+px+1:px*i+2*px)=(E(:,px*i+1:px*i+px)'*t(:,i+2)/(t(:,i+2)'*t(:,i+2)))';
E(:,px*i+px+1:px*i+2*px)=E(:,px*i+1:px*i+px)-t(:,i+2)*(E(:,px*i+1:px*i+px)'*t(:,i+2)/(t(:,i+2)'*t(:,i+2)))';
end
for s=1:px
10
q(:,s)=p(1,px*(s-1)+1:px*s)';
end
[n,d]=size(q);
for h=1:px
iw=eye(d);
for j=1:h-1
iw=iw*(eye(d)-w(:,j)*q(:,j)');
end
wh(:,h)=iw*w(:,h);
end
for j=1:py
zr(j,:)=(regress1(y(:,j),t))'; %求回归系数 end
for j=1:px
fori=1:py %
生成标准化变量的方程的系数矩阵
w1=wh(:,1:j);
zr1=(zr(i,1:j))';
f0(i,:,j)=(w1*zr1)';
end
[normxy,meanxy,covxy]=norm1(C); %no
rmxy标准化后的数据矩阵
11
%meanxy每一列的均值
%covxy每一列的方差
ccxx=ones(py,1)*meanxy(1,1:px);
ccy=(covxy(1,px+1:px+py))'*ones(1,px);
ccx=ones(py,1)*(covxy(1,1:px));
ff=ccy.*f0(:,:,j)./ccx;
fff=-(sum((ccy.*ccxx.*f0(:,:,j)./ccx)')-meanxy(1,px+1:px+py))';
FF(:,:,j)=[fff,ff]; %生成
原始变量方程的常数项和系数矩阵
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [r,Rdyt,RdYt,RdYtt,Rdytt,VIP]=fun8y(px,py,c)
X=c(:,1:px);
Y=c(:,px+1:px+py);
x=norm1(X);
y=norm1(Y);
[t,q,w]=fun717(px,py,[X,Y]);
r1=corrcoef([y,t]);
r=r1(py+1:px+py,1:py)';
Rdyt=r.^2;
RdYt=mean(Rdyt)
for m=1:px
RdYtt(1,m)=sum(RdYt(1,1:m)');
end
for j=1:py
for m=1:py
Rdytt(j,m)=sum(Rdyt(j,1:m)');
12
end
end
for j=1:px
for m=1:px
Rd(j,m)=RdYt(1,1:m)*((w(j,1:m).^2)');
end
end
for j=1:px
VIP(j,:)=sqrt((px*ones(1,px)./RdYtt).*Rd(j,:));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [r,Rdxt,RdXt,RdXtt,Rdxtt]=fun8x(px,py,c)
X=c(:,1:px);
Y=c(:,px+1:px+py);
x=norm1(X);
y=norm1(Y);
[t,q,w]=fun717(px,py,[X,Y]);
r1=corrcoef([x,t]);
r=r1(px+1:px+px,1:px)';
Rdxt=r.^2;
RdXt=mean(Rdxt);
for m=1:px
RdXtt(1,m)=sum(RdXt(1,1:m)');
end
for j=1:px
for m=1:px
Rdxtt(j,m)=sum(Rdxt(j,1:m)');
end
end
13
% for j=1:px
% for m=1:px
% Rd(j,m)=RdXt(1,1:m)*((w(j,1:m).^2)');
% end
% end
% for j=1:px
% VIP(j,:)=sqrt((px*ones(1,px)./RdYtt).*Rd(j,:));
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [t,u]=TU(px,py,C)
%t提取的自变量的主成分
%u 提取的因变量的主成分
c=norm1(C);
y=c(:,px+1:px+py);
E0=c(:,1:px);
F0=c(:,px+1:px+py);
A=E0'*F0*F0'*E0;
w(:,1)=maxdet(A);
t(:,1)=E0*w(:,1);
B=F0'*E0*E0'*F0;
cc(:,1)=maxdet(B);
u(:,1)=F0*cc(:,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function drew(px,py,c)
X=c(:,1:px);
Y=c(:,px+1:px+py);
[line,l]=size(Y);
[t,q,w,wh,f0,FF]=fun717(px,py,c);
YY=X*FF(:,2:px+1,3)'+ones(line,1)*FF(:,1,3)';
14
subplot(1,1,1,1)
bar(f0(:,:,3))
title(' 直方图')
legend('SG','TZBFB','FHL','JK','HPZD','JPZD','TZ','ZG','GPK')
grid on
plot(YY(:,4),Y(:,4),'+');
lsline
for i=1:py
v=mod(i,4);
d=(i-v)/4;
subplot(2,2,v,d+1)
plot(YY(:,i),Y(:,i),'*');
lsline
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [ Qhj,Qh,prey]=crossval7(px,py,c)
%px是自变量的个数,
%py是因量
PRESShj=zeros(px,py);
X=c(:,1:px);
Y=c(:,px+1:px+py);
x=norm1(X);
y=norm1(Y);
[line,row]=size(x);
for h=1:px
for j=1:line
15
newx=X;
newy=Y;
newx(j,:)=[];
newy(j,:)=[];
[t,p0,w,wh,f0,FF]=fun717(px,py,[newx,newy]);
prey(j,:,h)=X(j,:)*FF(:,2:px+1,h)'+FF(:,1,h)';
end
PRESShj(h,:)=sum((Y-prey(:,:,h)).^2);
end
PRESSh=(sum(PRESShj'))';
for h=1:px
[t1,p0,w,wh,f0,FF]=fun717(px,py,c);
prey2(:,:,h)=X(:,:)*FF(:,2:px+1,h)'+ones(line,1)*F
F(:,1,h)';
SShj(h,:)=sum((Y-prey2(:,:,h)).^2);
end
SSh=(sum(SShj'))';
Qhj=ones(px-1,py)-PRESShj(2:px,:)./SShj(1:px
-1,:); % 错位
Qh=ones(px-1,1)-PRESSh(2:px,1)./SSh(1:px-1,1);
16
17