pca降维的基本思想_R语言进行PCA分析

c0598351eb9995961471851440cc8cbe.gif

点击上方「蓝字」关注我

86a2a51d4afed64bc9ecd4e6b856178a.pnge15dbf173127d2169798a555ba1a7aa4.png写在前面
  • 前面我们知道了降维分析

  • 学习了PCoA分析

  • 今天学习PCA分析...

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

思考:我们如何得到这些包含最大差异性的主成分方向呢?

答案:事实上,通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。

 PCoA(Principal Co-ordinates Analysis)分析即主坐标分析。它与PCA类似,通过一系列的特征值和特征向量进行排序后,选择主要排在前几位的特征值,找到距离矩阵中最主要的坐标,结果是数据矩阵的一个旋转,它没有改变样本点之间的相互位置关系,只是改变了坐标系统。如何取舍?

在微生物分析中我们会基于beta多样性分析得到的距离矩阵,进行PCA和PCoA分析,具体距离矩阵可见:beta多样性矩阵。PCA是基于样本的相似矩阵(如欧式距离)来寻找主成分,而PCoA是基于相异距离矩阵(欧式距离以外的其他距离,包括binary_jaccard ,bray_curtis ,unweighted_unifrac和weighted_unifrac距离)来寻找主坐标。

在分析的过程中PCA和PCoA分析都会用到降维的思想,但是在降维的过程中必然会造成数据损失,多数情况下,我们在做降维处理的时候,期望维数越低越好,这样我们就可以最大程度地保真原始数据。PCA基于物种丰度矩阵就意味着PCA分析的矩阵维度等于物种数目。同样的道理,PCoA基于样本间的距离矩阵就意味着PCoA分析的矩阵维度与样本数目相关。因此,如果样本数目比较多,而物种数目比较少,那肯定首选PCA;如果样本数目比较少,而物种数目比较多,那肯定首选PCoA。

上期我们已经介绍了PCoA,今天我们主讲PCA。

发表在2019年代的Microbome (IF>10.0)上的一篇文章Comparative metagenomic and metatranscriptomic analyses reveal the breed effect on the rumen microbiome and its associations with feed efficiency in beef cattle,利用宏基因组和宏转录组的关联分析揭示不同牛品种对瘤胃微生物菌群结构及饲料利用率的影响。作者在分析品种对瘤胃细菌(属水平)和古菌(种)的影响时候,做了一个PCoA分析,结果如下图:

7e8de7f08e8c3c8b332fcf5f0c7516a7.png

但是如果我们不是分析微生物多样性数据,而是分析其他环境变量,能不能同样做出此图呢?当然可以,但是我们用到的吧不是PCoA,而是PCA分析了。话不多说,我们开始实战。

ea6346fd0ff87da5dc59e78b91f75d6f.png

逐准备数据

在Excel里面输入我们的数据,行为组,检测变量为列,切记一定要遵循此规则,不然后面会出现bug。

c680c922e442ed431017352b3a48fe82.pngea6346fd0ff87da5dc59e78b91f75d6f.png

加载包计算PC1

、PC2以及PC3

library(openxlsx)mydatalibrary(vegan)#PCA主要功能包

把mydata转化为矩阵,注意第一列为字符,我们要排除第一列

A

Acolnames(A) rownames(A) rownames(A)library(vegan)env##PCA 排序#环境变量需要标准化,详情 ?rdapca_env #I 型标尺summary(pca_env, scaling = 1)#II 型标尺#summary(pca_env, scaling = 2)#各主成分(PCA轴)特征根,特征根是固定的,和标尺选择无关pca_eig #除以特征根总和,即可得各主成分(PCA轴)解释量pca_exp d10b2bacaa9214b636cb8fa368ec54a6.png以上就是我们后面作图要用到的PC1、PC2以及PC3
ea6346fd0ff87da5dc59e78b91f75d6f.png

计算坐标尺度

#提取对象排序坐标,以 I 型标尺为例,以前两轴为例#scores() 提取样方坐标site.scaling1 #或者在 summary 中提取site.scaling1 site.scaling107821ca5f6fcd5c949eef7703fe9b121.png#write.table(site.scaling1, 'site.scaling1.txt', col.names = NA, sep = '\t', quote = FALSE)

