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

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

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

统计学背景知识

协方差

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

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

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

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

从公式出发来理解一下:

a441bd6a0763505ea2b12d32f7ada64d.png

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

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

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

相关系数

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

dfa0ddbeb4ce3baa2039ff11baf66397.png

翻译一下:就是用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变量的结构:

c2cf0865090a0d9102a63be195c9710c.png

  • sdev是标准偏差

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

  • scores即降维之后的结果

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

library(factoextra)

PCA结果图:

7fba45702ba9b93067e263302be45945.png

手动画散点图:

2914f77f71802c7f80e8750bcb76749d.png

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

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

"lines")

870a2c2e3df93bb14828238be16c3ca7.png

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")

3202504c156b15427ee578b42b35f8a9.png

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

后记

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物理专线流量平滑切换

在从传统IDC向云上迁移过程中,物理专线作为连接云上和云下的桥梁,在混合云架构中占有绝对重要的地位。作为基础设施,在伴随业务不断发展的过程当中,也会进行相应的更换升级。本文将介绍在物理专线特定情况下进行流量切换时&#x…

怎么实现动态设置静态文件存储目录?

前言文章名字有点绕口,举例说明一下:多用户使用同一个网站上传文件,但是因为一些原因,文件需要存储到服务器的不同目录下。比如用户 A 对应 c:\abc,用户 B 对应 d:\xyz\123。并且,文件需要以静态文件方式提…

编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列

题目难度: 简单原题链接 题目描述给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例 1:输入:"tactcoa" 输出…

Facebook为Messenger应用添加群组付款功能

Facebook在2015年为Messenger应用添加了好友免费转账功能。这个使得用户可以方便安全地向朋友转账,但是如果用户需要向多人支付,可能会耗费时间。幸运的是,Facebook已经通过其最新的Messenger应用更新解决了这个缺点。扩展付款功能现在允许用…

Xamarin.Forms 5.0 项目实战发布!

活动介绍本次活动主要是 .NET Xamarin.Forms 移动端项目开发实战教程, 与以往相同, 本次的收入(其它部分会另行说明) 将用于社区公益活动, 不限于:公益性质的个人/组织机构捐赠开源社区个人/项目捐赠内部投票活动本次的活动费用为:399元, 相对于去年组织的WPF公益实战视频而言,…

unity webgl读写txt文件_VB 读写txt文件

No.7 读写txt文件​mp.weixin.qq.com许多程序需要读写数据,比如商品管理,图书管理,学生档案等,当需要查询的时候,就是读取数据,新增或者更改就需要写数据,VB来讲,中小型的数据一般用…

地图投影系列介绍(一)----地球空间模型

1、现实世界和坐标空间的联系 任何空间特征都表示为地球表面的一个特定位置,而位置依赖于既定的坐标系来表示。 通过统一的坐标系和高程系,可以使不同源的GIS数据叠加在一起显示,以及执行空间分析。 2、地球空间模型描述

layui 数字步进器_图解全新奔驰S级:从“传统豪华”向“数字豪华”转型

全新奔驰S级的全球首发,中国这次也同步进行亮相。而且在全球首发之前的6个小时,就邀请了中国媒体提早进行品鉴。讲真,虽然之前我也不看好新S级,尤其是此前不知道在哪里泄露出来的图片,看着这台车的气场远不及W222来得强…

C# 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism

--概述这个项目演示了如何在WPF中使用各种Prism功能的示例。如果您刚刚开始使用Prism,建议您从第一个示例开始,按顺序从列表中开始。每个示例都基于前一个示例的概念。此项目平台框架:.NET Core 3.1Prism版本:8.0.0.1909提示&…

地图投影系列介绍(二)----地理坐标系

3、地理坐标系 地球的形状与大小确定之后,还必须确定椭球体与大地水准面的相对关系,这项工作称为椭球定位与定向。与大地水准面符合得最好的一个地球椭球体,称为参考椭球体,是地球形体三级逼近。 说到这里,我们需要对这几个词汇做区分:

