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

作者:数据小雄 , 分类:R语言 , 浏览:21500 , 评论:0

 201508111439291600126147.jpg

主成分分析(PCA

《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)), )

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

biplot函数

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

说明:xprincomp()得到的对象;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


R语言交流QQ群:99598210,欢迎加入!

点击链接加入:http://jq.qq.com/?_wv=1027&k=2GdJIAQ


数据小雄R语言学习笔记,转载请注明出处,谢谢!官网:http://www.zhangzhengxiong.com

—————————————————————————

【版权申明】

如非注明,本站文章均为 数据小雄 原创,转载请注明出处:数据小雄博客,并附带本文链接,谢谢合作!

本文地址:http://www.zhangzhengxiong.com/?id=4。

—————————————————————————

亲!有什么想法呢?
  • 流泪

    0

  • 打酱油

    1

  • 开心

    18

  • 鼓掌

    3

  • 恐怖

    0

 

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

额 本文暂时没人评论 来添加一个吧
新浪微博
米店
标签列表
@数据小雄 | 专注于数据分析、挖掘、可视化案例分享