相信大家在做微生物多样性研究时经常听到PCA分析、PCoA分析,NMDS分析,CCA分析,RDA分析。

它们对

物种(或基因、功能)的分析具有重要作用,因而频频出现在16S测序及宏基因组测序中。

那么你知道这些分析之前到底有什么区别吗?

在什么情况下应该用什么分析呢?

首先,以上分析本质上都属于排序分析(Ordination analysis)。

排序(ordination)的过程就是在一个可视化的低维空间(通常是二维)重新排列这些样方,使得样方之间的距离最大程度地反映出平面散点图内样方之间的关系信息。

常用

的排序方法如下:

1:只使用物种组成数据的排序称作非限制性排序(unconstrained ordination)

(1)主成分分析(principal components analysis,PCA)

(2)对应分析(correspondence analysis, CA)

(3)去趋势对应分析(Detrended correspondence analysis, DCA)

(3)主坐标分析(principal coordinate analysis, PCoA)

(4)非度量多维尺度分析(non-metric multi-dimensional scaling, NMDS)

2:同时使用物种和环境因子组成数据的排序叫作限制性排序(constrained ordination)

(1)冗余分析(redundancy analysis,RDA)

(2)典范对应分析(canonical correspondence analysis, CCA)

我们先来仔细看看PCA与PCoA分析:

在非限制性排序中,16S和宏基因组数据分析通常用到的是PCA分析和PCoA分析。两者的区别在于:PCA分析是基于原始的物种组成矩阵所做的排序分析,而PCoA分析则是基于由物种组成计算得到的距离矩阵得出的。在PCoA分析中,计算距离矩阵的方法有很多种,一般基于Bray-Curtis使用比较广泛。

另外,我们还知道无论是PCA还是PCoA,一般都需要降维处理(一般物种数目都超过3个,样本数目都超过4个),而降维就会产生数据损失。多数情况下,我们在做降维处理的时候,期望维数越低越好,这样我们就可以最大程度地保真原始数据。比如一维和二维数据一般不需要降维处理(直接呈现);再比如要想把三维坐标系的数据降维到一维坐标系上,我们首先要把三维空间的数据降维到二维空间上(此时损失一部分),再将二维空间的数据降维到一维空间上(再损失一部分)。

那这样就好办了。

如果样本数目比较多,而物种数目比较少,那肯定首选PCA;如果样本数目比较少,而物种数目比较多,那肯定首选PCoA。

PCoA主坐标分析

注:PC1 和PC2 是两个主坐标成分,PC1 表示尽可能最大解释数据变化的主坐标成分,PC2 为解释余下的变化度中占比例最大的主坐标成分,PC3 等依次类推。

如今计算能力如此发达,做PCA和PCoA基本都是分分钟的事情,不妨2个都可进行分析,这里不再赘述。(那之前说的这些还有什么用?古人云:知其然,知其所以然)

下面重点介绍一下PCoA

PCoA(principal co-ordinates analysis)是一种研究数据相似性或差异性的可视化方法,通过一系列的特征值和特征向量进行排序后,选择主要排在前几位的特征值,PCoA 可以找到距离矩阵中最主要的坐标,结果是数据矩阵的一个旋转,它没有改变样品点之间的相互位置关系,只是改变了坐标系统。通过PCoA 可以观察个体或群体间的差异。

分析软件

R 语言PCoA 分析和作PCoA 图。

1.在Excel准备好原始数据,组别为行,检测变量为列,注意一定要遵循此规则

2.同样我们需要准备好原始数据的分组信息:

3.读取数据,先读取原始数据,分组信息暂时不读入:

>library(openxlsx)

>mydata

>str(mydata)#因为后面我们会用到我们数据集的行与列的数据,因此我们通常利用str()函数来观察数据集的信息。

4.依次加载以下三个R包

>library(permute)

>library(lattice)

> library(vegan)# vegan 包是进行群落数据分析最常用的R包

5.计算距离

>distance

>distance

6.保存结果

>write.csv(as.matrix(distance),'distance.csv')

7.随后我们对导出的结果再次导入到控制台

>mydata

或者不需要导入,直接进行如下操作更加便捷

8.加载ape包

>library(ape)

>res=pcoa(distance, correction="none")

>head(res$value)

> head(res$value)

>biplot(res)

初步的图我们就做出来了,但是特别的粗糙,不美观,因此我们需要利用ggplot2进行优化。

我们还可以利用

vegan

中的

ANOSIM

相似性分析是一种非参数检验,用来检验组间(两组或多组)差异是否显著大于组内差异,从而判断分组是否有意义。

接下来我们导入分组。

>group

>dune.ano

>summary(dune.ano)#distance是我们的计算的矩阵,group$site是我们的分组名字,mydata是计算矩阵的出去表头的数据。

>plot(dune.ano)

>library(ggplot2)

>P=dune.ano$signif

>R=round(dune.ano$statistic,3)

>data=res$vectors[,1:2]

>data=data.frame(data)

>colnames(data)=c('x','y')

>eig=as.numeric(res$value[,1])