提取变量排序坐标,以 II 型标尺为例,以前两轴为例

#scores() 提取环境变量坐标

env.scaling2

#或者 summary 中提取

env.scaling2

env.scaling2

#write.table(env.scaling2, 'env.scaling2.txt', col.names = NA, sep = '\t', quote = FALSE)

以上就是计算标尺坐标

ea6346fd0ff87da5dc59e78b91f75d6f.png

ggplot2作图

我们用Excel打开输出的pca_site.txt文件。加入我们的组别信息:我们共有三组(group1所示),个数如group2所示:

0fa4642c286763a8f87ed087449aaca0.png

我们读取pca-sitepca_site

pca_site

7a97532df1657c200c68cb4f303344e4.png

library(scatterplot3d)#加载包

scatterplot3d(pca_site$PC1, pca_site$PC2, pca_site$PC3, pch=16,color = rep(c('red2', 'purple2','blue2'), c(3,6,5)),xlab = paste('PCA1: 23.14%'), ylab = paste('PCA2: 13.21%'), zlab = paste('PCA3: 10.02%'))

c(3,6,5)为样本数量,其中样本数量必须与颜色一致

408835da864499119178950a24347680.png是不是很简单易操作,还在犹豫什么赶紧动动手操作吧!1153ac1f47695c3378622e32c9bfd8e4.png

            快开学啦

点赞关注我

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

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

相关文章

c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇

原标题:最全的线性回归算法库总结—— scikit-learn篇本文建议收藏后食用更加美味scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的…

吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代

11月25日,吉麦新能源汽车与联想战略合作签约仪式成功举行,双方正式建立战略合作伙伴关系。未来,双方将在车联网、云解决方案及服务、IT基础架构产品服务、智慧工厂服务领域开展深入合作,合力推动新能源造车数智化转型,…

供应链商品域DDD实践

简介: DDD是一套方法论,实践能否成功,不仅仅是个技术问题,更是执行贯彻实施的问题。本文将就DDD的基本概念和DDD的实施进行分享。 作者 | 侧帽 来源 | 阿里技术公众号 前言 供应链商品域DDD实践时间不长,在实践过程也…

20岁,Universal GIS拥抱新生的GIS信创

近20年来,在快速发展的IT新技术和国家应用需求的双轮驱动下,我国GIS技术和产业得到了飞速发展,GIS软件应用范围从几个行业深入到了数字中国建设中的数字经济、数字政务、数字社会、数字生态建设的几乎所有行业和领域。GIS软件已成为国家治理体…

如何用Netty写一个高性能的分布式服务框架?

byte[] -->堆外内存 / 堆外内存--> byte[] -->java对象。 优化:省去 byte[] 环节,直接 读/写 堆外内存,这需要扩展对应的序列化框架。 String 编码/解码优化。 Varint 优化:多次 writeByte 合并为 writeShort/writeInt/w…

C语言rec文件如何打开,REC 文件扩展名: 它是什么以及如何打开它?

REC 疑难解答典型的 REC 开放挑战Squared 5 MPEG Streamclip 不在你尝试加载 REC 文件并收到错误,例如 “%%os%% 无法打开 REC 文件扩展名”。 通常,这是因为你没有安装适用于 %%os%% 的 Squared 5 MPEG Streamclip。 操作系统不知道如何处理你的 REC 文…

Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航

简介: 通过引入MaxCompute和Quick BI,大东解决了以往数据查询即刻导致数据库闪崩的状况,还搭建起完善的报表体系,稳定应对高频、高并发的数据分析。 大东鞋业一季大约有500款的新品。大区下辖的各个分公司要对这500款新品进行订货…

绿盟科技发布安全知识图谱技术白皮书

随着全球数字化和万物互联的加速发展,近年来勒索病毒的攻击手段不断升级,例如今年美国最大燃油管道受攻击导致美国17个州和华盛顿特区进入紧急状态,引起全球关注。当下企业如何提高安全运营知识以面对不断升级的威胁攻击? 近日&a…

