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

主成分分析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. AES ECB PKCS5/PKCS7 加解密 python实现 支持中文

    目录 ECB模式介绍 pkcs5padding和pkcs7padding的区别 python实现 注意事项 ECB模式介绍 电码本模式(Electronic Codebook Book (ECB) 这 ...

  2. adb简单使用

    一.基本命令 1.查看目前连接的设备/虚拟器的状态 adb devices

  3. C#实现简单的串口通信

    前言 本着学习研究的态度,用c#语言实现简单的串口通信工具. 一.串口通信原理 串口通信 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比 ...

  4. 【codeforces 799C】Fountains

    [题目链接]:http://codeforces.com/contest/799/problem/C [题意] 你有两种不同的货币; 余额分别为c和d 然后有n种商品; 每种商品只能由两种货币中的某一 ...

  5. 2015 Multi-University Training Contest 10 hdu 5412 CRB and Queries

    CRB and Queries Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  6. Apache 做反向代理服务器

    apache做反向代理服务器 apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web ...

  7. CF43A Football

    CF43A Football 题意翻译 题目大意 两只足球队比赛,现给你进球情况,问哪支队伍赢了. 第一行一个整数nn (1\leq n\leq 1001≤n≤100 ),表示有nn 次进球,接下来n ...

  8. 【Cocos2d-x】坐标系和图层

    在Cocos2D-X中,存在四种坐标系: 1.OpenGL坐标系:该坐标系原点在屏幕左下角.x轴向右,y轴向上.这也就是cocos2dx中用到的坐标系所以没啥好说的. 2.屏幕坐标系(UIKit坐标) ...

  9. MySQL具体解释(8)----------MySQL线程池总结(二)

    这篇文章是对上篇文章的一个补充,主要环绕下面两点展开.one-connection-per-thread的实现方式以及线程池中epoll的使用. one-connection-per-thread 依 ...

  10. 使用记事本开发第一个java程序

    记事本是开发java程序最基础的一个工具 第一步:编写 新建一个文件名为Hello的文本文档,并将文件扩展名改为.java. 在文本框内输入我们的程序代码 ——————————————我是分割线——— ...