精华内容
下载资源
问答
  • 提供之前的笔记:回归分析|笔记整理(1)——引入,一元线性回归(上)回归分析|笔记整理(2)——一元线性回归(下)回归分析|笔记整理(3)——多元正态分布理论(上)回归分析|笔记整理(4)——多元正态分布理.....

    cb1930b1738de2174ad1324a511b2c7c.png

    大家好!

    上一节我们给主成分回归开了一个头,这一节我们会继续介绍它的有关内容,并且同时会介绍另一种新的回归方法:偏最小二乘回归。这一节的理论性也比较强,主要关注了相关回归的理论上的性质与相关证明。

    提供之前的笔记:

    • 回归分析|笔记整理(1)——引入,一元线性回归(上)
    • 回归分析|笔记整理(2)——一元线性回归(下)
    • 回归分析|笔记整理(3)——多元正态分布理论(上)
    • 回归分析|笔记整理(4)——多元正态分布理论(中)
    • 回归分析|笔记整理(5)——多元正态分布理论(下)
    • 回归分析|笔记整理(6)——多元线性回归(上)
    • 回归分析|笔记整理(7)——多元线性回归(下),违背基本假设的情况
    • 回归分析|笔记整理(8)——变量选择
    • 回归分析|笔记整理(9)——带约束的线性回归,多重共线性
    • 回归分析|笔记整理(A)——岭回归,主成分回归(上)

    我们开始本节的内容。

    目录

    • 主成分回归(下)
      • 主成分的理论性质
      • 主成分回归的理论性质
    • 偏最小二乘回归
      • 基本思想与算法
      • 交叉验证

    主成分回归(下)

    主成分的理论性质

    我希望你没有忘记之前我们的内容,页没有忘记什么是主成分。我这里把主成分回归的表示放在这里。

    并且有

    那么主成分有什么比较好的性质呢?在介绍它之前,我们首先需要引入下面这个性质。

    Proposition 1:
    ,并设
    的特征根为
    为对应的标准正交特征向量。那么对于任意的向量
    都有
    ,

    在这之前,我们首先需要介绍矩阵的谱分解。我们知道对于一个特征对

    (一个特征根与其对应的特征向量),有
    。因此在这里我们就有
    ,这样的话,如果我们把
    个等式拼在一起,就有
    ,然后记得
    是正交矩阵,所以左右乘上
    就可以得到
    ,写开就是
    =

    那么根据这个结果,如果你要计算它的Rayleigh商(也就是

    ,正好数值线性代数也在学这个2333),那么左右显然要乘上对应的东西,所以有
    。虽然
    是任意向量,但是注意到这里
    是一系列的正交向量。所以我们可以设
    ,那么代回去就会有

    你看上去感觉挺麻烦的,但是你只看乘式的左边两个,你会发现只要

    中的
    不同,你的这一项就是0。所以实际上只会保留一个
    ,同理类似的右边也只会保留一个
    。最后容易得到这个乘式的结果就是

    类似的可以得到

    ,这样的话你计算的结果其实就是
    ,这已经很明显了,每一个
    其实就是对应特征值
    的权重,也就是说这个式子实际上可以写成
    的形式,并且还有
    的结论。所以这样的话,最大最小值也自然不难得到就是

    这个命题也是高等代数里的一个很重要的结论。根据矩阵的谱分解,你也不难得到下面的结论

    在做了正交变换后,设计矩阵等就会有很好的性质,我们往下看。

    Proposition 2:

    这是上面性质的直接推论。

    Proposition 3:

    这也很容易,注意到

    ,也就是说矩阵
    是相似的。而相似变换是不改变特征根的。

    当然了,也就是因为这个,所以相当于可以得到

    ,也就是说
    其实可以用来衡量方差的比例(就是说,
    越大,因为和是一定的,所以相当于它在和式中的比例越大,那么自然是说它占方差和的比例越大,我们理解为是它所具有的信息很多)。因此我们称
    为第
    个主成分
    方差贡献率,而称
    为主成分
    累积贡献率
    Proposition 4:
    的相关系数为

    你应该没忘记相关系数的公式

    。那么注意到
    ,所以上面的式子就是
    。根据矩阵的谱分解,我们可以得到

    代入即可。

    为什么我们需要

    ?很简单,因为虽然这样回归可以降维,但是其
    原本的解释意义就消失了。但是,如果这个相关系数很大那说明什么?就说明
    的意义很大程度上可以被
    解释。因此它的绝对值大小就刻画了这个
    主成分的主要意义以及来源

    事实上,通过上面的解释,我们有理由相信它有和之前的方差贡献率相似的性质。那么我们观察一下。首先根据这个结论我们可以得到

    ,那么我们对它求和,就可以得到

    接下来,注意到矩阵的谱分解

    ,所以实际上如果我们来观察一下它的第
    元,就会有
    。有没有发现这就和那个和式一模一样了?所以我们就可以得到下面这个结论。
    Proposition 5:

    因此,我们可以实际上使用

    来衡量前
    个主成分
    对原始变量
    的方差贡献率。它就反映了提取的主成分反映原始变量的程度。

    最后还有一个很有趣的结论

    Proposition 6:

    这就是Proposition 4的直接推论。

    主成分回归的理论性质

    之前我们主要关注的是主成分本身,而之后我们更多会关注回归,也就是回归所对应的一些统计性质。因为这里又会涉及到较多的标记,所以我们会简要重述一下主成分回归的背景。

    我们知道原始回归模型为

    ,其中
    是中心标准化之后的设计矩阵。那么显然相关阵就是
    。并且我们会设
    的特征根为
    ,对应正交化的标准特征向量为
    。我们记
    ,令
    ,就会得到典则形式

    你应该已经熟悉

    ,而
    的对角阵又正好衡量了每一个主成分在多次实验中取值的变化大小(想想为什么?不熟悉的看看第A节的最后)。所以如果某一个特征值很小,就说明对应的主成分的变化很小,那就和常数项没区别了。所以若
    ,那么只需要把
    从模型中剔除掉(也就是直接让估计值为0),对前
    个系数用最小二乘,最后,我们对矩阵分块
    都是取对应的前
    个分块,就可以得到最后的估计

    简要重新说了一遍,我们开始介绍它的相关理论部分。

    Proposition 7:

    这里我们注意到上面的公式

    因为

    实际上是
    取了前
    列,因此容易得到
    ,所以代回去就会有
    (别忘了特征值和对应特征向量是给
    的)

    虽然表达式挺复杂,但是我们关注一下中间的部分。注意到

    ,再把左右两个矩阵相乘可得

    所以右边再乘一个

    ,就可以得到最后我们的结果。

    接下来的性质一定程度上揭示了它与岭回归的相似性。

    Proposition 8:
    ,那么

    这很简单,根据上面的表达式可以得到

    ,而注意到范数的正交不变性(这个技巧我们上一节才用过),我们有

    这个不等式的成因是

    显然会给
    带来更多的分量,而这显然会使得长度增加。

    通过这个性质可以知道,和岭估计类似,主成分估计也是一种压缩估计。同样的,因为这个,所以我们还可以知道下面的性质。

    Proposition 9:
    是有偏估计

    最后的性质是有关于均方误差的,和岭回归类似。也奠定了它的应用价值。

    Proposition 10:
    当设计阵病态时,适当选择
    可以使得

    我们在上一节介绍过

    的多元表示,这里我们应用一下,首先注意到新的估计的
    中,最后的几个估计量是被人工设置为0的,所以我们有

    我们注意上一节的公式

    ,所以在这里,我们容易得到
    (估计值没有
    这个分量,但是真值当然是有
    的)

    因为设计阵病态的时候,

    很大,这就会导致第二项变成负的,因此这就足够说明结论了。当然了,这个结论一定程度上也说明了,如果设计阵性质很好,那么主成分回归不一定会有良好的效果。

    偏最小二乘回归

    基本思想与算法

    偏最小二乘回归(PLS)其实解决的是一个比较实际的问题:高维数据预测问题。换句话说就是自变量的个数大于观测值的个数。你可能一开始会觉得不可思议,但是在经济学中这是很常见的。

    还是从理论上来说,如果有

    组数据
    ,并且满足关系式

    一般情况下,我们确实只需要求一个最小二乘回归,估计出

    就好。但是在高维意义下,
    是不可逆的,所以所有的回归方法其实都失效了。因此我们需要换一种思路。

    在上面的这个式子中我们可以看到,归根到底它就是一个多元线性函数。给定

    ,我们需要确定系数
    ,然后就可以得到对应的因变量。别忘了我们的目的是为了预测,那么如果我们的函数形式确定下来了,还需要那么多自变量吗?自然就不再需要了。

    可能有的人会想到才说的主成分回归。但是其实我们可以看出来它有一个缺陷,就是它归根到底是选择了自变量中最具有代表性的几个,可是和因变量一点关系都没有啊。而偏最小二乘的基本思路就是——考虑与因变量的相关性情况下的最小二乘算法。在这种情况下,

    我们用一元的最小二乘举例子,设模型为

    ,并设有一系列的数据
    。注意到在数据做中心标准化之后,对应的参数估计结果其实就是

    那么这个是一元的,归根到底我们可以理解为这是

    针对自变量
    做回归的时候,所得到的
    最好的结果。那么在多元的情况呢?自然我们照猫画虎,可以考虑用类似的公式

    来表示

    对每一个单独的自变量
    做回归的结果。同样的,你还可以发现它本质上是
    的倍数,因此理论来说,我们给每一个对应的这样的估计做线性组合,也就是说和式
    就应该是我们想要的。问题在于找一个权。

    一个最简单的权是

    ,因为如果自变量
    比较重要,那么它的方差就应该比较大(因为数据已经中心标准化了),所以我自然希望它的权值大一些。这样的话我们的自变量就变成了
    ,这也就是我们想要的线性函数。

    如果我们设

    ,那么对应的观测值就是
    。这样的话,这个实际上就是一个好的自变量,因为它是原来自变量的线性组合,同时又考虑了与因变量
    的相关性。

    我们再回头看看,这个式子的每一维都是一元情况下的最小二乘。所以实际上应该包含了很多信息了。但是我们也知道最小二乘还是会有一定的残差平方和,也就是说实际上还没有成功的保留好所有的信息。因此我们的想法就是设置这个新的自变量为我们想要的,然后做残差,这样的话残差就不会包括之前的信息,进而就可以继续按照上面的思路进行迭代。

    现在,将

    作为自变量,对
    回归,可以得到
    ,这就是使用这个新自变量后得到的新的回归结果,考虑用它做预测,得到
    (注意
    是一个数)

    残差向量也就自然是

    。同样的,如果我们将每一个原始的自变量
    做一次回归,也会得到
    以及对应残差向量
    。那么这样的话,对应的
    就是新的观测数据,类似还可以求得
    ,最多可以做到
    。这些新的自变量就可以用普通的最小二乘做回归。

    归根到底,偏最小二乘回归的本质也是找到原始的自变量的一个线性组合,满足它与因变量

    也有一定的相关性。找到对应的权重之后,让每一个自变量减去这个权重,一定程度上就相当于去除了这一维度的信息。一直做下去,直到自变量个数达到了目标为止。

    注意到,回归方程的本质是因变量在自变量所张成的线性空间上的投影,所以我们如果按照投影矩阵的定义来写出

    的投影阵,容易得到

    并且容易得到,第

    步迭代得到的
    就是
    上的投影。

    通过上面这一段话,你应该明白应该如何写出这个算法的代码了。不过下面这个结论告诉我们有一个更简单的思路。

    Proposition 11:
    ,那么有

    (这个结论在数值线性代数中会经常提起,我们不再证明)

    所以实际上,如果我们按照这样的方法初始化,然后只需要每一步设置

    ,再对
    做普通最小二乘得到
    ,最后的目标其实就是选择合适的
    ,因为我们的目的是预测,所以我们并不需要知道
    的回归结果是什么,因此这个算法在复杂度上就少了很多。

    交叉验证

    交叉验证在机器学习中也是非常常用的验证模型好坏的算法。这里我们说的主要是单点交叉验证。也就是说假设我们删除观测值

    ,这样的话剩下的观测数据我们用
    来表示。交叉验证的意思就是——
    用这些剩下的观测数据来对删除的那个数据做预测。这里显然我们是要验证偏最小二乘回归,所以我们自然使用PLS来做预测。

    需要交叉验证的意思是,我们的算法虽然可以做到第

    步,但是实际上可能我们并不需要那么多,那么究竟在到达第
    步之前,哪一步结果是最好的,其实是有待商榷的。因此交叉验证的思想就被用在这里帮助我们选择模型了。

    我们在上面说,去掉第

    组观测数据做一次交叉验证,就会在第
    组数据上产生一个残差
    。所以我们一般用式子
    来反映第
    步预测方程的好坏。当然了,选择的原则自然是使得这个值最小了。

    到此,我们算是结束了偏最小二乘回归的内容。

    小结

    这一节我们主要关注的是两种回归方法——主成分回归和偏最小二乘回归。这两种方法的目标都是为了降维,但是出发点有所不同。实际的操作中,也没有定论中一定有一种方法是比另一种更好的,所以在真正需要对数据做统计分析的时候,还是需要对各种方法都有所了解才行。

    ——————————————————————————————————————

    40c8ff95f3bc1af30273e5885986207a.png

    本专栏为我的个人专栏,也是我学习笔记的主要生产地。任何笔记都具有著作权,不可随意转载和剽窃

    个人微信公众号:cha-diary,你可以通过它来有效的快速的获得最新文章更新的通知。

    专栏目录:笔记专栏|目录

    想要更多方面的知识分享吗?欢迎关注专栏:一个大学生的日常笔记。我鼓励和我相似的同志们投稿于此,增加专栏的多元性,让更多相似的求知者受益~

    展开全文
  • 0.最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是:注意检验,各种检验参数:有关回归的检验以及有关多元分析的...

    PLSR的基本原理与推导,我在这篇博客中有讲过。

    0.

    偏最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是:

    注意检验,各种检验参数:有关回归的检验以及有关多元分析的检验

    系数众多,容易混淆

    要清楚原理才能写好论文

    注意matlab函数plsregress的众多返回值

    例如累计贡献度,建模时最好列出表格

    1.

    问题:

    自变量组 X = [x1,x2…xn]  (n组自变量)

    因变量组 Y = [y1,y2,…yp]   (p组因变量)

    考虑到X、Y内部之间的多重相关性,可以使用PLSR建立Y对X的多元回归模型。这是一种多对多回归的模型。

    偏最小二乘回归的实现步骤:

    X、Y标准化。若考虑标准化的不对等特性,考虑实现对应分析。

    求相关系数矩阵。可以把X、Y统一放到一个增广矩阵中,实现求列向量之间的相关系数矩阵(corrcoef实现无需标准化,直接使用原始数据)

    求主成分对。(求出自变量与因变量的成分,类似于典型相关分析)这里对数其实是min(n-1,p)。求出、… 实际上,u、v是原始变量标准化后的线性组合、即投影。

    计算贡献率表格。计算前k个主成分u对原始变量X的贡献率、v对Y的贡献率(函数直接返回结果)。

    根据贡献率表格,选取k个主成分对。一般累计贡献率达到90%合适。

    求出原始变量X对这k个主成分u的回归方程以及Y对u的(不是v!)回归方程。

    根据6的结果,可以求出因变量组Y与自变量组X的回归方程,但这其实是标准化了的(常数项一定是0),进一步可以还原为真实原始变量的回归方程,这也是我们所要求得的。

    模型的解释与检验。

    首先得进行一个回归检验:判定系数R方的检验(接近于1)。计算每一个回归方程的R方,可以列出表格。

    之后进行交叉有效性检验:交叉系数Qh方 = 1 – (PRESS(h) / SS(h-1))。这是从主成分分析的角度的检验,即检验提取的k个主成分。(这个检验比较复杂,详细看推导)

    2.

    MATLAB实现命令:

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

    param:

    X: 标准化后的原始X数据,每行一个数据组,每列是一项指标,即一个自变量

    Y:标准化后的原始Y数据,每行一个数据组,每列是一项指标,即一个因变量

    ncomp:选取的主成分对数

    return:

    XL:自变量的负荷量矩阵。维度是(自变量数*ncomp)。每行是原始数据X对主成分u的回归表达式的系数

    YL:因变量的负荷量矩阵。维度是(自变量数*ncomp)。每行是原始数据Y对主成分u的回归表达式的系数

    XS:对应于主成分u的得分矩阵(得分说的是主成分的值)。每列是一个主成分得分向量。

    如:每一列是一个主成分ui的值!列数是主成分数。

    说明:主成分u1是个列向量.

    YS:对应于主成分v的得分矩阵。每列是一个v对原始数据Y的线性组合的系数

    BETA:最终的回归表达式系数矩阵。每一列对应的,是一个yi对X的回归表达式系数。

    PCTVAR:两行的矩阵。

    第一行的每个元素代表着自变量提出主成分,相应主成分u的贡献率。(特征值之比,详细见主成分推导)

    第二行的每个元素代表着因变量提出主成分,相应主成分v的贡献率。这个贡献率其实是主成分对原始变量的解释能力大下。

    MSE:两行的矩阵。剩余标准差矩阵。第一行的第j个元素对应着自变量与他的前j-1个提出成分之间的剩余标准差。第二行对应因变量。

    stats:返回4个值。结构体:stats。

    W — A p-by-ncomp matrix of PLS weights so that XS = X0*W.

    W = a\XS。 W每行是一个主成分得分向量的系数,如:

    T2 — The T2 statistic for each point in XS.

    Xresiduals — The predictor residuals, that is, X0-XS*XL'.

    Yresiduals — The response residuals, that is, Y0-XS*YL'.

    3.

    案例实现:

    求Y对X的偏最小二乘回归方程:

    原始数据:

    (前三列为X变量,后两列为Y变量,共20组样本。以下数据保存为pz.txt与matlab源文件同一文件夹下)

    191 36 50 5 162 60

    189 37 52 2 110 60

    193 38 58 12 101 101

    162 35 62 12 105 37

    189 35 46 13 155 58

    182 36 56 4 101 42

    211 38 56 8 101 38

    167 34 60 6 125 40

    176 31 74 15 200 40

    154 33 56 17 251 250

    169 34 50 17 120 38

    166 33 52 13 210 115

    154 34 64 14 215 105

    247 46 50 1 50 50

    193 36 46 6 70 31

    202 37 62 12 210 120

    176 37 54 4 60 25

    157 32 52 11 230 80

    156 33 54 15 225 73

    138 33 68 2 110 43

    1 %PLSR 偏最小二乘2

    3 clc,clear4 ab0 = load('pz.txt');5 mu = mean(ab0);%均值6 sig = std(ab0);%标准差7 rr = corrcoef(ab0) %相关系数矩阵8 ab = zscore(ab0); %数据标准化9 a = ab(:,[1:3]); %标准化的X10 b = ab(:,[4:end]); %标准化的Y11 %pls命令需要标准化变量12 [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b)13 contr = cumsum(PCTVAR,2) %每行累计求和,即计算累计贡献率14 XL15 YL16 XS17 YS18 xw = a\XS %自变量提出主成分系数,每列对应一个成分,这个就是stats.W19 yw = b\YS %因变量提出的主成分系数20 ncomp = input('输入主成分个数')21 [XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] =plsregress(a,b,ncomp)22 n = size(a,2);%n是自变量个数23 m = size(b,2);24 %求原始数据回归方程常数项25 beta3(1,:) = mu(n+1:end) - mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end);26 %求原始数据x1,x2...xn的系数,每一列是一个回归方程27 beta3([2:n+1],:) = (1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:)

    28 bar(BETA2','k') %画直方图

    求解结果(部分)

    假设采用2个主成分

    ncomp =

    2

    系数:

    XL2 =

    -4.1306    0.0558

    -4.1933    1.0239

    2.2264    3.4441

    YL2 =

    2.1191   -0.9714

    2.5809   -0.8398

    0.8869   -0.1877

    主成分得分(每列一个主成分):

    XS2 =

    -0.1036   -0.2050

    -0.1241   -0.0577

    -0.1463    0.1807

    0.1110    0.2358

    -0.0785   -0.3927

    -0.0369    0.0249

    -0.2263    0.0263

    0.1199    0.0730

    0.2765    0.2263

    0.1874   -0.0577

    0.0588   -0.2428

    0.1198   -0.2420

    0.1913    0.2625

    -0.7077    0.2635

    -0.1327   -0.3375

    -0.1208    0.1803

    -0.0633    0.0707

    0.1933   -0.2712

    0.1690   -0.1291

    0.3131    0.3917

    YS2 =

    -1.2834    0.1794

    -4.6311    1.3388

    -0.2845   -0.6256

    -1.2265    0.6851

    1.6002   -1.0788

    -4.5120    1.5408

    -2.9777   -0.0114

    -2.7548    1.5473

    3.9469   -0.4253

    10.4846   -2.6373

    1.4139   -0.6681

    4.8549   -1.1547

    5.2890   -1.0550

    -7.6800   -0.1989

    -5.1793    1.2090

    4.5405   -2.0460

    -6.4973    2.0374

    4.2728   -0.6046

    5.5489   -1.3537

    -4.9251    3.3215

    标准化数据回归方程系数(可以看到常数项系数是0)

    BETA2 =

    0.0000    0.0000    0.0000

    -0.0773   -0.1380   -0.0603

    -0.4995   -0.5250   -0.1559

    -0.1323   -0.0855   -0.0072

    贡献率:

    PCTVAR2 =

    0.6948    0.2265

    0.2094    0.0295

    剩余标准差:

    MSE2 =

    2.8500    0.8699    0.2242

    2.8500    2.2531    2.1689

    stats2 =

    W: [3x2 double]

    T2: [20x1 double]

    Xresiduals: [20x3 double]

    Yresiduals: [20x3 double]

    最终的回归方程系数矩阵,每列一个方程:

    beta3 =

    47.0375  612.7674  183.9130

    -0.0165   -0.3497   -0.1253

    -0.8246  -10.2576   -2.4964

    -0.0970   -0.7422   -0.0510

    画出回归系数直方图:

    还可以用预测的方法做精度分析,在此略过。

    展开全文
  • 0.最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是:注意检验,各种检验参数:有关回归的检验以及有关多元分析的...

    PLSR的基本原理与推导,我在这篇博客中有讲过。

    0.

    偏最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是:

    注意检验,各种检验参数:有关回归的检验以及有关多元分析的检验

    系数众多,容易混淆

    要清楚原理才能写好论文

    注意matlab函数plsregress的众多返回值

    例如累计贡献度,建模时最好列出表格

    1.

    问题:

    自变量组 X = [x1,x2…xn]  (n组自变量)

    因变量组 Y = [y1,y2,…yp]   (p组因变量)

    考虑到X、Y内部之间的多重相关性,可以使用PLSR建立Y对X的多元回归模型。这是一种多对多回归的模型。

    偏最小二乘回归的实现步骤:

    X、Y标准化。若考虑标准化的不对等特性,考虑实现对应分析。

    求相关系数矩阵。可以把X、Y统一放到一个增广矩阵中,实现求列向量之间的相关系数矩阵(corrcoef实现无需标准化,直接使用原始数据)

    求主成分对。(求出自变量与因变量的成分,类似于典型相关分析)这里对数其实是min(n-1,p)。求出、… 实际上,u、v是原始变量标准化后的线性组合、即投影。

    计算贡献率表格。计算前k个主成分u对原始变量X的贡献率、v对Y的贡献率(函数直接返回结果)。

    根据贡献率表格,选取k个主成分对。一般累计贡献率达到90%合适。

    求出原始变量X对这k个主成分u的回归方程以及Y对u的(不是v!)回归方程。

    根据6的结果,可以求出因变量组Y与自变量组X的回归方程,但这其实是标准化了的(常数项一定是0),进一步可以还原为真实原始变量的回归方程,这也是我们所要求得的。

    模型的解释与检验。

    首先得进行一个回归检验:判定系数R方的检验(接近于1)。计算每一个回归方程的R方,可以列出表格。

    之后进行交叉有效性检验:交叉系数Qh方 = 1 – (PRESS(h) / SS(h-1))。这是从主成分分析的角度的检验,即检验提取的k个主成分。(这个检验比较复杂,详细看推导)

    2.

    MATLAB实现命令:

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

    param:

    X: 标准化后的原始X数据,每行一个数据组,每列是一项指标,即一个自变量

    Y:标准化后的原始Y数据,每行一个数据组,每列是一项指标,即一个因变量

    ncomp:选取的主成分对数

    return:

    XL:自变量的负荷量矩阵。维度是(自变量数*ncomp)。每行是原始数据X对主成分u的回归表达式的系数

    YL:因变量的负荷量矩阵。维度是(自变量数*ncomp)。每行是原始数据Y对主成分u的回归表达式的系数

    XS:对应于主成分u的得分矩阵(得分说的是主成分的值)。每列是一个主成分得分向量。

    如:每一列是一个主成分ui的值!列数是主成分数。

    说明:主成分u1是个列向量.

    YS:对应于主成分v的得分矩阵。每列是一个v对原始数据Y的线性组合的系数

    BETA:最终的回归表达式系数矩阵。每一列对应的,是一个yi对X的回归表达式系数。

    PCTVAR:两行的矩阵。

    第一行的每个元素代表着自变量提出主成分,相应主成分u的贡献率。(特征值之比,详细见主成分推导)

    第二行的每个元素代表着因变量提出主成分,相应主成分v的贡献率。这个贡献率其实是主成分对原始变量的解释能力大下。

    MSE:两行的矩阵。剩余标准差矩阵。第一行的第j个元素对应着自变量与他的前j-1个提出成分之间的剩余标准差。第二行对应因变量。

    stats:返回4个值。结构体:stats。

    W — A p-by-ncomp matrix of PLS weights so that XS = X0*W.

    W = a\XS。 W每行是一个主成分得分向量的系数,如:

    T2 — The T2 statistic for each point in XS.

    Xresiduals — The predictor residuals, that is, X0-XS*XL'.

    Yresiduals — The response residuals, that is, Y0-XS*YL'.

    3.

    案例实现:

    求Y对X的偏最小二乘回归方程:

    原始数据:

    (前三列为X变量,后两列为Y变量,共20组样本。以下数据保存为pz.txt与matlab源文件同一文件夹下)

    191 36 50 5 162 60

    189 37 52 2 110 60

    193 38 58 12 101 101

    162 35 62 12 105 37

    189 35 46 13 155 58

    182 36 56 4 101 42

    211 38 56 8 101 38

    167 34 60 6 125 40

    176 31 74 15 200 40

    154 33 56 17 251 250

    169 34 50 17 120 38

    166 33 52 13 210 115

    154 34 64 14 215 105

    247 46 50 1 50 50

    193 36 46 6 70 31

    202 37 62 12 210 120

    176 37 54 4 60 25

    157 32 52 11 230 80

    156 33 54 15 225 73

    138 33 68 2 110 43

    1 %PLSR 偏最小二乘2

    3 clc,clear4 ab0 = load('pz.txt');5 mu = mean(ab0);%均值6 sig = std(ab0);%标准差7 rr = corrcoef(ab0) %相关系数矩阵8 ab = zscore(ab0); %数据标准化9 a = ab(:,[1:3]); %标准化的X10 b = ab(:,[4:end]); %标准化的Y11 %pls命令需要标准化变量12 [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b)13 contr = cumsum(PCTVAR,2) %每行累计求和,即计算累计贡献率14 XL15 YL16 XS17 YS18 xw = a\XS %自变量提出主成分系数,每列对应一个成分,这个就是stats.W19 yw = b\YS %因变量提出的主成分系数20 ncomp = input('输入主成分个数')21 [XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] =plsregress(a,b,ncomp)22 n = size(a,2);%n是自变量个数23 m = size(b,2);24 %求原始数据回归方程常数项25 beta3(1,:) = mu(n+1:end) - mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end);26 %求原始数据x1,x2...xn的系数,每一列是一个回归方程27 beta3([2:n+1],:) = (1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:)

    28 bar(BETA2','k') %画直方图

    求解结果(部分)

    假设采用2个主成分

    ncomp =

    2

    系数:

    XL2 =

    -4.1306    0.0558

    -4.1933    1.0239

    2.2264    3.4441

    YL2 =

    2.1191   -0.9714

    2.5809   -0.8398

    0.8869   -0.1877

    主成分得分(每列一个主成分):

    XS2 =

    -0.1036   -0.2050

    -0.1241   -0.0577

    -0.1463    0.1807

    0.1110    0.2358

    -0.0785   -0.3927

    -0.0369    0.0249

    -0.2263    0.0263

    0.1199    0.0730

    0.2765    0.2263

    0.1874   -0.0577

    0.0588   -0.2428

    0.1198   -0.2420

    0.1913    0.2625

    -0.7077    0.2635

    -0.1327   -0.3375

    -0.1208    0.1803

    -0.0633    0.0707

    0.1933   -0.2712

    0.1690   -0.1291

    0.3131    0.3917

    YS2 =

    -1.2834    0.1794

    -4.6311    1.3388

    -0.2845   -0.6256

    -1.2265    0.6851

    1.6002   -1.0788

    -4.5120    1.5408

    -2.9777   -0.0114

    -2.7548    1.5473

    3.9469   -0.4253

    10.4846   -2.6373

    1.4139   -0.6681

    4.8549   -1.1547

    5.2890   -1.0550

    -7.6800   -0.1989

    -5.1793    1.2090

    4.5405   -2.0460

    -6.4973    2.0374

    4.2728   -0.6046

    5.5489   -1.3537

    -4.9251    3.3215

    标准化数据回归方程系数(可以看到常数项系数是0)

    BETA2 =

    0.0000    0.0000    0.0000

    -0.0773   -0.1380   -0.0603

    -0.4995   -0.5250   -0.1559

    -0.1323   -0.0855   -0.0072

    贡献率:

    PCTVAR2 =

    0.6948    0.2265

    0.2094    0.0295

    剩余标准差:

    MSE2 =

    2.8500    0.8699    0.2242

    2.8500    2.2531    2.1689

    stats2 =

    W: [3x2 double]

    T2: [20x1 double]

    Xresiduals: [20x3 double]

    Yresiduals: [20x3 double]

    最终的回归方程系数矩阵,每列一个方程:

    beta3 =

    47.0375  612.7674  183.9130

    -0.0165   -0.3497   -0.1253

    -0.8246  -10.2576   -2.4964

    -0.0970   -0.7422   -0.0510

    画出回归系数直方图:

    d2e43c8315541accf6caa6242751aa4e.png

    还可以用预测的方法做精度分析,在此略过。

    展开全文
  • 第十一章:最小二乘回归分析

    千次阅读 2019-08-17 20:10:58
    当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用最小二乘回归建立模型 11.1 分析概述 在自变量集中提出第一成分u(尽可能多的提取原自变量中的变异信息),同时在因变量集中...

    当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立模型

    11.1 分析概述

    1. 在自变量集中提出第一成分u(尽可能多的提取原自变量中的变异信息),同时在因变量集中也提取第一成分v,并要求u与v相关程度达到最大
    2. 建立因变量与u的回归,如果回归方程已达到满意的精度,则算法终止。否则继续对第二成分的提取,直到能达到满意的精度为止。
    3. 若最终对自变量集提取r个成分,偏最小二乘法回归将通过建立因变量和r个u的回归式,然后再表示为因变量与原自变量的回归方程式,即偏最小二乘回归方程式

    11.2 Matlab命令plsregress

    使用格式[ XL, YL, XS, YS, BETA, PCTVAR, MSE, stats ] = plsregress( X, Y, ncomp )

    11.3 案例分析

    例1:

    clc,clear
    ab0=load('pz.txt'); 
    mu=mean(ab0), sig=std(ab0) 
    rr=corrcoef(ab0)  %求相关系数矩阵
    ab=zscore(ab0); %数据标准化
    a=ab(:,[1:3]);b=ab(:,[4:end]);  %提出标准化后的自变量和因变量数据
    [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b)
    contr=cumsum(PCTVAR,2) %求累计贡献率
    xw=a\XS  %求自变量提出成分系数,每列对应一个成分,这里xw等于stats.W
    yw=b\YS  
    ncomp=input('请根据PCTVAR的值确定提出成分对的个数ncomp=');
    [XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] =plsregress(a,b,ncomp)
    n=size(a,2); m=size(b,2);%n是自变量的个数,m是因变量的个数
    beta3(1,:)=mu(n+1:end)-mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end); %原始数据回归方程的常数项
    beta3([2:n+1],:)=(1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:) %计算原始变量的系数,每一列是一个回归方程
    bar(BETA2','k')   %画直方图
    yhat=repmat(beta3(1,:),[size(a,1),1])+ab0(:,[1:n])*beta3([2:end],:)  %求因变量的预测值
    ymax=max([yhat;ab0(:,[n+1:end])]); %求预测值和预测值的最大值
    %下面画y1,y2,y3的预测图,并画直线y=x
    figure, subplot(2,2,1)
    plot(yhat(:,1),ab0(:,n+1),'*',[0:ymax(1)],[0:ymax(1)],'Color','k')
    legend('弯曲成绩预测图',2), xlabel('预测数据'), ylabel('观测数据')
    subplot(2,2,2)
    plot(yhat(:,2),ab0(:,n+2),'O',[0:ymax(2)],[0:ymax(2)],'Color','k')
    legend('弯曲成绩预测图',2), xlabel('预测数据'), ylabel('观测数据')
    subplot(2,2,3)
    plot(yhat(:,3),ab0(:,end),'H',[0:ymax(3)],[0:ymax(3)],'Color','k')
    legend('跳高成绩预测图',2), xlabel('预测数据'), ylabel('观测数据')
    

    例2:

    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); 
    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],:) 
    format  %恢复到短小数的显示方式
    
    展开全文
  • 0.最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是: 注意检验,各种检验参数:有关回归的检验以及有关多元分析...
  • 更多精彩内容请关注211统计课堂上期小统和大家一起了解了STATA数据处理技巧计量分析的描述统计与相关分析,这期小统和大家一起学习一下回归分析。OLS基本假定OLS重要假定:经典线性回归假设:假定SLR.5 随机干扰项...
  • 更多精彩内容请关注211统计课堂上期小统和大家一起了解了STATA数据处理技巧计量分析的描述统计与相关分析,这期小统和大家一起学习一下回归分析。OLS基本假定OLS重要假定:经典线性回归假设:假定SLR.5 随机干扰项...
  • 这一节的理论性也比较强,主要关注了相关回归的理论上的性质与相关证明。提供之前的笔记:我们开始本节的内容。目录主成分回归(下)主成分的理论性质主成分回归的理论性质最小二乘回归基本思想算法交叉验证主成分...
  • SPSS相关回归分析

    2013-06-17 11:34:00
    1.语文和数学成绩都受IQ的影响而且相互影响,则分析语文和数学的关系时需要偏相关分析。2.距离分析用于探索相似性,比如给了某年的12个月三个城市的气温数据,然后分析,会得到一个相似性矩阵,这是个对称阵。3....
  • 最小二乘回归分析主要适用于多因变量对多自变量的回归建模,并可以有效地解决许多用普通多元回归无法解决的问题,诸如克服变量多重相关性在系统建模中的不良作用以及在样本容量小于变量个数的情况下进行回归建模等...
  • 基于煤层气井井斜因素,采用matlab数值模拟、对比分析和线性回归等方法,分别研究了钻孔井眼轨迹、井口侧磨的方位最大井斜方位的差值、最大井斜角度、最大井斜位置距地面的深度等因素对侧磨深度的影响。得出在最大...
  • SAS 学习笔记(七)— SAS与回归分析

    千次阅读 2019-12-03 18:59:04
    文章目录回归预备分析线性回归分析变量选择曲线回归回归诊断 回归预备分析 计算相关系数 (pearson, spearman, kendall)相关系数衡量变量之间的线性相关性 proc corr data=数据集名; var 变量名列; with 变量名列...
  • 在统计中,主成分回归(PCR)是一种基于主成分分析(PCA)的回归分析技术。 在PCR中,不是直接对解释变量进行因变量回归,而是将解释变量的主要成分用作回归变量。 基于奇异值分解(SVD)的最小二乘版本提供了一种...
  • 图片来源:B站视频截图提前预习统计学定距、定序、定类线性回归方程复相关决定系数偏相关系数、标准化偏相关系数残差SPSS操作分析-回归-线性回归图形-图表构建器01线性回归的应用场景线性回归,首先应用于定距变量...
  • [时间序列分析][3]--自相关系数和相关系数

    万次阅读 多人点赞 2017-04-15 13:07:09
    之前在回归分析里面曾经讲过协方差和相关系数协方差与相关系数, 这里再多讲一句,协方差是会受到单位的影响的,而相关系数就是消除了量纲的影响,来看两者的相关性 这里讲的自相关系数可以说是根据最原始的定义引伸...
  • 这些都是“回归效应”之前也写过回归分析的文章,今天再说回归分析:细说回归分析 变量间的度量对于数值型自变量和数值型因变量之间的分析方法就要用到相关与回归分析。变量间的关系有两种:函数关系和相关关系。...
  • 针对该问题,提出一种使用核最小二乘法来预测故障原因的方法,该方法克服了传统线性回归方法的缺陷,在高维的非线性空间对数据进行分析,同时,该方法也吸收了典型相关分析和主成分分析方法的特点,为分析提供了...
  • 读懂本算法,需要你具备矩阵求导及相关基本运算、概率论中的极大似然函数求解、高等数学的求导数,以及python的工具包pandas、numpy、matplotlib的基本使用(非常感谢B站唐宇迪老师的讲解,虽然跟的磕磕巴巴哈),...
  • 偏相关系数

    2019-10-08 10:52:04
    在多元相关分析中,简单相关系数可能不能够真实的反映出变量X和Y之间...假设我们需要计算X和Y之间的相关性,Z代表其他所有的变量,X和Y的偏相关系数可以认为是X和Z线性回归得到的残差RxY和Z线性回归得到的残差Ry之...
  • 最小二乘回归(一):模型介绍

    千次阅读 2019-04-29 09:50:37
    最小二乘回归系列博文: ...最小二乘回归分析建模的具体步骤 模型效应负荷量 交叉有效性检验 在实际问题中,经常遇到需要研究两组多重相关变量间的相互依赖关系,并研究用 一组变量(常称为自变量或预...
  • 最小二乘法是集主成分分析、典型相关分析和多元线性回归分析3种分析方法的优点于一身。它主成分分析法都试图提取出反映数据变异的最大信息,但主成分分析法只考虑一个自变量矩阵,而最小二乘法还有一个“响应...
  • 第1章 基础知识 1.书写规则 2.反函数 3.指数函数自然对数函数 4.指数函数对数函数的性质 5.微分 6.矩阵 7.数值数据和分类数据 ...10.(重)回归分析的()回归系数 11.Logistic归方程的回归系数 参考文献
  • 最小二乘法(PLS)提供了一种多元线性回归建模的方法,尤其适用于当自变量维度很高,而样本维度很低,并且自变量内部存在多重相关相关性的情况。本文详细分析最小二乘的数学原理,并附了详细的数学推导过程,...
  • 通过MATLAB实现最小二乘回归预测

    千次阅读 2019-09-23 22:17:33
    最小二乘回归是一种新的多元统计数学分析方法,将多元线性回归、典型相关分析和主成分分析进行有机结合。 建模原理: 假定p有自变量x1,x2,…,xp(这个就是特征值)和q个因变量y1,y2,…,y3(这个就是你要预测的值)...
  • 时间序列分析基础将分两个篇幅,第一篇包括时间序列的基本概念、成分分解、自相关与偏自相关性、以及平稳性。第二篇主要讲一下用于时间序列分析的常用模型。1.时间序列的概念、成分及分解维基百科定义:时间序列...
  • clear;clc;pz = load('pz.txt');mu = mean(pz); % 均值sig = std(pz); % 方差rr = corrcoef(pz); % 相关系数data = zscore(pz); % 数据标准化% data = (pz - mu(ones(20, 1), :))./sig(ones(20, 1), :);...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 187
精华内容 74
关键字:

偏相关分析与回归分析