基于R语言的因子分析
目录
1.基本理论
1.1因子分析的基本思想
1.2因子分析模型
1.3因子分析的基本步骤
2.因子载荷求解
2.1极大似然法
2.2主成分法
2.3主成分方差最大化正交因子旋转法
2.4绘制因子载荷图
2.5绘制每个学生因子得分图
1.基本理论
1.1因子分析的基本思想
因子分析法是从研究变量内部相关的依赖关系出发,把一些具有错综复杂关系的变量归结为少数几个综合因子的一种多变量统计分析方法。它的基本思想是将观测变量进行分类,将相关性较高,即联系比较紧密的分在同一类中,而不同类变量之间的相关性则较低,那么每一类变量实际上就代表了一个基本结构,即公共因子。对于所研究的问题就是试图用最少个数的不可测的所谓公共因子的线性函数与特殊因子之和来描述原来观测的每一分量。
1.2因子分析模型
(1)X = (x1,x2,…,xp)是可观测随机向量,均值向量E(X)=0,协方差阵Cov(X)=∑,且协方差阵∑与相关矩阵R相等(只要将变量标准化即可实现)。
(2)F = (F1,F2,…,Fm)(m<p)是不可测的向量,其均值向量E(F)=0,协方差矩阵Cov(F) =I,即向量的各分量是相互独立的。
(3)e = (e1,e2,…,ep)¢与F相互独立,且E(e)=0, e的协方差阵∑是对角阵,即各分量e之间是相互独立的,则模型:
称为因子分析模型,由于该模型是针对变量进行的,各因子又是正交的,所以也称为R型正交因子模型。
其矩阵形式为:x =AF +
我们把F称为X的公共因子或潜因子,矩阵A称为因子载荷矩阵, 称为X的特殊因子。A = (aij),aij为因子载荷。数学上可以证明,因子载荷aij就是第i变量与第j因子的相关系数,反映了第i变量在第j因子上的重要性。
1.3因子分析的基本步骤
(1)根据研究的问题选取原始变量
(2)对原始变量进行标准化并求出相关阵,分析变量之间的相关性
(3)求解初始公因子及其因子载荷矩阵
(4)因子旋转
(5)计算因子得分
(6)绘制因子载荷图,因子得分图
例题:下图是学生的六门成绩数据,试对数据进行因子分析。
2.因子载荷求解
2.1极大似然法
R语言代码:
#加载包
library("readxl")
library("psych")
library("GPArotation")#读取数据
data<-read_xlsx("D:/桌面文件/12.xlsx")
data#计算样本相关矩阵
R<-cor(data)
R#碎石图
par(mfrow=c(1,1))
screeplot(princomp(data),type="lines")#用极大似然法做因子分析
factanal(data,factors = 3,rotation = "none")
运行结果:
从图中可知,可以分为3个因子
第一个矩阵为原始数据的相关矩阵,从图中可以看出,x4,x5与x6之间存在较强的相关性,使用极大似然法的因子分析等方法可以消除个变量之间的相关性,以此来提取因子。从极大似然法做因子分析的结果来看,前两个的累计贡献率为78.9%.
2.2主成分法
当相关变量所取单位不同时,常常先对变量标准化,标准化变量的样本协方差阵就是原始变量的样本相关阵R,再用R代替S,与上类似,即可得主成分解。
R语言代码:
#主成分法做因子分析
fac<-principal(data,3,rotate="none")
运行结果:
从图中来看使用主成分因子分析的结果来看,前两个因子的累计贡献率达到了86%,对比极大似然法的78.9%,所来可以得到用主成分因子分析的结果要优于极大似然法做因子分析。造成改结果的原因是,极大似然法做因子分析要求数据样本服从多元正态分布,但是现实中的数据很难满足要求,因此可以采用基于主成分的方差最大化做因子正交旋转。
2.3主成分方差最大化正交因子旋转法
因子分析的目的不仅是求出公共因子,更主要的是应该知道每个公因子的实际意义.但由于前面介绍的估计方法所求出的公因子解,其初始因子载荷矩阵并不满足“简单结构准则”,即各个公因子的典型代表变量很不突出,因而容易使公因子的实际意义含糊不清,不利用对因子的解释.为此,必须对因子载荷矩阵施行旋转变换,使得因子载荷的每一列各元素的平方按列向0或1两极转化,达到其结构简化的目的.
R语言代码:
#主成分法,方差最大化做因子正交旋转
fac1<-principal(data,3,rotate="varimax")#计算因子得分
fac1$scores
运行结果:因子得分
从主成分方差最大化正交因子旋转法的运行结果来看,前两个因子累计贡献率为86%,跟前面主成分的结果一致。第一个因子为语文(x4),历史(x5),英语(x6)三个科目具有强烈正相关,相关系数分别为0.83,0.81,0.89;第二个因子为数学(x1),物理(x2),化学(x3)有强烈正相关,相关系数分别为:0.87,0.82,0.85,则第一个可以成为文科因子,第二个可以成为理科因子。即正交旋转后因子的含义更加清晰。
2.4绘制因子载荷图
R语言代码:
#绘制因子载荷图
plot(fac1$loadings,xlab="Factor1",ylab="Factor2")
运行结果:
从图中的两个因子的载荷图来看,x4,x5,x6离第一个因子代表的横轴近,x1,x2,x3里第二个因子所代表的横轴近。
2.5绘制每个学生因子得分图
#绘制每个学生的因子得分图与原坐标在因子上的方向,反应因子与原始数据的关系
biplot(fac1$scores,fac1$loadings)
运行结果:
从该图来看,可以更好的反应因子载荷图的效果,清晰的看出每一个学生的因子得分情况。
参考文献:
何晓群,多元统计分析(第五版),中国人民大学出版社
薛毅,统计建模与Rfacfa'c
基于R语言的因子分析相关推荐
- 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...
- R语言探索性因子分析(Exploratory factor analysis)
R语言探索性因子分析(Exploratory factor analysis) 因子分析的方法一般有两种:一是探索性因子分析(EFA):二是验证性因子分析(CFA).探索性因子分析有助于建立新的假设. ...
- canoco5主成分分析步骤_基于R语言的主成分分析
基于R语言的主成分分析 加入的SPSS群里有人问,怎么用SPSS进行主成分分析.确实没有注意到这种操作.很好奇,于是翻了翻孙振球的<医学统计学>,发现主成分分析这一块,竟使用了SAS!后来 ...
- r语言 线性回归 相关系数_基于R语言的lmer混合线性回归模型
原文 基于R语言的lmer混合线性回归模型tecdat.cn 混合模型适合需求吗? 混合模型在很多方面与线性模型相似.它估计一个或多个解释变量对响应变量的影响.混合模型的输出将给出一个解释值列表,其 ...
- 基于R语言实现的交通时空大数据处理
2019独角兽企业重金招聘Python工程师标准>>> 基于R语言实现的交通时空大数据处理 Import public NYC taxi and Uber trip data int ...
- 【R语言实验】基于R语言的时间序列平稳性检验
一.实验项目名称:基于R语言的时间序列平稳性检验 二.实验目的与要求: 平稳时间序列的概念,平稳性检验的时序图检验方法和自相关图检验方法. 三.实验原理: 时序图和自相关图检验时间序列的平稳性依据: ...
- 055B ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程--更新日期2021-9
055B-1 视频附带资料下载和密码:软件-数据-文献下载-持续更新 055B-2 ENMTools软件下载安装 055B-3 R软件和工具包安装 055B-4 生物气候因子的精度说明与选择方法(理论 ...
- 基于R语言或Matlab直接读取压缩包中的数据
写在前面 以gosif网站上的tiff数据为例. 该数据是地学上常用的一种数据,希望读取该网站上的gosif数据:http://data.globalecology.unh.edu/data/GOSI ...
- 基于R语言混合效应模型(mixed model)案例研究
全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...
- 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
详情链接 :基于R语言.MaxEnt模型融合技术的物种分布模拟.参数优化方法.结果分析制图与论文写作 内容介绍: 第一章 .理论篇 以问题导入的方式,深入掌握原理基础 : 什么是MaxEnt模型? ...
最新文章
- 学霸现身!博士生发18篇SCI,4篇CNS子刊,开学典礼上全场震撼
- vue 定时循环 setInterval
- mybaits五:主键的自增
- springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错
- [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
- 子类可以继承到父类上的注解吗
- maya 中使用节点连接来求余数:
- Java基础-SSM之mybatis快速入门篇
- JDBC Statements, PreparedStatement
- 直播笔记 | Unity中射线检测详解
- Linux下Oracle的启动登陆命令、单实例启动、多实例启动
- Java窗口点叉无法关闭解决方案
- numpy与scipy安装
- 第七章 变量进阶与点阵LED 练习题
- CSDN如何修改用户名(CSDN ID)、用户昵称以及自定义博客域名等
- 找了这么多毕业设计题目,反而不知道选什么了
- 彩虹域名授权平台系统正版源码 带下载更新功能
- VisionPro(1) —— 简介
- 文献管理软件Zotero的安装和使用
- win 开机、关机 自动发送邮件
热门文章
- VS软件版本号定义、规则和相关的Visual Studio插件
- oracle有rtf函数,Delphi中对Oracle存取RTF文档_Delphi
- centos7构建kylo-0.10.1
- python rgb565_RGB565的转换
- 计算机二级1px等于多少厘米,px和pt换算(1px等于多少pt)
- 日照分析的计算机精度,日照分析计算精度(时间间隔)的粗探
- 如何成为微信小程序的开发者?
- Android集成华为Push及注意事项
- 解决Nvidia 显卡驱动安装失败的方法
- mysql开启远程登录