我总是用lm()
R 在上执行线性回归。该函数返回系数,使得y = \ beta x。
今天,我了解了总最小二乘法,并且princomp()
可以使用该函数(主成分分析,PCA)来执行它。对我来说应该是有益的(更准确)。我使用进行了一些测试princomp()
,例如:
r <- princomp( ~ x + y)
我的问题是:如何解释其结果?如何获得回归系数?“系数”是指我必须用来乘以x值以得到接近y的数字\ beta。
我总是用lm()
R 在上执行线性回归。该函数返回系数,使得y = \ beta x。
今天,我了解了总最小二乘法,并且princomp()
可以使用该函数(主成分分析,PCA)来执行它。对我来说应该是有益的(更准确)。我使用进行了一些测试princomp()
,例如:
r <- princomp( ~ x + y)
我的问题是:如何解释其结果?如何获得回归系数?“系数”是指我必须用来乘以x值以得到接近y的数字\ beta。
Answers:
首先,让我们考虑仅一个预测变量(独立变量)的最简单情况。为简单起见,让和都居中,即截距始终为零。从PCA上最流行的线程中最流行的答案可以明显看出标准OLS回归和“正交” TLS回归之间的区别(由我改编):X ÿ
OLS 通过最小化观测值与预测值之间的平方距离来拟合方程。TLS通过最小化点之间的平方距离及其在直线上的投影来拟合相同的方程式。在这种最简单的情况下,TLS线只是2D数据的第一个主要组成部分。要找到,对点进行PCA ,即构造协方差矩阵然后找到其第一个特征向量;然后。Ý Ý(X ,Ý )β (X ,ÿ )2 × 2 Σ v = (v X,v ÿ)β = v ÿ / v X
在Matlab中:
v = pca([x y]); //# x and y are centered column vectors
beta = v(2,1)/v(1,1);
在R中:
v <- prcomp(cbind(x,y))$rotation
beta <- v[2,1]/v[1,1]
顺便说一下,即使和没有居中,这也会产生正确的斜率(因为内置的PCA功能自动执行居中)。要恢复截距,请计算。ÿ β 0 = ˉ ý - β ˉ X
给定一个因变量和许多自变量(同样,为简单起见,所有变量居中),回归拟合方程OLS通过最小化观察值与预测值之间的平方误差来进行拟合。TLS通过最小化观察到的点与回归平面/超平面上最接近的点之间的平方距离来进行拟合。X 我 Ŷ = β 1 X 1 + ... + β p X p。ÿ ÿ(X,ÿ )∈ [R p + 1
请注意,不再有“回归线”!上面的等式指定了一个超平面:如果有两个预测变量,则为2D平面;如果有三个预测变量,则为3D超平面,等等。因此,上述解决方案不起作用:我们无法仅通过使用第一台PC来获得TLS解决方案(即一条线)。不过,可以通过PCA轻松获得解决方案。
如前所述,对点执行PCA 。这在列中产生特征向量。第一特征向量定义一个维超平面,我们需要; 最后一个(数字)特征向量与之正交。现在的问题是如何变换的基础通过第一给定特征向量到系数。p + 1个V p p ħ p + 1 v p + 1个 ħ p β
观察到,如果我们为所有设置且仅,则,即的向量位于超平面。另一方面,我们知道与其正交。即它们的点积必须为零:我≠ ķ X ķ = 1个Ÿ = β ķ(0 ,... ,1 ,... ,β ķ)∈ ħ ħ v p + 1 = (v 1,... ,v p + 1)
在Matlab中:
v = pca([X y]); //# X is a centered n-times-p matrix, y is n-times-1 column vector
beta = -v(1:end-1,end)/v(end,end);
在R中:
v <- prcomp(cbind(X,y))$rotation
beta <- -v[-ncol(v),ncol(v)] / v[ncol(v),ncol(v)]
同样,即使和不居中,这也会产生正确的斜率(因为内置的PCA功能自动执行居中)。要恢复截距,请计算。ÿ β 0 = ˉ ý - ˉ X β
作为健全性检查,请注意,在只有单个预测变量情况下,此解决方案与前一个解决方案一致。实际上,那么空间是2D,因此,假设第一个PCA特征向量与第二个(最后一个)正交,则 。(x ,y )v (1 ) y / v (1 ) x = − v (2 ) x / v (2 ) y
令人惊讶的是,事实证明有一个封闭形式的方程。下面的论点摘自萨宾·范·霍夫(Sabine van Huffel)的书“最小二乘法”(第2.3.2节)。
令和为居中数据矩阵。最后一个PCA特征向量是具有特征值的协方差矩阵的特征向量。如果它是一个特征向量,则。写下特征向量方程:
可以将相同的公式推广到多变量情况,但是即使要定义多变量TLS的功能,也需要一些代数。请参阅TLS上的Wikipedia。对于每个因变量,多变量OLS回归等效于一堆单变量OLS回归,但在TLS情况下并非如此。