R语言实战第十四

本文详细介绍了R语言中主成分分析和因子分析的应用,包括数据预处理、模型选择、主成分/因子数目判断、旋转方法、结果解释及因子得分计算。通过实例展示了如何使用princomp()和factanal()函数,以及psych包中的函数进行分析。通过主成分分析和因子分析,可以将大量相关变量转换为少量不相关的主成分或因子,从而降低数据维度并保留大部分信息。
摘要由CSDN通过智能技术生成

1.  前言

主成分分析是一种数据降维的技巧,能将大量相关变量转化为一组很少的不想管变量,这些不相关变量称之为主成分,因子分析是一系列用来发现一组变量的潜在结构的方法,通过寻找一组更小的,潜在的结构解释观测到的,显式的变量间的关系.

主成分分析是观测变量的线性组合,形成线性组合的全中都是通过最大化个主成分所解释的方差来获取,同时要保证各主成分各不相关.

因子分析是被当做是观测变量的结构基础或是原因,而不是线性组合,代表观测变量方差的误差无法用因子解释,相关的因子和误差无法直接观测,但可通过变量间的相关关系退到得到.

相关经验法则:因子分许需要5—10倍与变量数的样本数才可用.

2.  R中的主成分和因子分析

R中的基础函数princomp()函数和factanal()函数,也可采用psych包中的函数

psych包中的因子分析函数

函数

描述

principal()

含多种可选的方差旋转阀的主成分分析

fa()

可用主轴,最小残差,加权最小平方或最大似然法估计的因子分析

fa.parallel()

含平行分析的碎石图

factor.plot()

绘制因子分析或主成分分析的结果

fa.diagram()

绘制因子分析或主成分的载荷矩阵

scree()

因子分析和主成分分析的碎石图

采用这两种方法需要一些步骤才可获得最终结果,常见的步骤如下:

(1):数据预处理:主成分分析和因子分析都根据观测变量间的相关性来退到结果,可将原始数据矩阵或者相关系数矩阵输入到principao()和fa()函数中,若输入的是初始矩阵,则相关系数矩阵会自动计算,但是要确保数据中没有存在缺失值.

(2):选择因子模型,判断是因子分析还是主成分分析,若是因子分析,则要选择一种估计因子模型的方法,例如有最大似然估计法

(3):判断要选择的主成分/因子数目

(4):选择主成分/因子

(5):旋转主成分/因子

(6):解释结果

(7):计算主成分或因子得分

3.主成分分析

主成分是讲一组较少的不想管变量替代大量相关变量,同时尽可能保留初始变量的信息.采用数据集USJudgeRatings中美国高等法官法官的评分进行主成分分析.用较少的变量来替代总结这11个变量,首先需要进行的是判断主成分的个数,准则如下:

(1):根据先验经验和理论知识判断主成分输

(2):跟要要解释的变量方差的累计值的阈值来判断所需主成分数

(3):通过检查变量间K*K的相关系数矩阵来判断保留的主成分数

较常见是基于特征值的方法,每个主成分都与相关系数矩阵的特征值相关联,第一主成分与最大的特征值相关联,第二主成分与第二大的特征值相关联,KH准则建议保留特征值大于1的主成分,碎石图是绘制了特征值与主成分数的图形,在图形变化最大处之上的主成分皆可保留,最后,仍需进行模拟,依据初始矩阵大小的随机数据矩阵来判断要提取的特征值.若基于真实数据的某个特征值大于一组随机数据矩阵相应的平均特征值,该主成分可以保留,该方法称为平行分析.

利用fa.parallel()函数,同时对三种特征值判别准则进行评价.

fa.parallel(USJudgeRatings[, -1], fa ="pc", n.iter  = 100

+            show.legend = FALSE, main = "Scree plot with parallelanalysis")

由图展示了基于观测特征值的碎石检验(即含有X的线段),根据100个随机数据矩阵退到出来的特征值均值(虚线)及大于1的特征值准则.三种准则表明选择一个胡成分可保留数据集的大部分信息,下步为使用principal()函数提取主函数.其格式为:

principai(r,nfactors=,rotate=,scores=)

其中r是相关系数矩阵或者原始矩阵,nffactors是主成分数(默认值为1),rotate是指旋转方法(默认方法是最大方差旋转(varimax)),scores设定是否需要计算主成分的得分,默认值是否.n.iter是指随机矩阵的个数

library(psych)

pc<-principal(USJudgeRatings[,-1],nfactors=1,rotate="varimax",scores=T)

pc

Principal Components Analysis

Call: principal(r = USJudgeRatings[, -1],nfactors = 1, rotate = "varimax",

   scores = T)

S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值