主成分分析和探索性因子分析是用来探索和简化多变量复杂关系的常用方法,能解决信息过度复杂的多变量数据问题。

主成分分析PCA:一种数据降维技巧,将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分

探索性因子分析EFA:用来发现一组变量的潜在结构的方法,通过寻找一组更小的,潜在的隐藏的结构来揭示已观测到的,显式的变量间的关系.

R基础安装包中提供了PCA和EFA函数分别为princoomp()和factanal(), psych包中也提供了相关函数,它提供了比基础函数更加丰富和有用的选项.

主成分分析:

判断主成分的个数:1) 先验知识, 2) 解释变量方差的积累值的阈值来判断需要的主成分数,3) 检查变量间k*k 相关系数矩阵来判断保留的主成分数

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

r是相关系数矩阵或者原始数据矩阵

nfactors 设定主成分数

rotate 指定旋转的方法(默认,最大方差旋转)

scores 设定是否需要计算主成分得分(默认不需要)

library(psych)
#这个例子只有一个主成分
#删除CONT变量(下标-1),生成三种评价指标
fa.parallel(USJudgeRatings[,-1],fa='pc',n.iter=100,show.legend = FALSE)
#图中表明选择一个主成分便可,之后使用principal()函数挑出相应的主成分
pc <- principal(USJudgeRatings[,-1],nfactors = 1,scores=TRUE)
pc
#从原始数据中获得成分得分
pc$scores
#这个例子有2个主成分
fa.parallel(Harman23.cor$cov,n.obs=302,fa='pc',n.iter=100,show.legend = FALSE)
rc <- principal(Harman23.cor$cov,nfactors=2,rotate="varimax",scores=TRUE)
rc
#主成分分析基于相关系数矩阵时,原始数据不可用
round(unclass(rc$weights),2)
attach(Harman23.cor)
#利用以下公式
#PC1 = 0.28*cov$height + 0.30*arm.span + 0.30*foream + 0.29*lower.leg - 0.0
#6*weight - 0.08*bitro.diameter - 0.10*chest.girth-0.04*chest.width

探索性因子分析:

EFA目标是通过发掘隐藏在数据下的一组较少的,更为基本的无法观测的变量来揭示一组可观测变量的相关性。这些虚拟的,无法观测的变量称为因子。

library(psych)
options(digits=2)
#数据集ability.cov提供变量的协方差矩阵
covariances<-ability.cov$cov
#用cov2cor将其转化为相关系数矩阵
correlations<-cov2cor(covariances)
correlations
#判断要提取的引子数
fa.parallel(correlations,n.obs = 112,fa="both",n.iter=100)
#用fa函数获取相应的结果
fa<-fa(correlations, nfactors=2,rotate="none",fm='pa')
fa

[读书笔记] R语言实战 (十四) 主成分和因子分析的更多相关文章

  1. [读书笔记] R语言实战 (四) 基本数据管理

    1. 创建新的变量 mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8)) #方法一 mydata$sumx<-mydata$x1+mydata$x ...

  2. [读书笔记] R语言实战 (一) R语言介绍

    典型数据分析的步骤: R语言:为统计计算和绘图而生的语言和环境 数据分析:统计学,机器学习 R的使用 1. 区分大小写的解释型语言 2. R语句赋值:<- 3. R注释: # 4. 创建向量 c ...

  3. [读书笔记] R语言实战 (六) 基本图形方法

    1.  条形图 barplot() #载入vcd包 library(vcd) #table函数提取各个维度计数 counts <- table(Arthritis$Improved) count ...

  4. [读书笔记] R语言实战 (二) 创建数据集

    R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 **  R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...

  5. [读书笔记] R语言实战 (三) 图形初阶

    创建图形,保存图形,修改特征:标题,坐标轴,标签,颜色,线条,符号,文本标注. 1. 一个简单的例子 #输出到图形到pdf文件 pdf("mygrapg.pdf") attach( ...

  6. [读书笔记] R语言实战 (十三) 广义线性模型

    广义线性模型扩展了线性模型的框架,它包含了非正态的因变量分析 广义线性模型拟合形式: $$g(\mu_\lambda) = \beta_0 + \sum_{j=1}^m\beta_jX_j$$ $g( ...

  7. [读书笔记] R语言实战 (五) 高级数据管理

    1. 数值函数 1) 数学函数 2) 统计函数 3. 数据标准化 scale() 函数对矩阵或者数据框的指定列进行均值为0,标准化为1的标准化 mydata <- data.frame(c1=c ...

  8. R语言实战(四)回归

    本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  9. R语言实战(四)—— 基本数据管理

    一.基础操作 1.根据数据信息,创建数据框 > manager <- c(1,2,3,4,5) > date <- c("10/24/08","1 ...

随机推荐

  1. 【JavaScript框架封装】公共框架的封装

    /* * @Author: 我爱科技论坛 * @Time: 20180706 * @Desc: 实现一个类似于JQuery功能的框架 // 公共框架 // 种子模块:命名空间.对象扩展.数组化.类型的 ...

  2. Python - def 函数

    1.def 函数 如果我们用代码实现了一个小功能,但想要在程序代码中重复使用,不能在代码中到处粘贴这些代码,因为这样做违反了软件工程中 DRY原则. Python 提供了 函数功能,可以将我们这部分功 ...

  3. 分布式深度学习之DC-ASGD

    本篇笔记是听刘铁岩老师做Distributed Deep Learning:New Driving Force of Artificial Intelligence报告整理而成 深度学习梯度下降公式如 ...

  4. PHP学习总结(2)——PHP入门篇之PHP代码标识

    认识PHP代码标识 想在页面中编写PHP​代码非常容易,如下面代码: <?php echo "想学习php吗?来慕课网吧";?> 就像你可以编写JavaScript脚本 ...

  5. spring data JPA使用quartz定时器的具体实现

    第一步.在pom.xml中的配置 <!--quartz--> <dependency> <groupId>org.quartz-scheduler</grou ...

  6. PHP 防xss攻击

    PHP直接输出html的,可以采用以下的方法进行过滤: 1.htmlspecialchars函数 2.htmlentities函数 3.HTMLPurifier.auto.php插件 4.Remove ...

  7. CF 558C(Amr and Chemistry-构造法)

    C. Amr and Chemistry time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. 探索Android调用系统的分享功能

    非常多的应用为了应用的推广和传播都会使用"分享"的功能,点击分享button.就能将想要分享的内容或者图片分享至QQ空间.微博.微信朋友圈等实现了分享功能的应用.这篇文章主要是为了 ...

  9. bzoj2806: [Ctsc2012]Cheat(SAM+DP)

    2806: [Ctsc2012]Cheat 题目:传送门 题解: 感觉这题考的更多的就是DP啊... 看完题目的第一反应就是广义SAM...(然而并不会) 再YY一会儿想起来可以直接将作文库连成一个母 ...

  10. dnscapy使用——本质上是建立ssh的代理(通过dns tunnel)

    git clone https://github.com/cr0hn/dnscapy.git easy_install Scapy 服务端: python dnscapy_server.py a.fr ...