>type=group$site  #我们分组信息

>data=cbind(data,type)

>p =ggplot(data, aes(x=x, y=y, color=type))+geom_point(alpha=.7, size=2) +labs(x=paste("PCoA 1 (",format(100* eig[1] / sum(eig), digits=4), "%)", sep=""),y=paste("PCoA 2 (", format(100*eig[2] / sum(eig), digits=4), "%)", sep=""),title="PCoA")

>p

经过ggplot2美化后的PCoA图就出来了,不得不感叹,ggplot2是真的强大,在R语言的学习中有专门针对ggplot2包的学习资料,笔者就购买了一本有关ggplot2的书,在这里一并推荐给大家:R数据可视化分析

后面如果需要调整图的颜色,大小,字体,可以利用AI实现。

END

r语言做绘制精美pcoa图_R语言进行PCoA分析相关推荐

  1. r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图

    QQ图一般用来比较两组数字的分布,比如两个变量或两个向量. 在国外,顾客习惯性会给服用人员小费,给多少小费是一个经常被讨论的话题,今天使用的数据集为reshape2包的tips数据集,用来演示QQ图的 ...

  2. r语言绘制精美pcoa图_R语言绘制交互式热图

    热图 通过热图可以简单地聚合大量数据,并使用一种渐进的色带来优雅地表现,最终效果一般优于离散点的直接显示,可以很直观地展现空间数据的疏密程度或频率高低.但也由于很直观,热图在数据表现的准确性并不能保证 ...

  3. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文

    这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...

  4. r语言做绘制精美pcoa图_三分钟绘制一张优美的PCoA图 | 云平台

    本文主要为您迅速绘制一张优美的PCoA图提供步骤指导(1-4要点),另附细节优化方法(5及之后的要点),可后期慢慢研究调整,同时提供相关分析方法说明和参考文献,为您深入了解提供支持. 1.了解输入数据 ...

  5. r语言做绘制精美pcoa图_科学网-R语言 PCA PCoA ggplot2-靳泽星的博文

    这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...

  6. r语言做绘制精美pcoa图_如何绘制精美的PCoA图形

    匿名用户 1级 2017-06-20 回答 虽然一般的16S或者宏基因组等分析e69da5e6ba90e799bee5baa6e79fa5e9819331333363373762流程当中都会包含PCo ...

  7. r语言 精美rda图_R语言RDA分析结果环境因子丢失

    用R语言做RDA分析,分析环境因子与物种的相关性.有27的样本,31个物种,14个环境因子.但是最后输出的环境因子得分表"Biplot scores for constraining var ...

  8. r语言做绘制精美pcoa图_R语言:Bary-Curtis PCoA

    导读 Bary-Curtis PCoA降维分析菌群结构. 一.输入数据 1.1 菌属丰度矩阵 df = data.frame(abs(round(matrix(rnorm(729, 100, 50), ...

  9. r语言做绘制精美pcoa图_PCOA分析

    PCoA分析,即主坐标分析(principal co-ordinates analysis),也是一种非约束性的数据降维分析方法,可用来研究样本的相似性或差异性,与PCA分析类似:主要区别在于,PCA ...

最新文章

  1. struts2异常ognl.MethodFailedException: Method setId failed for object
  2. CF1479A Searching Local Minimum
  3. 一键发布到Maven Central的方法
  4. android应用开发(26)---Parcelables 和 Bundles
  5. CentOS平滑更新nginx版本
  6. TokenInsight:BTC全网流量逐级上升,链上活跃度环比上周大幅回升
  7. Android中关于Task的一些认识
  8. 商人Larry Ellison炮轰云计算
  9. IE6 PNG 透明
  10. pl/sql远程连接oracle总结
  11. JAVA异常处理实战心得
  12. Java旅游网站源码+页面
  13. 华为认证hcia含金量_华为hcna认证含金量高吗?
  14. Android 内部存储和外部存储
  15. 人脸识别-多张人脸检测
  16. Linux 下软件包的安装,压缩,解压(详细)
  17. 今日头条2018校招测试开发方向(第一批)详解
  18. 全部资源,都在这里了
  19. 计算机防止检查清理软件吗,解决方案:如何清理计算机垃圾-如何在不使用防病毒软件的情况下清理计算机文件垃圾?...
  20. LabVIEW跑马灯(呼吸灯)-状态机

热门文章

  1. Python获取局域网IP(ping)
  2. 蒙特卡洛树搜索(MTCS)
  3. 韦东山学习笔记——UART(串口)的使用
  4. html代码简单的保护环境网页代码 学生环保主题网页制作代码 简单的垃圾分类网页制作作业 简单的环境保护网页制作源码
  5. 蓝牙搜索显示结果到ListView(十分精简)
  6. 简述网上银行的服务器端系统,网上银行系统jsp .doc
  7. 【div】 设置水平居中
  8. 麓言科技设计师你要有想法
  9. python是什么和c++是什么区别_编程c++和python的区别
  10. 【微信文章封面】微信分别设置封面图和分享图的技巧