《R语言实战》自学笔记71-主成分和因子分析

作者&投稿:越方 (若有异议请与网页底部的电邮联系)
~

主成分分析
主成分分析((Principal Component Analysis,PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分(原来变量的线性组合)。整体思想就是化繁为简,抓住问题关键,也就是降维思想。
主成分分析法是通过恰当的数学变换,使新变量——主成分成为原变量的线性组合,并选取少数几个在变差总信息量中比例较大的主成分来分析事物的一种方法。主成分在变差信息量中的比例越大,它在综合评价中的作用就越大。

因子分析
探索性因子分析法(Exploratory Factor Analysis,EFA)是一系列用来发现一组变量的潜在结构的方法。它通过寻找一组更小的、潜在的或隐藏的结构来解释已观测到的、显式的变量间的关系。

PCA与EFA模型间的区别
参见图14-1。主成分(PC1和PC2)是观测变量(X1到X5)的线性组合。形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证个主成分间不相关。相反,因子(F1和F2)被当做是观测变量的结构基础或“原因”,而不是它们的线性组合。

R的基础安装包提供了PCA和EFA的函数,分别为princomp()和factanal()。
最常见的分析步骤
(1)数据预处理。PCA和EFA都根据观测变量间的相关性来推导结果。用户可以输入原始数据矩阵或者相关系数矩阵到principal()和fa()函数中。若输入初始数据,相关系数矩阵将会被自动计算,在计算前请确保数据中没有缺失值。
(2)选择因子模型。判断是PCA(数据降维)还是EFA(发现潜在结构)更符合你的研究目标。如果选择EFA方法,你还需要选择一种估计因子模型的方法(如最大似然估计)。
(3)判断要选择的主成分/因子数目。
(4)选择主成分/因子。
(5)旋转主成分/因子。
(6)解释结果。
(7)计算主成分或因子得分。

PCA的目标是用一组较少的不相关变量代替大量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合。如第一主成分为:

它是k个观测变量的加权组合,对初始变量集的方差解释性最大。第二主成分也是初始变量的线性组合,对方差的解释性排第二,同时与第一主成分正交(不相关)。后面每一个主成分都最大化它对方差的解释程度,同时与之前所有的主成分都正交。理论上来说,你可以选取与变量数相同的主成分,但从实用的角度来看,我们都希望能用较少的主成分来近似全变量集。

主成分与原始变量之间的关系
(1)主成分保留了原始变量绝大多数信息。
(2)主成分的个数大大少于原始变量的数目。
(3)各个主成分之间互不相关。
(4)每个主成分都是原始变量的线性组合。

数据集USJudgeRatings包含了律师对美国高等法院法官的评分。数据框包含43个观测,12个变量。

用来判断PCA中需要多少个主成分的准则:
根据先验经验和理论知识判断主成分数;
根据要解释变量方差的积累值的阈值来判断需要的主成分数;
通过检查变量间k × k的相关系数矩阵来判断保留的主成分数。
最常见的是基于特征值的方法。每个主成分都与相关系数矩阵的特征值相关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,依此类推。
Kaiser-Harris准则建议保留特征值大于1的主成分,特征值小于1的成分所解释的方差比包含在单个变量中的方差更少。Cattell碎石检验则绘制了特征值与主成分数的图形。这类图形可以清晰地展示图形弯曲状况,在图形变化最大处之上的主成分都可保留。最后,你还可以进行模拟,依据与初始矩阵相同大小的随机数据矩阵来判断要提取的特征值。若基于真实数据的某个特征值大于一组随机数据矩阵相应的平均特征值,那么该主成分可以保留。该方法称作平行分析。

图形解读:线段和x符号组成的图(蓝色线):特征值曲线;
红色虚线:根据100个随机数据矩阵推导出来的平均特征值曲线;
绿色实线:特征值准则线(即:y=1的水平线)
判别标准:特征值大于平均特征值,且大于y=1的特征值准则线,被认为是可保留的主成分。根据判别标准,保留1个主成分即可。

fa.parallel函数学习
fa.parallel(data,n.obs=,fa=”pc”/”both”,n.iter=100,show.legend=T/F)
data:原始数据数据框;
n.obs:当data是相关系数矩阵时,给出原始数据(非原始变量)个数,data是原始数据矩阵时忽略此参数;
fa:“pc”为仅计算主成分,“fa”为因子分析,“both”为计算主成分及因子;
n.iter:模拟平行分析次数;
show.legend:显示图例。

principal(r, nfactors = , rotate = , scores = )

r:相关系数矩阵或原始数据矩阵;
nfactors:设定主成分数(默认为1);
rotate:指定旋转的方法,默认最大方差旋转(varimax)。
scores:设定是否需要计算主成分得分(默认不需要)。

PC1栏包含了成分载荷,指观测变量与主成分的相关系数。如果提取不止一个主成分,那么还将会有PC2、PC3等栏。成分载荷(component loadings)可用来解释主成分的含义,解释主成分与各变量的相关程度。
h2栏为成分公因子方差,即主成分对每个变量的方差解释度。
u2栏为成分唯一性,即方差无法被主成分解释的部分(1-h2)。
SS loadings包含了与主成分相关联的特征值,其含义是与特定主成分相关联的标准化后的方差值,即可以通过它来看90%的方差可以被多少个成分解释,从而选出主成分(即可使用nfactors=原始变量个数来把所有特征值查出,当然也可以直接通过eigen函数对它的相关矩阵进行查特征值)。
Proportion Var表示每个主成分对整个数据集的解释程度。
Cumulative Var表示各主成分解释程度之和。
Proportion Explained及Cumulative Proportion分别为按现有总解释方差百分比划分主成分及其累积百分比。

结果解读:第一主成分(PC1)与每个变量都高度相关,也就是说,它是一个可用来进行一般性评价的维度。ORAL变量99.1%的方差都可以被PC1来解释,仅仅有0.91%的方差不能被PC1解释。第一主成分解释了11个变量92%的方差。

结果解读:通过碎石图可以判定选择的主成分个数为2个。

结果解读:从结果Proportion Var: 0.58和0.22可以判定,第一主成分解释了身体测量指标58%的方差,而第二主成分解释了22%,两者总共解释了81%的方差。对于高度变量,两者则共解释了其88%的方差。

旋转是一系列将成分载荷阵变得更容易解释的数学方法,它们尽可能地对成分去噪。旋转方法有两种:使选择的成分保持不相关(正交旋转),和让它们变得相关(斜交旋转)。旋转方法也会依据去噪定义的不同而不同。最流行的正交旋转是方差极大旋转,它试图对载荷阵的列进行去噪,使得每个成分只是由一组有限的变量来解释(即载荷阵每列只有少数几个很大的载荷,其他都是很小的载荷)。 结果列表中列的名字都从PC变成了RC,以表示成分被旋转。

当scores = TRUE时,主成分得分存储在principal()函数返回对象的scores元素中。

如果你的目标是寻求可解释观测变量的潜在隐含变量,可使用因子分析。
EFA的目标是通过发掘隐藏在数据下的一组较少的、更为基本的无法观测的变量,来解释一
组可观测变量的相关性。这些虚拟的、无法观测的变量称作因子。(每个因子被认为可解释多个
观测变量间共有的方差,因此准确来说,它们应该称作公共因子。)

其中 是第i个可观测变量(i = 1…k), 是公共因子(j = 1…p),并且p<k。 是 变量独有的部分(无法被公共因子解释)。 可认为是每个因子对复合而成的可观测变量的贡献值。

碎石检验的前两个特征值(三角形)都在拐角处之上,并且大于基于100次模拟数据矩阵的特征值均值。对于EFA,Kaiser-Harris准则的特征值数大于0,而不是1。
结果解读:PCA结果建议提取一个或者两个成分,EFA建议提取两个因子。

fa(r, nfactors=, n.obs=, rotate=, scores=, fm=)
 r是相关系数矩阵或者原始数据矩阵;
 nfactors设定提取的因子数(默认为1);
 n.obs是观测数(输入相关系数矩阵时需要填写);
 rotate设定旋转的方法(默认互变异数最小法);
 scores设定是否计算因子得分(默认不计算);
 fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)。统计学家青睐使用最大似然法,因为它有良好的统计性质。

结果解读:两个因子的Proportion Var分别为0.46和0.14,两个因子解释了六个心理学测试60%的方差。

结果解读:阅读和词汇在第一因子上载荷较大,画图、积木图案和迷宫在第二因子上载荷较大,非语言的普通智力测量在两个因子上载荷较为平均,这表明存在一个语言智力因子和一个非语言智力因子。

正交旋转和斜交旋转的不同之处。
对于正交旋转,因子分析的重点在于因子结构矩阵(变量与因子的相关系数),而对于斜交旋转,因子分析会考虑三个矩阵:因子结构矩阵、因子模式矩阵和因子关联矩阵。
因子模式矩阵即标准化的回归系数矩阵。它列出了因子预测变量的权重。因子关联矩阵即因子相关系数矩阵。

图形解读:词汇和阅读在第一个因子(PA1)上载荷较大,而积木图案、画图和迷宫在第二个因子(PA2)上载荷较大。普通智力测验在两个因子上较为平均。

与可精确计算的主成分得分不同,因子得分只是估计得到的。它的估计方法有多种,fa()函数使用的是回归方法。

R包含了其他许多对因子分析非常有用的软件包。FactoMineR包不仅提供了PCA和EFA方法,还包含潜变量模型。它有许多此处我们并没考虑的参数选项,比如数值型变量和类别型变量的使用方法。FAiR包使用遗传算法来估计因子分析模型,它增强了模型参数估计能力,能够处理不等式的约束条件,GPArotation包则提供了许多因子旋转方法。最后,还有nFactors包,它提供了用来判断因子数目的许多复杂方法。

主成分分析

1.数据导入
数据结构:对10株玉米进行了生物学性状考察,考察指标有株高,穗位,茎粗,穗长,秃顶,穗粗,穗行数,行粒数。

结果解读:选择2个主成分即可保留样本大量信息。

3.提取主成分

结果解读:主成分1可解释44%的方差,主成分2解释了26%的方差,合计解释了70%的方差。

4.获取主成分得分

5.主成分方程

PC1 = 0.27 株高 - 0.04 穗位 + 0.29 茎粗 - 0.01 穗长 - 0.21 秃顶 - 0.13 穗粗 + 0.16 穗行数 + 0.24 行粒数

PC2 = -0.01 株高 + 0.36 穗位 - 0.10 茎粗 + 0.41 穗长 - 0.08 秃顶 + 0.43 穗粗 - 0.15 穗行数 + 0.01 行粒数

图形解读:此图反映了变量与主成分的关系,三个蓝点对应的RC2值较高,点上的标号2,4,6对应变量名穗位,穗长,穗粗,说明第2主成分主要解释了这些变量,与这些变量相关性强;黑点分别对应株高,茎粗,穗行数,行粒数,说明第一主成分与这些变量相关性强,第一主成分主要解释的也是这些变量,而5号点秃顶对于两个主成分均没有显示好的相关性。

因子分析

图解:可以看到需要提取4个因子。

2.提取因子

结果解读:因子1到4解释了80%的方差。

3.获取因子得分

图解:可以看出,因子1和因子2的相关系数为0.4,行粒数,株高,茎粗,秃顶在因子1的载荷较大,穗长,穗位在因子2上的载荷较大;因子3只有穗行数相关,因子4只有穗粗相关。

参考资料:




《R语言实战》自学笔记69-重抽样和自助法
R语言实战的例子: 自己数据集的例子: R语言实战的例子: 自己数据集的例子: 当两种方法所得结果不一致时,你需要更加谨慎地审视数据,这很可能是因为违反了正态性假设或者存在离群点。 R语言实战的例子: 自己数据集的例子: R语言实战的例子: 自己数据集的例子: R语言实战的例子: 自己数据集的例子: 值得注意的是...

《R语言实战》自学笔记61-重复测量方差分析
所谓重复测量方差分析,即受试者被测量不止一次。本节重点关注含一个组内和一个组间因子的重复测量方差分析(这是一个常见的设计)。 以下为R语言实战示例。基础安装包中的CO2数据集包含了北方和南方牧草类植物Echinochloa crus-galli(Potvin,Lechowicz,Tardif,1990)的寒冷容忍度研究结果,在某浓度...

《R语言实战》自学笔记14-图形坐标轴
ratio表示次要刻度线相对于主刻度线的大小比例。参考资料: 《R语言实战》(中文版),人民邮电出版社,2013. R语言作图:坐标轴设置, https:\/\/blog.csdn.net\/weixin_40628687\/article\/details\/79254791 R语言低级绘图函数-axis, https:\/\/www.cnblogs.com\/xudongliang\/p\/6762618.html ...

《R语言实战》自学笔记68-相关图和马赛克图
另外也可用 mosaic(formula, data=) 其中formula是标准的R表达式,data设定一个数据框或者表格。 shade=TRUE将根据拟合模型的皮尔逊残差值对图形上色。 legend=TRUE 将展示残差的图例。图表解读:图3反映的2021年品种a相对b而言,品种a的v1值大的比例较b高,2020年,两品种v1值大小均衡...

《R语言实战》自学笔记28-将函数应用于矩阵和数据框
数据准备 R函数的诸多有趣特性之一,就是它们可以应用到一系列的数据对象上,包括标量、向量、矩阵、数组和数据框。R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上。 apply(x, MARGIN, FUN, ..., simplify = TRUE) 其中,x为数据对象,可以是数组、...

《R语言实战》自学笔记22-数据整理
数据准备 向一个数值型向量中添加一个字符串会将此向量中的所有元素转换为字符型。 is.datatype()用于判断数据类型,返回值为TRUE或FALSE,常见类型包括数值型numeric、字符型character、逻辑型logical、数据框data.frame等。 as.datatype()可将数据类型进行转化。查看数据类型:mode(), class(), ...

有哪些R语言的自学教程?
R语言是一种广泛应用于数据分析和统计建模的编程语言。以下是一些自学R语言的教程:1."R语言实战"(RforDataScience):这是一本由HadleyWickham和GarrettGrolemund合著的入门级教材,适合初学者。它涵盖了R语言的基本概念、数据操作、可视化和统计分析等内容。2."R语言编程导论"(AnIntroductiontoR):这是...

有哪些适合初学者的R 语言书籍可以推荐?
对于R语言的初学者,以下几本书籍都是非常不错的学习资料:1. 《R语言实战》:这是一本被众多读者誉为R语言学习的第一书。书中详细地介绍了R语言的基本操作和数据结构,并涵盖了数据科学的各个方面,如数据导入、整理、可视化和建模。2. 《R语言入门与实践(图灵出品)》:这本书和《R语言实战》...

我需要 数据分析_R语言实战,求分享教材的网盘资源呗~
百度网盘数据分析_R语言实战高清在线观看 https:\/\/pan.baidu.com\/s\/1zpfxZArYxkpCS1LCQVYlVg pwd=1234 提取码:1234 内容简介 《数据分析:R语言实战》可作为计算机、互联网、机器学习、信息、数学、经济金融、管理、运筹、统计以及有关理工科专业的本科生、研究生的学习用书,也能帮助市场营销、金...

初学R语言需要用什么书比较好?
《R语言实战》《R语言编程艺术》,这个过程中最好结合一些小例子来做一些分析的东西。其他还有《R语言实例》《R语言核心技术手册》也都是很好的书。首先R是一种专业性很强的统计语言,如果想学得快一些的话,基本的统计学知识要懂,不然很多东西会掌握的比较慢。R是用于统计分析、绘图的语言和操作环境...

玉溪市18468221256: 学习数据挖掘一般要学哪些软件和工具 -
藏定脑安: 1、WEKAWEKA 原生的非 Java 版本主要是为了分析农业领域数据而开发的.该工具基于 Java 版本,是非常复杂的,并且应用在许多不同的应用中,包括数据分析以及预测建模的可视化和算法.与 RapidMiner 相比优势在于,它在 GNU 通用...

玉溪市18468221256: 怎么学习用 R 语言进行数据挖掘 -
藏定脑安: 如果说数据挖掘是一门手艺,那么R语言就是工匠手里一种工具,要做出一件价值连城的艺术品需要先“利其器”,但更关键的是工匠能够“集百家之长,成一家之言“自成一派的创造力.正所谓”操千曲而后晓声,观千剑而后识器".建议初...

玉溪市18468221256: python学完能做什么? -
藏定脑安: Python+大数据:即Python企业级开发与大数据运维,作为和大数据运维无缝结合的语言, Python+大数据才是真正的大数据. 这些都可以做.

玉溪市18468221256: spss主成分分析哪些主成分
藏定脑安: 主成分分析可以理解为一种数据的处理理论,也可以理解为一种应用方法.而因子分析则可以理解为一种应用方法,因为做因子分析采用的比较多的就是用主成分分析的方...

玉溪市18468221256: 小白新人求帮助,自学R语言中 -
藏定脑安: R是一种专业性很强的统计语言,如果想学得快一些的话,基本的统计学知识要懂,不然很多东西会掌握的比较慢.掌握基本语法和操作,推荐国内的已经翻译的比如《R语言实战》《R语言编程艺术》,这个过程中最好结合一些小例子来做一些...

玉溪市18468221256: 宝宝突然不吃奶粉了怎么办 -
藏定脑安: 厌奶分为两类:生理性厌奶和病理性厌奶.大多数宝宝属于生理性厌奶,医生们普遍认为生理性厌奶无需治疗,过一段时间会自愈.可是眼见着宝宝每日奶量摄取不足,爸妈的心情焦急万分,确实需要...

玉溪市18468221256: 扣商不扣现是什么意思
藏定脑安: 扣商不扣现这个是说会计分录的发生赊销,就是如果销售有商业折扣,应收账款金额是按折扣后的价格计算的,若是现金折扣,应收账款金额是按原价款计算的,不减去现金折扣.银行存款(代垫运费)商业折扣,核算应收账款和收入都要减去商业折扣的,但是不减去现金折扣.会计分录:借:应收账款.贷:主营业务收入.应交税费——应交增值税(销项税额).

玉溪市18468221256: 养成良好习惯演讲稿 -
藏定脑安: 我们始终认为:小学教育即良好习惯养成教育+初步的智力培养.这既是小学生德、智、体、美、劳得以全面发展的具体体现,也是对小学生进行“两全”教育的具体措施和手段.近年来,本校针对所在山区...

玉溪市18468221256: 初学R语言,用lm跑回归时出错,求助 -
藏定脑安: 我在别地方也看到您的提问,我来为你解答:#或这样写公式: regression1 <- lm(data美元符号AmountSpent~data美元符号Salary) #初学者应严格按照数据格式来做,不能随意在数据及函数中增加符号或代码.你的采纳是我前进的动力

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网