数据清洗 主成分分析法的原理:
PCA(Principal Component Analysis,主成分分析)的思想,就是是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。
PCA的目标是用一组较少的不相关变量代替大量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合。如第一主成分为:
PC1=a1X1=a2X2+……+akXk 它是k个观测变量的加权组合,对初始变量集的方差解释性最大。
第二主成分是初始变量的线性组合,对方差的解释性排第二, 同时与第一主成分正交(不相关)。后面每一个主成分都最大化它对方差的解释程度,同时与之前所有的主成分都正交,但从实用的角度来看,都希望能用较少的主成分来近似全变量集。
PCA中需要多少个主成分的准则:
根据先验经验和理论知识判断主成分数;
根据要解释变量方差的积累值的阈值来判断需要的主成分数;
通过检查变量间k*k的相关系数矩阵来判断保留的主成分数。
最常见的是基于特征值的方法,每个主成分都与相关系数矩阵的特征值 关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,依此类推。
利用fa.parallel()函数,可同时对三种特征值判别准则进行评价。
library(psych)
fa.parallel(USJudgeRatings[,-1],fa="pc",n.iter=100,
show.legend=FALSE,main="碎石图")
碎石图、特征值大于1准则和100次模拟的平行分析(虚线)都表明保留一个主成分即可保留数据集的大部分信息
principal()函数可根据原始数据矩阵或相关系数矩阵做主成分分析
格式为:principal(的,nfactors=,rotate=,scores=)
其中:
r是相关系数矩阵或原始数据矩阵;
nfactors设定主成分数(默认为1);
rotate指定旋转的方式[默认最大方差旋转(varimax)]
scores设定是否需要计算主成分得分(默认不需要)。
library(psych)
(pc<-principal(USJudgeRatings[,-1],nfactors=1))