R语言学习笔记-主成分分析(PCA)

浏览: 3930

《R语言实战》学习笔记

principal()   #含多种可选的方差旋转方法的主成分分析

fa.parallel()  #含平行分析的碎石图

格式:principal(data,nfactors=,rotate=,scores=)

调用principal函数主要设置输入参数data和主成分数nfactors。

说明:data相关系数矩阵或原始数据矩阵;

nfactors设定主成分数(默认为1);

rotate指定旋转的方法(默认为最大方差旋转varimax);

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

代码如下:

install.packages("psych")#安装psych包

library(psych) #调用psych函数包

data(USJudgeRatings) #调用数据

fa.parallel(USJudgeRatings[,-1], fa="pc",n.iter=100, show.legend=FALSE, main="Scree plot with parallelanalysis") #含平行分析的碎石图

pc<-principal(USJudgeRatings[,-1],nfactors=1,rotate="none")#提取主成分

pc#输出未旋转的主成分

rc <- principal(USJudgeRatings[,-1],nfactors=1,rotate="varimax")#方差极大旋转的主成分,去噪

rc#输出旋转的主成分

rc <- principal(USJudgeRatings[,-1],nfactors=1,rotate="varimax",score=TRUE) #获取主成分得分

head(rc$scores) #输出主成分得分

round(unclass(rc$weights),2) #输出主成分得分系数

《统计建模与R软件》学习笔记:

测试数据:
X1=c(148, 139, 160, 149, 159, 142, 153, 150, 151, 139, 
       140, 161, 158, 140, 137, 152, 149, 145, 160, 156, 
       151, 147, 157, 147, 157, 151, 144, 141, 139, 148), 
  X2=c(41, 34, 49, 36, 45, 31, 43, 43, 42, 31, 
       29, 47, 49, 33, 31, 35, 47, 35, 47, 44,
       42, 38, 39, 30, 48, 36, 36, 30, 32, 38),
  X3=c(72, 71, 77, 67, 80, 66, 76, 77, 77, 68, 
       64, 78, 78, 67, 66, 73, 82, 70, 74, 78, 
       73, 73, 68, 65, 80, 74, 68, 67, 68, 70),
  X4=c(78, 76, 86, 79, 86, 76, 83, 79, 80, 74, 
       74, 84, 83, 77, 73, 79, 79, 77, 87, 85, 
       82, 78, 80, 75, 88, 80, 76, 76, 73, 78)

代码如下:
####主成分分析

#读取数据

PCAdata<-read.csv("D:/ test.csv")

#作主成分分析

PCAdata.pr<-princomp(PCAdata,cor=TRUE)

#显示分析结果

summary(PCAdata.pr,loadings=TRUE)

#作预测

predict(PCAdata.pr)

#画出主成分的碎石图

screeplot(PCAdata.pr,type="lines")

#画散点图

biplot(PCAdata.pr,choices=1:2,scale=1,pc.biplot=FALSE)

_______________________________________________________________________________

princomp函数

格式:

princomp(x,cor=FALSE,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))),…)

说明:

x是用于主成分分析的数据;cor是逻辑变量,当cor=TRUE表示用样本的相关矩阵R作主成分分析,当cor=FALSE(默认值)表示用样本的协方差S作为主成分分析;covmat是协方差阵,如果数据不用x提供,可由协方差提供。

summary函数

格式:summary(object,loadings=FALSE,cutoff=0.1,…)

说明:object是由princomp()得到的对象;loadings是逻辑变量,当loadings=TRUE表示显示loadings的内容,当loadings=FALSE则不显示。

loadings函数

格式:loadings(x)

说明:x是函数princomp()得到的对象。

predict函数

格式:predict(object,newdata,…)

说明:object是由princomp()得到的对象;newdata是由预测值构成的数据框,当newdata为默认值时,预测已有数据的主成分值。

screeplot函数

格式:screeplot(x,npcs=min(10,length(x$sdev)),

                     type=c(“barplot”,”lines”),

                    main=deparse(substitute(x)), …)

说明:x是princomp()得到的对象;npcs是画出的主成分个数;type是描述画出的碎石图的类型,其中“barplot”是直方图类型,“lines”是直线图类型。

biplot函数

格式:biplot(x,choices=1:2,scale=1,pc.biplot=FALSE,…)

说明:x是princomp()得到的对象;choices是选择的主成分,默认值是第1、第2主成分;pc.biplot是逻辑变量(默认值为FALSE,当pc.biplot=TRUE,用Gabriel提出方法画图)
_______________________________________________________________________________
老师修改:
#读取数据
PCAdata<- read.csv("F:/工作/国电/test.csv")
#作主成分分析
PCAdata.pr<-princomp(PCAdata, cor=T)
#显示分析结果
summary(PCAdata.pr,loadings=T)

#画出主成分的碎石图
screeplot(PCAdata.pr,type="lines")

##输出原始数据的均值和标准差
disdata=rbind(PCAdata.pr$center,PCAdata.pr$scale)
rownames(disdata)=c("center","scale")

##输出主成分得分
scoresdata=PCAdata.pr$scores

推荐 0
本文由 数据小雄 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册