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

R语言 PCA主成分分析

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

前言

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

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

reference:

  • http://www.cnblogs.com/longzhongren/p/4300593.html

  • https://www.zhihu.com/question/20852004

  • 223.主成分分析PCA

统计学背景知识

协方差

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

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

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

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

从公式出发来理解一下:

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

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

https://www.zhihu.com/question/20852004

相关系数

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

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

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

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

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

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

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

https://www.zhihu.com/question/20852004

函数总结

注意:这里的输入数据,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怎么画有了更多了解,虽然之前画过,但是都是跑流程,从没有关注具体结果,所以,看似简单,但是却不熟悉。

canoco5主成分分析步骤_R语言 PCA主成分分析相关推荐

  1. R语言PCA主成分分析(Principle Component Analysis)实战2

    R语言PCA主成分分析(Principle Component Analysis)实战2 目录 R语言PCA主成分分析(Principle Component Analysis)实战2 #案例分析

  2. R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战

    R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战 目录 R语言PCA主成分分析(Principle Component Analysis)与线性回归 ...

  3. R语言PCA主成分分析(Principle Component Analysis)实战1

    R语言PCA主成分分析(Principle Component Analysis)实战1 目录 R语言PCA主成分分析(Principle Component Analysis)实战1 #案例分析

  4. R语言 PCA 主成分分析

    1.关键点 综述:主成分分析 因子分析 典型相关分析,三种方法的共同点主要是用来对数据降维处理的从数据中提取某些公共部分,然后对这些公共部分进行分析和处理. #主成分分析 是将多指标化为少数几个综合指 ...

  5. 解决R语言PCA主成分分析的cor()函数错误:Error in cor() : ‘x‘必需为数值

    简单记录 将读取的excel文件转化为csv文件,再次读取后成功运行. 改为csv文件,再次进行复制后:

  6. 主成分分析碎石图_Plotting PCA (主成分分析详细完美补充!!!!)

    点击标题下「蓝色微信名」可快速关注 注:PCA的其他文章直达连接如下,方便又快捷... 主成分分析(PCA)系列 现在为上述知识点进行相关的补充工作,不足之处 望各位同行批评指正........... ...

  7. r语言 整理、处理数据步骤_R语言之数据处理(一)

    在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...

  8. r语言 整理、处理数据步骤_R语言万能数据清洗整理包Tidyverse(一)

    数据整理和清洗是任何统计分析的前提,也是最为困难的一个环节,很多软件也提供了数据整理和清洗的功能.甚至连我们常用的EXCEL也可以做这个工作,但是效率很低,而且容易出错,且无法完整保存清洗过程.R语言 ...

  9. Python-sklearn之PCA主成分分析

    文章目录 写在前面 一.PCA主成分分析 1.主成分分析步骤 2.主成分分析的主要作 二.Python使用PCA主成分分析 写在前面 作为大数据开发人员,我们经常会收到一些数据分析工程师给我们的指标, ...

最新文章

  1. HBase常用API操作
  2. 网络管理员比赛回顾04-DHCP
  3. 官方iPhone SDK和开源工具链
  4. java命令查看jvm内存
  5. Android签名机制之---签名验证过程详解
  6. 考研英语一2016年真题4篇阅读词汇句子积累(详细!!!)
  7. 洛谷P3616 富金森林公园
  8. 大学英语四六各项分值
  9. WebSocket子协议STOMP详解
  10. python统计词频_Python中文分词及词频统计
  11. 有好事?卡巴斯基推出免费杀毒软件
  12. 网课题库接口教程(免费)
  13. VS配置arduino环境
  14. linux的消息队列的创建和实现
  15. 用PYTHON将微信聊天记录生成词云虐狗步骤
  16. 超实用!常用贴片三极管丝印与型号对照表
  17. 员工考勤iPhone客户端1.0版简介
  18. VR全景为家装赋能,沉浸式体验家装设计效果
  19. 这应该是关于GPS定位写得最详实清晰的文章之一
  20. C++ 中read和write函数

热门文章

  1. 在IIS中部署SPA应用,多么痛的领悟!
  2. 中芯国际第二代FinFET工艺有望与2020年底试产
  3. C#9就这么来了,.NET开发者该做点什么?
  4. .NET 5 开发WPF - 美食应用登录UI设计
  5. 用.NET进行客户端Web开发?看这个Bootstrap风格的BlazorUI组件库
  6. 跟沈剑学习如何带领技术团队作战
  7. 用 C# 来守护 Python 进程
  8. 使用Elastic APM监控你的.NET Core应用
  9. .NET Core开发日志——HttpClientFactory
  10. asp.net core合并压缩资源文件引发的学习之旅