案例R语言实现主成分和因子分析

案例R语⾔实现主成分和因⼦分析
主成分分析(PCA)是⼀种数据降维技巧,它能将⼤量相关变量转化为⼀组很少的不相关变量,这些⽆关变量称为主成分。
探索性因⼦分析(EFA)是⼀系列⽤来发现⼀组变量的潜在结构的⽅法,通过寻⼀组更⼩的、潜在的或隐藏的结构来解释已观测到的、变量间的关系。
1.R中的主成分和因⼦分析
R的基础安装包中提供了PCA和EFA的函数,分别为princomp ()和factanal()
psych包中有⽤的因⼦分析函数
函数描述
principal()含多种可选的⽅差放置⽅法的主成分分析
fa()可⽤主轴、最⼩残差、加权最⼩平⽅或最⼤似然法估计的因⼦分析
fa.parallel()含平等分析的碎⽯图
factor.plot()绘制因⼦分析或主成分分析的结果
fa.diagram()绘制因⼦分析或主成分分析的载荷矩阵
scree()因⼦分析和主成分分析的碎⽯图
PCA/EFA 分析流程:
(1)数据预处理;PCA和EFA都是根据观测变量间的相关性来推导结果。⽤户可以输⼊原始数据矩阵或相关系数矩阵列到principal()和fa()函数中,若输出初始结果,相关系数矩阵将会被⾃动计算,在计算前请确保数据中没有缺失值;
(2)选择因⼦分析模型。判断是PCA(数据降维)还是EFA(发现潜在结构)更符合你的分析⽬标。若选择EFA⽅法时,还需要选择⼀种估计因⼦模型的⽅法(如最⼤似然估计)。
(3)判断要选择的主成分/因⼦数⽬;
(4)选择主成分/因⼦;
(5)旋转主成分/因⼦;
(6)解释结果;
(7)计算主成分或因⼦得分。
2.主成分分析
PCA的⽬标是⽤⼀组较少的不相关变量代替⼤量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合。如第⼀主成分为:
PC1=a1X1=a2X2+……+akXk 它是k个观测变量的加权组合,对初始变量集的⽅差解释性最⼤。
第⼆主成分是初始变量的线性组合,对⽅差的解释性排第⼆,同时与第⼀主成分正交(不相关)。后⾯每⼀个主成分都最⼤化它对⽅差的解释程度,同时与之前所有的主成分都正交,但从实⽤的⾓度来看,都希望能⽤较少的主成分来近似全变量集。
(1)判断主成分的个数
PCA中需要多少个主成分的准则:
根据先验经验和理论知识判断主成分数;
根据要解释变量⽅差的积累值的阈值来判断需要的主成分数;
通过检查变量间k*k的相关系数矩阵来判断保留的主成分数。
最常见的是基于特征值的⽅法,每个主成分都与相关系数矩阵的特征值关联,第⼀主成分与最⼤的特征值相关联,第⼆主成分与第⼆⼤的特征值相关联,依此类推。
Kaiser-Harris准则建议保留特征值⼤于1的主成分,特征值⼩于1的成分所解释的⽅差⽐包含在单个变量中的⽅差更少。Cattell碎⽯检验则绘制了特征值与主成分数的图形,这类图形可以展⽰图形弯曲状况,在图形变化最⼤处之上的主成分都保留。
最后,还可以进⾏模拟,依据与初始矩阵相同⼤⼩的随机数矩阵来判断要提取的特征值。若基于真实数据的某个特征值⼤于⼀组随机数据矩阵相应的平均特征值,那么该主成分可以保留。该⽅法称作平⾏分析。
利⽤fa.parallel()函数,可同时对三种特征值判别准则进⾏评价。
[plain]
1.
library(psych)
2.
fa.parallel(USJudgeRatings[,-1],fa="PC",n.iter=100,show.legend=FALSE,main="Screen plot with parallel
analysis")
碎⽯头、特征值⼤于1准则和100次模拟的平⾏分析(虚线)都表明保留⼀个主成分即可保留数据集的⼤部分信息,下⼀步是使⽤principal()函数挑选出相应的主成分。
压电陶瓷驱动器(2)提取主成分
principal()函数可根据原始数据矩阵或相关系数矩阵做主成分分析
格式为:principal(的,nfactors=,rotate=,scores=)
其中:r是相关系数矩阵或原始数据矩阵;
二氧化氮
nfactors设定主成分数(默认为1);
rotate指定旋转的⽅式[默认最⼤⽅差旋转(varimax)]
会计研究弧面凸轮scores设定是否需要计算主成分得分(默认不需要)。
[plain]
rootkit1.
太平洋岛国美国法官评分的主成分分析
2.
library(psych)
3.
pc<-principal(USJudgeRatings[,-1],nfactors=1)
4.
pc
此处,输⼊的是没有ONT变量的原始,并指定获取⼀个未旋转的主成分。由于PCA只对相关系数矩阵进⾏分析,在获取主成分前,原始数据将会被⾃动转换为相关系数矩阵。
PC1栏包含了成分载荷,指观测变量与主成分的相关系数。如果提取不⽌⼀个主成分,则还将会有PC2、PC3等栏。成分载荷(component loadings)可⽤来解释主成分的含义。此处可看到,第⼀主成分(PC1)与每个变量都⾼度相关,也就是说,它是⼀个可⽤来进⾏⼀般性评价的维度。
h2柆指成分公因⼦⽅差-----主成分对每个变量的⽅差解释度。
u2栏指成分唯⼀性-------⽅差⽆法被主成分解释的⽐例(1-h2)。
SS loadings⾏包含了主成分相关联的特征值,指的是与特定主成分相关联的标准化后的⽅差值。
Proportin Var⾏表⽰的是每个主成分对整个数据集的解释程度。
结果不⽌⼀个主成分的情况
1.
library(psych)
2.
fa.$cov,n.obs=302,fa="pc",n.iter=100,show.legend=FALSE,main="Scree plot with parallel analysis")
载荷阵解释了成分和因⼦的含义,第⼀成分与每个⾝体测量指标都正相关,看起来似乎是⼀个⼀般性
的衡量因⼦;第⼆主成分与前四个变量负相关,与后四个变量正相关,因此它看起来似乎是⼀个长度容量因⼦。但理念上的东西都不容易构建,当提取了多个成分时,对它们进⾏旋转可使结果更具有解释性。
(3)主成分旋转
旋转是⼀系列将成分载荷阵变得更容易解释的数学⽅法,它们尽可能地对成分去噪。
旋转⽅法有两种:使选择的成分保持不相关(正效旋转),和让它们变得相关(斜交旋转)。
旋转⽅法也会依据去噪定义的不同⽽不同。
最流⾏的下次旋转是⽅差极⼤旋转,它试图对载荷阵的列进⾏去噪,使得每个成分只是由⼀组有限的变量来解释(即载荷阵每列只有少数⼏个很⼤的载荷,其他都是很⼩的载荷)。
[plain]
1.
install.packages("GPArotation")
2.
library(GPArotation)
3.
rc<-$cov,nfactors=2,rotate="varimax")
4.
rc

本文发布于:2024-09-21 19:32:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/362563.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:成分   变量   矩阵   分析
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议