偏最小二乘(pls)回归分析 matlab

偏最小二乘用于查找两个矩阵(X和Y)的基本关系,即一个在这两个空间对协方差结构建模的隐变量方法。偏最小二乘模型将试图找到X空间的多维方向来解释Y空间方差最大的多维方向。偏最小二乘回归特别适合当预测矩阵比观测的有更多变量,以及X的值中有多重共线性的时候。通过投影预测变量和观测变量到一个新空间来寻找一个线性回归模型。

一、数学原理

为了实现偏最小二乘回归的基本思想,要求t1和u1的协方差最大,即求解下面的优化问题

偏最小二乘(pls)回归分析 matlab_第1张图片

利用拉格朗日乘数法求出w1和c1满足

 

偏最小二乘(pls)回归分析 matlab_第2张图片

偏最小二乘(pls)回归分析 matlab_第3张图片

偏最小二乘(pls)回归分析 matlab_第4张图片

偏最小二乘回归的成分、残差矩阵有许多优良的性质 ,其中之一是成分之间是相互正交的,这在一定程度上消除了多重线性相关性。偏最小二乘回归算法的实质是按照协方差极大化准则,在分解自变量变量数据矩阵 X 的同时,也在分解因变量数据矩阵 Y,并且建立相互对应的解释隐变量与反应隐变量之间的回归关系方程,充分体现了偏最小二乘回归的基本思想。

二、建模原理

假定P个自变量{x1,...,xp}和个因变量{y1,…,yq},构成自变量与因变量的数据表X={x1,...,xp}和Y={y1,…,yq}.在X与F中提取出成分t1和u1,在提取t1和u1成分时,满足t1和u1应尽可能大地携带他们各自数据表中的变异信息,以及t1和u1与的相关程度能够达到最大.第一个成分t1和u1被提取后,分别实施X对t1以及Y对u1的回归.若回归方程此时已经达到满意的精度,则成分确定;否则将利用X被t1以及F被u1解释后的残余信息进行第二轮的成分t2和u2提取,继续实施X和Y对t2和u2的回归,对上述过程进行迭代,直到精度满足要求为止.若最终对X共提取了m个成分t1,…,tm,再通过实施F对t1…,tm的回归,最后都可转化为Y对原变量x1,…,xp的回归方程,完成了偏最小二乘的回归建模.

三、建模过程

step1:数据标准化

step2:求相关系数矩阵

step3:分别提出自变量组与因变量组的成分,在这里我的标准是当前k个成分解释自变量的比率达到90%时,取前k个成分

step4:求k个成分对时标准化指标变量与成分变量之间的回归方程

step5:求因变量与自变量组之间的回归方程,即将step3中的成分带到step4中所得的回归方程,得到标准化指标变量之间的回归方程,再将标准化的回归变量还原成原始变量。

四、Matlab 偏最小二乘回归命令plsregress

调用方式:

    [XL,YL] = plsregress(X,Y,ncomp)

    [XL,YL,XS] = plsregress(X,Y,ncomp)

    [XL,YL,XS,YS] = plsregress(X,Y,ncomp)

    [XL,YL,XS,YS,BETA] = PLSREGRESS(X,Y,ncomp,...)

    [XL,YL,XS,YS,BETA,PCTVAR] = plsregress(X,Y,ncomp)

    [XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(X,Y,ncomp)

    [XL,YL,XS,YS,BETA,PCTVAR,MSE] = plsregress(...,param1,val1,param2,val2,...)

    [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = PLSREGRESS(X,Y,ncomp,...)

参数解释:

用ncomp个因子或潜在变量计算Y在X上的回归,返回预测和响应载荷。

X是n*p预测变量,行对应观测项,列对应变量。

Y是n*m响应矩阵。

Xloadings是p*ncomp因子载荷,每行包含定义原始预测变量的线性组合系数

Xscores返回预测变量得分,即PLS因子是X中变量的线性组合,Xscores是一个n*ncomp正交矩阵,行对应观察值,列对应因子。

因子载荷矩阵是各个原始变量的因子表达式的系数,表达提取的公因子对原始变量的影响程度。

因子得分矩阵表示各项指标变量与提取的公因子之间的关系,在某一公因子上得分高,表明该指标与该公因子之间关系越密切。

简单说,通过因子载荷矩阵可以得到原始指标变量的线性组合,

如X1=a11*F1+a12*F2+a13*F3,其中X1为指标变量X1,a11、a12、a13分别为与变量X1在同一行的因子载荷,F1、F2、F3分别为提取的公因子;

通过因子得分矩阵可以得到公因子的线性组合,如F1=a11*X1+a21*X2+a31*X3,字母代表的意义同上。、

beta为回归模型的系数

PCTVAR是一个两行的矩阵,第一行为自变量提取成分的贡献率,第二行为因变量提取成分的贡献率

MSE是一个两行的矩阵,第一行的第j个元素表示自变量与它的前j-1个提出成份之间回归方程的剩余标准差;第二行的第j个元素对应着因变量与它的前j-1个提出成份之间回归方程的剩余标准差;

stats返回4个值stats.W是一个pls权重的ρ*ncomp的矩阵,使XS=X0*W,每一列对应特征向量ρi

stats.T2是XS每一点的T^2统计值

stats.Xresiduals为预测值残差,X0-XS*XL'

stats.Yresiduals为响应残差,Y0-XS*YL'

五、案例分析

下表前七列数据为自变量观测数据,后四列为因变量的观测数据

clc,clear,format long g
ab0=load('you.txt');
mu=mean(ab0);sig=std(ab0);%求均值和标准差
ab=zscore(ab0);%数据标准化
a=ab(:,1:7);b=ab(:,8:end);
ncomp=2;
[xl,yl,xs,ys,beta,pctvar,mse,stats]=plsregress(a,b,ncomp);
contr=cumsum(pctvar,2);
n=size(a,2);m=size(b,2);%n是自变量个数,m是因变量个数
beta2(1,:)=mu(n+1:end)+mu(1:n)./sig(1:n)*beta(2:end,:).*sig(n+1:end);%原始数据回归方程的常数项
beta2(2:n+1,:)=(1./sig(1:n))'*sig(n+1:end).*beta(2:end,:)%计算原始变量x1,...,xn的系数,每一列是一个回归方程
format

得到下图

偏最小二乘(pls)回归分析 matlab_第5张图片

其中第一行为常数项,后七行为自变量系数

在matlab中,我们可以直接利用zscore(x)这个函数来将数据标准化。
其核心思想是:
z=(x-mean(x))./std(x)

参考资料:

[1].百度百科.偏最小二乘回归法

[2].数学建模算法与应用第二版

[3]. 刘柏森,刘艳.基于偏最小二乘回归的城镇居民消费水平影响因素研究[J].现代营销(下旬刊),2018(05):227-228.

[4]. 李文强,段振云,赵文辉.基于偏最小二乘模型的无人机航材需求预测方法[J].系统工程理论与实践,2018,38(05):1354-1360.

[5]. 孙凤林. 偏最小二乘回归法非线性建模及其递推算法的研究[D].华南理工大学,2010.

[6].plsregress参数解释参照https://blog.csdn.net/qq_35720052/article/details/73998667

你可能感兴趣的:(建模分析,matlab)