主成分分析(pca)是怎样消除多重共线性(colinear)的?
结论:原先线性相关的n个变量,经过坐标变换生成的新的n个变量是两两正交的,而且每一个新变量都是原来n个变量的线性组合。
数学推导如下:
已知m个个案在自然基的坐标是B(b1,b2,…bm),特征向量矩阵A(a1,a2,…an),假设m个个案在新基的坐标是X(x1,x2…xm)
则坐标变换公式
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线性表示,根据定理
而向量组BT线性相关,他的秩<n,所以向量组XT的秩也<n,也就是说向量组XT也是线性相关,那么问题来了向量组XT的向量两两正交,为什么他还能线性相关呢?
原因是书上定义非零向量组成的正交向量组一定是线性无关的,但是向量组XT的向量可以是零向量,零向量与任何一个向量都正交;如果存在零向量,那么向量组一定是线性相关的。