Closed ixxmu closed 1 year ago
点击下方公众号,回复资料分享,收获惊喜
主成分分析(Principal Component Analysis,PCA),是考察多个变量间相关性的一种多元统计方法,基本思想[1]就是在保留原始变量尽可能多的信息的前提下达到降维的目的,从而简化问题的复杂性并抓住问题的主要矛盾。最后筛选出的几个替代原始数据的变量被称为主成分,它们是原始变量的线性组合,关系图如下:
依据《R语言实战》提供的实例,下面用psych程序包中的USJudgeRatings数据集进行主成分分析,这个数据集描述的是律师对美国高等法院法官的评分情况,部分数据集及各变量含义如下所示:
>install.packages("psych")
>library(psych)
>USJudgeRatingsz
数据集中的CONT变量表示的是律师与法官的联系次数,由于该变量对评分情况没有影响,考虑在进行主成分分析时将其剔除,用cor函数检查变量间的相关性。从相关系数矩阵中可以发现,有几个变量之间的相关性还是非常强的,表明这份数据适合做主成分分析。
R中构建主成分模型的常用函数有pricipal() 和princomp(),两者不同之处在于: pricipal() 只返回最佳nfactor的子集,而princomp() 将会得到和变量个数一样多的主成分。
>pc<-principal(USJudgeRatings,nfactors=1)
>pc
>pc<-princomp(USJudgeRatings,cor=T)
>summary(pc)
运行结果如下所示:
原则[2]:
碎石图能够直观地展现要选择的主成分数目,图中急剧的中断表明需要提取的主成分的适当数量,从图中可知最佳的主成分个数为1。
>fa.parallel(cor(USJudgeRatings),fa="pc",n.iter = 100,show.legend = F,main = "Scree plot with parallel analysis")
从pricipal() 和碎石图的运行结果可知,第一主成分(PC1)与每一个变量都高度相关,也就是说,PC1是一个可用来进行一般性评价的维度。
运行结果中的h2指主成分对每个变量的方差解释度,u2指方差无法被主成分解释的比例。例如,法官正直度(INTG)84%的方差可以用PC1来解释,15.65%的方差不能由PC1来解释。SS loadings行包含了与主成分相关联的特征值。Proportion Var行表示的是每个主成分对整个数据集的解释程度。
旋转后得到的主成分能更容易的解释原始变量,常用的旋转方法有:
本例中采用正交旋转中的方差极大旋转进行分析:
>rc<-principal(USJudgeRatings,nfactors = 1,rotate="varimax")
> rc
旋转后的结果如下:
pc<-principal(USJudgeRatings,nfactors = 1,scores=T )
pc$scores
rc<-principal(cor(USJudgeRatings),nfactors = 1)
从运行结果可知,PC1的累积方差贡献率为0.92,说明第一主成分可以解释原始变量92%的方差变化,模型拟合效果良好。
基本思想: 《多元统计分析第5版_何晓群》
[2]原则: 《R语言实战》
https://mp.weixin.qq.com/s/Px-3HrKOx8HVx2eflhtj3Q