1.PCA

使用场景:主成分分析是一种数据降维,可以将大量的相关变量转换成一组很少的不相关的变量,这些无关变量称为主成分

  步骤:

  1. 数据预处理(保证数据中没有缺失值)
  2. 选择因子模型(判断是PCA还是EFA)
  3. 判断要选择的主成分/因子数目
  4. 选择主成分
  5. 旋转主成分
  6. 解释结果
  7. 计算主成分或因子的得分

  案例:从USJudgeRatings数据集中有11个变量,如何去减化数据(单个主成分分析)

    1.使用碎石图确定需要提取的主成分个数

 library(psych)
# 1.做出碎石图确定主成分的个数
fa.parallel(USJudgeRatings[,-1],fa='pc',n.iter = 100,show.legend = F,main = 'Scree plot with parallel analysis')

  结论:在特征值大于1的的点附近,都表明保留1个主成分即可

  2.提取主成分

 # 1.第一个参数是关系矩阵
# 2.nfactors指定主成分的个数
# 3.rotate指定旋转方法,默认varimax
# 4.scores表示是否需要计算主成分得分,默认不需要
pc <- principal(USJudgeRatings[,-1],nfactors = 1)
pc

  结论:第一主成分与每一个变量高度相关

  3.获取主成分得分

 pc <- principal(USJudgeRatings[,-1],nfactors = 1,scores = T)
head(pc$scores)
cor(USJudgeRatings$CONT,pc$scores)

  4.获取相关系数

 cor(USJudgeRatings$CONT,pc$scores)

  结论:律师和法官的私交和律师的评级没有关系

  案例2:减少女孩身体指标的主成分分析(多个主成分分析)

  1.判断个数

 fa.parallel(Harman23.cor$cov,n.obs = 203,fa='pc',n.iter = 100,show.legend = F,
main = 'Scree plot with parallel analysis')

  结论:有2个点在水平线1上,所以需要2个主成分

  2.主成分分析

pc2 <- principal(Harman23.cor$cov,nfactors = 2,rotate = 'none')
pc2

  

  结论:需要对数据旋转作进一步分析

  3.主成分旋转(尽可能对成分去噪)

 rc <- principal(Harman23.cor$cov,nfactors = 2,rotate = 'varimax')
rc

  4.获取主成分的得分系数

 round(unclass(rc$weights),2)

  

  结论:可以通过系数*数值来计算出主成分得分

2.EFA

使用场景:探索因子分析发掘数据下一组较少的,无法观测的变量来解释一组可观测变量的相关性

  案例:使用EFA对6个心理学测试来检测参与者的得分

  1.判断需要提取的因子数

 covariances <- ability.cov$cov
correlations <- cov2cor(covariances)
fa.parallel(correlations,n.obs = 112,fa='both',n.iter=100,main = 'Scree plots with parallel analysis')

  结论:需要提取2个因子,因为图形在拐点之上有2个分布

  2.提取公共因子

 fa <- fa(correlations,nfactors = 2,rotate = 'none',fm='pa')
fa

  结论:2个因子解释了6个心理学测试的60%方差,需要进一步旋转

 fa.varimax <- fa(correlations,nfactors=2,rotate='varimax',fm='pa')
fa.varimax

  结论:阅读和词汇在第一个因子占比较大,画图,积木在第二个因子上成分较大,如果想进一步判断这个各因子是否相关,需要使用斜交旋转提取因子

 fa.promax <- fa(correlations,nfactors=2,rotate='Promax',fm='pa')
fa.promax

  结论:相关性为0.57,相关性很大,如果相关性不大,使用正交旋转即可

  3.计算得分

 fsm <- function(oblique) {
if (class(oblique)[2]=="fa" & is.null(oblique$Phi)) {
warning("Object doesn't look like oblique EFA")
} else {
P <- unclass(oblique$loading)
F <- P %*% oblique$Phi
colnames(F) <- c("PA1", "PA2")
return(F)
}
} fsm(fa.promax)

  5.正交旋转所得因子得分图

  结论:词汇和阅读在第一因子上载荷较大,图片,迷宫,积木在第二个因子上载荷较大,普通智力检测在二者的分布较为平均

  6.斜交旋转所生成的因子图

 fa.diagram(fa.promax,simple = F)

  结论:显示了因子之间的关系,该图比上一张图更为准确

   

    