「应用管理与交付」为什么会成为云原生新的价值聚焦点?

简介: 为什么“云原生应用管理与交付”会成为 Kubernetes 之上重要的价值聚焦点?CNCF App Delivery SIG 在推动 Kubernetes 之上应用层技术快速演进的过程中将扮演什么角色?这个领域又将发生哪些值得大家期待的创新?让我们一起了解…

android 4.4官方下载,安卓系统电脑版-android x86 4.4 iso下载官方最新版【pc版】-西西软件下载...

Android-X86是由Beyounn和Cwhuang主持设计的。提供了一套完整的可行源代码树,配套文档以及Live CD与Live USB。Android系统主要应用在智能手机以及平板电脑设备上。日前,越来越多使用英特尔和AMD处理器的计算机也开始运行Android系统。如何才 能让Androi…

dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片

在这篇文章中,我们将使用iloc和loc来处理数据。更具体地说,我们将通过iloc和loc例子来学习切片和索引。一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开始访问该数据的特定部分。例如,如果我们的数据集包…

Flink 和 Iceberg 如何解决数据入湖面临的挑战

简介: 4.17 上海站 Meetup 胡争老师分享内容:数据入湖的挑战有哪些,以及如何用 Flink Iceberg 解决此类问题。 一、数据入湖的核心挑战 数据实时入湖可以分成三个部分,分别是数据源、数据管道和数据湖(数仓&#xf…

高并发下的 HashMap 为什么会死循环

作者 | tech-bus.七十一来源 | 程序员巴士前言HashMap并发情况下产生的死循环问题在JDK 1.7及之前版本是存在的,JDK 1.8 通过增加loHead头节点和loTail尾节点进行了修复,虽然进行了修复,但是如果涉及到并发情况下需要使用hash表,建…

唯品会:在 Flink 容器化与平台化上的建设实践

简介: 唯品会 Flink 的容器化实践应用,Flink SQL 平台化建设,以及在实时数仓和实验平台上的应用案例。 转自dbaplus社群公众号 作者:王康,唯品会数据平台高级开发工程师 自 2017 年起,为保障内部业务在平…

python怎么变成exe_Python怎样打包成exe?

分类:Python | 作者:凹凸曼 | 发表于2011/03/01Python怎样打包成exe?已关闭评论 发现PyInstaller 是个不错的东东,解决打包单个exe的问题,使用非常简单,不用编写setup脚本&#xff1…

PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验

简介: 透明分布式,是PolarDB-X即将发布的能力,它能让应用在使用PolarDB-X的过程中,犹如使用单机数据库一般的体验。与传统的中间件类型的“分布式数据库”相比,有了透明分布式能力的PolarDB-X,不再需要应用…

Chrome 96 又更新了 5 个巨巨巨好用的功能

作者 | 零一来源 | 前端印象‍‍‍‍‍‍‍大家好,收到了 Chrome 96 版本的更新推送,简单看了一下,还是更新了几个挺有趣的东西的,一起来看看到底都有啥~先下载 Chrome Beta 版本才能体验 Chrome 96 哈Chrome Beta我们顺便来给每个…

编译优化 | LLVM代码生成技术详解及在数据库中的应用

简介: 作者:长别 1. 前言 随着IT基础设施的发展,现代的数据处理系统需要处理更多的数据、支持更为复杂的算法。数据量的增长和算法的复杂化,为数据分析系统带来了严峻的性能挑战。近年来,我们可以在数据库、大数据系…

低代码发展专访系列之二:两三年内会出现“现象级”低代码产品吗?

前言:2019年开始,低代码爆火。有人认为它是第四代编程语言,有人认为它是开发模式的颠覆,也有人认为是企业管理模式的变革……有很多声音,社区讨论很热烈。CSDN 随后展开低代码平台产品系列活动,包括低代码开…

为什么Spring仍然会是云原生时代最佳平台之一?

简介: 基于Java语言的Spring生态,还能否适应新的开发方式,比如Cloud Native、Serverless、Faas等,它还会是云原生时代的最佳平台的选择吗?本文将从5个角度来为你分析一下这个问题,分别是:Java和…