您的当前位置:首页正文

主成分分析(pca)是怎样消除多重共线性(colinear)的?

2024-11-29 来源:个人技术集锦

主成分分析(pca)是怎样消除多重共线性(colinear)的?

结论:原先线性相关的n个变量,经过坐标变换生成的新的n个变量是两两正交的,而且每一个新变量都是原来n个变量的线性组合。

数学推导如下:

已知m个个案在自然基的坐标是B(b1,b2,…bm),特征向量矩阵A(a1,a2,…an),假设m个个案在新基的坐标是X(x1,x2…xm
则坐标变换公式

AX=B
X=A -1B
因为正交单位阵的性质A -1=A T
X=A TB
X T=B TA
所以新变量 XT[,1]可以表示为原来n个变量B T的线性组合

R代码

两两正交我不知道该如何证明,但是可以通过r代码实现

######
#pca
B=matrix(data=(c(1,2,3,2,4,6)),nrow = 2,byrow = T)
Bt=t(B)
> Bt
[,1] [,2]
[1,]    1    2
[2,]    2    4
[3,]    3    6

#标准化
BT=scale(Bt)
> scale(Bt)
[,1] [,2]
[1,]   -1   -1
[2,]    0    0
[3,]    1    1
#计算相关系数矩阵;
rm<-cor(BT)
#求特征值和特征向量
rs<-eigen(rm)
> eigen(rm)
eigen() decomposition
$values
[1] 2 0

$vectors
[,1]       [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068  0.7071068
#特征向量矩阵
A=rs$vectors
#进行矩阵乘法XT=BT*A,获得PC score;
XT <BT %*% A
> BT %*% A
[,1] [,2]
[1,] -1.414214    0
[2,]  0.000000    0
[3,]  1.414214    0
colnames(XT) <- c("PC1","PC2")

可以看出新变量是正交的

主成分回归

利用最小二乘法y~XT得到回归方程y=XTα+intercept,α是计算出的系数向量,那么y=BT(Aα)+intercept=BTβ+intercept,β也是系数向量,因此就得到了因变量与原变量组=BT的线性表达式。

题外话

XT=BTA表述为向量组XT可以由向量组BT线性表示,根据定理

显示全文