1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > canoco5主成分分析步骤_R语言 PCA主成分分析

canoco5主成分分析步骤_R语言 PCA主成分分析

时间:2018-11-26 11:59:58

相关推荐

canoco5主成分分析步骤_R语言 PCA主成分分析

微信公众号:生信小知识

关注可了解更多的教程及生信知识。问题或建议,请公众号留言;

R语言 PCA主成分分析

前言统计学背景知识协方差相关系数函数总结实例讲解1.载入原始数据2.作主成分分析3.结果解读4.画主成分的碎石图并预测5.PCA结果绘制后记

前言

PCA分析大家肯定经常看到,但是你真的懂PCA分析的结果吗?

图我也会看,我只是不是很清楚PCA背后输出结果的解读而已。正好看到一篇不错的博客,就把主要的知识点记录下 。

reference:

/longzhongren/p/4300593.html

/question/2085

223.主成分分析PCA

统计学背景知识

协方差

可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何?

你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的

你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的

从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。

从公式出发来理解一下:

公式简单翻译一下是:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值(其实是求“期望”,但就不引申太多新概念了,简单认为就是求均值了)。

具体例子可以去知乎详细查看:

/question/2085

相关系数

对于相关系数,我们从它的公式入手。一般情况下,相关系数的公式为:

翻译一下:就是用X、Y的协方差除以X的标准差和Y的标准差。

所以,相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差。

既然是一种特殊的协方差,那它:

1、也可以反映两个变量变化时是同向还是反向,如果同向变化就为正,反向变化就为负。

2、由于它是标准化后的协方差,因此更重要的特性来了:它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度

具体例子可以去知乎详细查看:

/question/2085

函数总结

注意:这里的输入数据,rownames是样本名,colnames是样本的特征。(与正常数据正好相反,需要用t()转置数据)

princomp()主成分分析 可以从相关阵或者从协方差阵做主成分分析

fviz_pca_indprincomp()结果进行展示

summary()提取主成分信息

loadings()显示主成分分析或因子分析中载荷的内容

predict()预测主成分的值

screeplot()画出主成分的碎石图

biplot()画出数据关于主成分的散点图和原坐标在主成分下的方向

实例讲解

现有30名中学生身高、体重、胸围、坐高数据,对身体的四项指标数据做主成分分析。

1.载入原始数据

#清空环境

2.作主成分分析

#PCA分析

结果解读:

Standard deviation 标准差 其平方为方差=特征值

Proportion of Variance 方差贡献率

Cumulative Proportion 方差累计贡献率

由结果显示:前两个主成分的累计贡献率已经达到96.36%,可以舍去另外两个主成分,达到降维的目的。

因此可以得到函数表达式:

Z1 = 0.497*height + 0.515*weight + 0.481*chest + 0.507*sit-h

Z2 = 0.543*height - 0.210*weight - 0.725*chest + 0.368*sit-h

注意要点:

princomp()函数中:

cor是逻辑变量,当cor=TRUE表示用样本的相关矩阵R做主成分分析,当cor=FALSE表示用样本的协方差阵S做主成分分析

summary()函数中:

loading是逻辑变量,当loading=TRUE时表示显示loading 的内容,loadings的输出结果为载荷是主成分对应于原始变量的系数,即Q矩阵

3.结果解读

这里我们可以看一看得到的test.pr变量的结构:

sdev是标准偏差

center是每列计算是减去的均值

scores即降维之后的结果

我们可以利用函数来验证下scores的结果到底是什么意思:

library(factoextra)

PCA结果图:

手动画散点图:

可以看到,这两者的结果图是一样的!

4.画主成分的碎石图并预测

"lines")

5.PCA结果绘制

主要用到的函数是fviz_pca_ind,这个函数来自factoextraR包,所以需要先安装&加载才可使用,下面记录下关于这个函数最常用的几个选项:

Usage

fviz_pca_ind(X,axes=c(1,2),geom=c("point","text"),

geom.ind=geom,repel=FALSE,habillage="none",palette=NULL,

addEllipses=FALSE,col.ind="black",fill.ind="white",

col.ind.sup="blue",alpha.ind=1,select.ind=list(name=NULL,cos2

=NULL,contrib=NULL),...)

Arguments

# geom——指定图形上是只显示点,还是同时也显示标签。默认同时显示。

#palette——自行指定颜色

#addEllipses——加95%置信椭圆

#col.ind——每个点的颜色

#legend.title——指定legend的名字

下面看实例:

fviz_pca_ind(test.pr,

geom.ind="point",

col.ind=as.character(c(rep("Normal",15),rep("Tumor",15))),

palette=c("red","black"),

addEllipses=T,

legend.title="Groups")

是有点丑了,不过也是为了方便理解这个函数每个参数的意义。

后记

稍微整理了下,感觉对PCA怎么画有了更多了解,虽然之前画过,但是都是跑流程,从没有关注具体结果,所以,看似简单,但是却不熟悉。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。