Matlab主成分回归(pcr)分析中的常数项

Posted

技术标签:

【中文标题】Matlab主成分回归(pcr)分析中的常数项【英文标题】:constant term in Matlab principal component regression (pcr) analysis 【发布时间】:2012-07-05 18:21:19 【问题描述】:

我正在尝试使用 Matlab 学习主成分回归 (pcr)。我在这里使用本指南:http://www.mathworks.fr/help/stats/examples/partial-least-squares-regression-and-principal-components-regression.html

真的很好,只是一步看不懂:

我们进行 PCA 和回归,非常清晰:

[PCALoadings,PCAScores,PCAVar] = princomp(X);
betaPCR = regress(y-mean(y), PCAScores(:,1:2));

然后我们调整第一个系数:

betaPCR = PCALoadings(:,1:2)*betaPCR;
betaPCR = [mean(y) - mean(X)*betaPCR; betaPCR];
yfitPCR = [ones(n,1) X]*betaPCR;

为什么常数一个因子需要'mean(y) - mean(X)*betaPCR'?你能给我解释一下吗?

提前致谢!

【问题讨论】:

【参考方案1】:

这实际上是一道数学题,而不是编码题。您的 PCA 提取一组特征并将它们放入一个矩阵中,从而为您提供 PCALoadingsPCAScores。取出前两个主成分及其载荷,并将它们放入自己的矩阵中:

W = PCALoadings(:, 1:2)
Z = PCAScores(:, 1:2)

XZ的关系是X可以近似为:

Z = (X - mean(X)) * W      <=>      X ~ mean(X) + Z * W'                  (1)

直觉是Z捕获了X中的大部分“重要信息”,而矩阵W告诉你如何在两种表示之间进行转换。

现在您可以在Z 上对y 进行回归。首先你必须从y 中减去平均值,这样左右两边的平均值都为零:

y - mean(y) = Z * beta + errors                                           (2)

现在您想使用该回归从@9​​87654336@ 对y 进行预测。将等式(1)代入等式(2),得到

y - mean(y) = (X - mean(X)) * W * beta

            = (X - mean(X)) * beta1

我们在哪里定义了beta1 = W * beta(您在第三行代码中执行此操作)。重新排列:

y = mean(y) - mean(X) * beta1 + X * beta1

  = [ones(n,1) X] * [mean(y) - mean(X) * beta1; beta1]

  = [ones(n,1) X] * betaPCR

如果我们定义它会起作用

betaPCR = [mean(y) - mean(X) * beta1; beta1]

就像你的第四行代码一样。

【讨论】:

非常感谢,您帮了大忙!

以上是关于Matlab主成分回归(pcr)分析中的常数项的主要内容,如果未能解决你的问题,请参考以下文章

高维数据惩罚回归方法:主成分回归PCR岭回归lasso弹性网络elastic net分析基因数据|附代码数据

拓端tecdat|R语言高维数据惩罚回归方法:主成分回归PCR岭回归lasso弹性网络elastic net分析基因数据

近红外技术中的PCR和PLS是指啥

偏最小二乘回归的输出结果如何解释

如何在R里面实现偏最小二乘回归法partial least squares 回归

LSTM回归预测基于matlab主成分分析结合BiLSTM数据回归预测含Matlab源码 2276期