R语言-主成分分析的更多相关文章

  1. R语言主成分分析(PCA)

    数据的导入 > data=read.csv('F:/R语言工作空间/pca/data.csv') #数据的导入> > ls(data) #ls()函数列出所有变量 [1] " ...

  2. 【转】R语言主成分分析(PCA)

    https://www.cnblogs.com/jin-liang/p/9064020.html 数据的导入 > data=read.csv('F:/R语言工作空间/pca/data.csv') ...

  3. 主成分分析(PCA)原理及R语言实现

    原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...

  4. 主成分分析(PCA)原理及R语言实现 | dimension reduction降维

    如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...

  5. 主成分分析、实例及R语言原理实现

    欢迎批评指正! 主成分分析(principal component analysis,PCA) 一.几何的角度理解PCA -- 举例:将原来的三维空间投影到方差最大且线性无关的两个方向(二维空间). ...

  6. PCA主成分分析 R语言

    1. PCA优缺点 利用PCA达到降维目的,避免高维灾难. PCA把所有样本当作一个整体处理,忽略了类别属性,所以其丢掉的某些属性可能正好包含了重要的分类信息 2. PCA原理 条件1:给定一个m*n ...

  7. 数据分析与R语言

    数据结构 创建向量和矩阵 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 函数mean(), sum(), min(), m ...

  8. 零基础数据分析与挖掘R语言实战课程(R语言)

    随着大数据在各行业的落地生根和蓬勃发展,能从数据中挖金子的数据分析人员越来越宝贝,于是很多的程序员都想转行到数据分析, 挖掘技术哪家强?当然是R语言了,R语言的火热程度,从TIOBE上编程语言排名情况 ...

  9. R语言学习路线和常用数据挖掘包(转)

    对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来.当然,这不是最好的学习方式,最好的方式是——看书.目前,市面上介绍R语言的 ...

随机推荐

  1. 国寿e店/人寿云参会云助理,不去公司就能刷脸考勤打卡?

    自从2017年3月平安保险公司实行E行销打卡考勤以来,保险增员迅猛增加,保险业绩也随之水涨船高.年底开始中国人寿保险也陆续开始实行app考勤,有些需要连接公司指定WiFi,或在指定地点方可打卡考勤.不 ...

  2. phpMyAdmin访问远程MySQL数据库的方法

    本地phpmyadmin远程连接服务器端MySQL 首先要确定你的mysql远程连接已开启,如果没有开启按照下面的二个方法操作: 方法一:改表法 因为在linux环境下,默认是关闭3306端口远程连接 ...

  3. Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗?

    8:08:01 青春阳光 2017/4/7 8:08:01 大神在吗? Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗? 青春阳光 2017/4/7 8:08:20 还有个问题,上传到pu ...

  4. .32-浅析webpack源码之doResolve事件流(4)

    流程图如下: 重回DescriptionFilePlugin 上一节最后进入relative事件流,注入地点如下: // relative plugins.push(new DescriptionFi ...

  5. Asp.net mvc 中Action 方法的执行(二)

    [toc] 前面介绍了 Action 执行过程中的几个基本的组件,这里介绍 Action 方法的参数绑定. 数据来源 为 Action 方法提供参数绑定的原始数据来源于当前的 Http 请求,可能包含 ...

  6. java二维码生成技术

    自从微信扫描出世,二维码扫描逐渐已经成为一种主流的信息传递和交换方式.下面就介绍一下我学习到的这种二维码生成方式.预计再过不久身份证户口本等都会使用二维码识别了,今天就做一个实验案例: 二维码主要实现 ...

  7. linux_rsync定时备份

    在linux系统中,需要注意空格使用,有着整体性原则,并且注意大小写问题 Rsync数据同步工具 开源.快速.多功能.可实现全量和增量的本地或远程 具有本地和远程两台主机之间数据快速同步镜像.远程备份 ...

  8. 阿里java开发手册中命名规约解读之DO/BO/DTO/VO/AO

    前言 在阅读<阿里巴巴Java开发手册>时,看到命名规则中有这样一条 虽然知道这些是根据Java对象的角色所分配名称的后缀,但是没有弄清楚分别是什么意思,日常开发中也没有使用到. 网上查找 ...

  9. PHP7.1 报错 Warning Illegal string offset

    报错如下: Warning: Illegal string offset '阿根廷' in F:\wnmp\www\test.php on line 24 Warning: Illegal strin ...

  10. SQL语句-delete语句

    delete语句 delete语句用于删除表中已经存在的整行数据 Tbl_name关键词代表删除数据的目标表 Where子句代表被删除数据的满足条件,如果没有where子句则代 表所有表数据都删除 O ...