同一个工作组无法查看计算机,win7系统在同一个工作组看不到其他电脑的解决方法...

很多小伙伴都遇到过win7系统点击右键保存图片时没有另存为选项该的困惑吧,一些朋友看过网上零散的win7系统点击右键保存图片时没有另存为选项该的处理方法,并没有完完全全明白win7系统点击右键保存图片时没有另存为选项该是如何解决的,今天小…

bootstrap 开源框架demo_5 个接私活必备的 Java 开源项目!

公众号关注 “GitHubDaily”设为 “星标”,每天带你逛 GitHub!大家好,我是 Guide 哥,一个三观比主角还正的技术人。今天推荐几个 Java 项目快速开发脚手架,解放双手 ✋ 从现在开始。以下推荐项目都是码云上的优质项目&…

C#隐藏桌面图标和任务栏

最近因为项目需要需要实现桌面图标和任务状态栏的隐藏功能,实现的方式很多,比如修改注册表值,调用windows API函数等。经过一番的查阅,这个功能暂时实现了,或许不是很好的方法,但是我预期的效果达到了&…

CacheManager - 用 C# 编写的 .NET 的开源缓存抽象层

简介CacheManager 是用 C# 编写的 .NET 的开源缓存抽象层。它支持各种缓存提供程序并实现了许多高级功能CacheManager 是用 C# 编写的 .NET 的开源缓存抽象层。它支持各种缓存提供程序并实现了许多高级功能。CacheManager 包的主要目标是让开发人员的生活更容易处理&#xff0c…

这些Intel Atom处理器千万别升Windows 10创意者更新:不兼容

Windows 10创意者更新已经发布,目前的升级方式包括使用Windows 10易升、官方临时链接和MSDNITELLYOU的直链。不过,微软已经给出警告,Intel Clover Trail家族的处理器暂时不支持Windows 10创意者更新,万勿升级,涉及的型…

华中科技大学计算机学院2020直博生名单,华中科技大学各院系2020年博士研究生“申请-考核”制拟录取名单公示...

原标题:华中科技大学各院系2020年博士研究生“申请-考核”制拟录取名单公示根据教育部相关通知要求,结合学校2020年博士“申请-考核”制招生录取工作实际,经各学院研究生招生工作领导小组审核,现陆续发布各院系博士研究生“申请-考…

文档大小超出上传限制怎么办_压缩PDF大小该怎么操作?压缩PDF的软件有哪些?...

压缩PDF大小该怎么操作?工作中使用的任何设备的储存空间都是有限制的,为了能让自己的电脑储存更多的文件,我们可以将多个PDF文件进行压缩再存储。那么我怎么压缩PDF文件呢?下面就小编就来告诉大家压缩PDF文件的好办法。方法一&…

2015 Spark 将走向哪里?

在刚刚过去的spark submit上,Matei Zahara简单回顾了下2014年spark的发展,可用一个词来概括那就是"Amazing"!!! 那么2015年,spark 将主要精力放在哪些方面呢? 一个是数据科学,即提供更高级的API接口&#xf…

char添加一个字符_给你五十行代码把图片变成字符画!程序:太多了,一半都用不完...

今天和大家分享一个简单又好玩的Python项目–“图片转字符画”。废话不多说,先上一个效果图迷惑一下众生。没错的,图片转字符画就是将我们平常所看到的的图片根据像素RGB值和灰度值传化成一个个字符串的过程。嗯…听起来有些费脑子喔。没关系&#xff0c…

oom 如何避免 高并发_微博短视频百万级高可用、高并发架构如何设计?

本文从设计及服务可用性方面,详细解析了微博短视频高可用、高并发架构设计中的问题与解决方案。今天与大家分享的是微博短视频业务的高并发架构,具体内容分为如下三个方面:团队介绍微博视频业务场景“微博故事”业务场景架构设计团队介绍我们…