[读书笔记] R语言实战 (十四) 主成分和因子分析
主成分分析和探索性因子分析是用来探索和简化多变量复杂关系的常用方法,能解决信息过度复杂的多变量数据问题。
主成分分析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语言实战 (十四) 主成分和因子分析的更多相关文章
- [读书笔记] R语言实战 (四) 基本数据管理
1. 创建新的变量 mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8)) #方法一 mydata$sumx<-mydata$x1+mydata$x ...
- [读书笔记] R语言实战 (一) R语言介绍
典型数据分析的步骤: R语言:为统计计算和绘图而生的语言和环境 数据分析:统计学,机器学习 R的使用 1. 区分大小写的解释型语言 2. R语句赋值:<- 3. R注释: # 4. 创建向量 c ...
- [读书笔记] R语言实战 (六) 基本图形方法
1. 条形图 barplot() #载入vcd包 library(vcd) #table函数提取各个维度计数 counts <- table(Arthritis$Improved) count ...
- [读书笔记] R语言实战 (二) 创建数据集
R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 ** R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...
- [读书笔记] R语言实战 (三) 图形初阶
创建图形,保存图形,修改特征:标题,坐标轴,标签,颜色,线条,符号,文本标注. 1. 一个简单的例子 #输出到图形到pdf文件 pdf("mygrapg.pdf") attach( ...
- [读书笔记] R语言实战 (十三) 广义线性模型
广义线性模型扩展了线性模型的框架,它包含了非正态的因变量分析 广义线性模型拟合形式: $$g(\mu_\lambda) = \beta_0 + \sum_{j=1}^m\beta_jX_j$$ $g( ...
- [读书笔记] R语言实战 (五) 高级数据管理
1. 数值函数 1) 数学函数 2) 统计函数 3. 数据标准化 scale() 函数对矩阵或者数据框的指定列进行均值为0,标准化为1的标准化 mydata <- data.frame(c1=c ...
- R语言实战(四)回归
本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
- R语言实战(四)—— 基本数据管理
一.基础操作 1.根据数据信息,创建数据框 > manager <- c(1,2,3,4,5) > date <- c("10/24/08","1 ...
随机推荐
- 微信公众号开发之获取微信用户的openID
(注:openID同一用户同一应用唯一,UnionID同一用户不同应用唯一.不同应用指微信开放平台下的不同用户.) 1. 申请测试号(获得appID.appsecret) 2. 填写服务器配置并验 ...
- vue 上传图片到阿里云(前端直传:不推荐)
为何要这样做:减轻后端数据库压力(个人觉得于前端没啥用,谁返回来都行) 代码部分: <template> <div class="upLoad"> < ...
- 经纬度计算两点间的距离,根据距离排序SQL
#java的Utilspublic class DistanceUtil { // 地球平均半径 private static final double EARTH_RADIUS = 6378137; ...
- 利用redis实现elasticsearch入库去重
背景 公司有一个业务场景,数据库的修改需要同步到Elasticsearch里,但是该场景的修改频率有点高,经常会出现一条记录短时间内多次的变化,如果每次变化都作为一次ES同步任务,那ES肯定是受不住的 ...
- BA-siemens-BA模块特性
PXC24(包含UEC24的模块特性) DO点可以接220vac的电压,渠道人员告知电流不要超过2A AO点只能输出0-10V的电压,不能输出4-20ma的电流,说明书上是错误的 AO点输出10v失败 ...
- POJ 3613
可以利用DP的思想来做,不过是在DP时加上了矩阵乘法的思想而已,但乘法不是真的乘法,而是mp[a][i]+mp[i][b]<mp[a][b]则更新,其实更像FLOYD. 但这是符合乘法的格式的. ...
- UVa11183 - Teen Girl Squad(最小树形图-裸)
Problem I Teen Girl Squad Input: Standard Input Output: Standard Output -- 3 spring rolls please. - ...
- 用 query 方法 获得xml 节点的值
DECLARE @result xml SET @result='<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelo ...
- 不做Next,争做Nest——庆科首届智能硬件创新设计大赛产生决赛12强
智能硬件,Wi-Fi互联,谁是下一个Nest?邀你共见证! 2014年3月到7月.由上海庆科信息技术有限公司主办的首届 MXCHIP 智能硬件创新设计大赛--"寻找下一个nest&quo ...
- Docker Compose + Spring Boot + Nginx + Mysql
Docker Compose + Spring Boot + Nginx + Mysql 实践 我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的 ...