R语言 RDA分析(去冗余物种)

Python014

R语言 RDA分析(去冗余物种),第1张

也做了挺多次RDA分析,自己现在小结一下RDA分析流程:

就我个人而言,虚线前面都是不太经历的步骤,我一般不会主动删去样品的环境信息,因为我接触的菌群这块本来就没有什么多余的环境信息-_-||,所以我的重点放在怎么去除多余OTU或菌群上面。

一般而言,我首先会做一次差异分析,挑选有差异的OTU或菌群进行展示(phyloseq推荐使用DESeq2和edgeR,详见 Waste Not, Want Not: Why Rarefying Microbiome Data Is Inadmissible ),这里不是重点不在赘述。

但是差异OTU或菌群还有可能太多,RDA呈现出来密密麻麻的,调也得调好久,最后还是好不美观。

偶然间,发现envfit不仅可以评估环境因子的显著性,也可以评估物种的相关性和显著性,这为我们进一步去取冗余物种提供了条件,值得记录下来学习。

示例:

在microbiome analysis中,有着大量的A,诸如PCA,PCoA,RDA,CCA,ICA之类的,网上介绍每一种的文章都十分的多,但是将它们放在一起比较并且讲得比较明白的文章却比较少,而且其中哪一些区别有一些比较显著性的差异,甚至有一些在了解的人看来比较愚蠢的回答,例如MDS的解释成分是多少之类的?

那么在这里着重和大家一起来介绍一下。先是各个的介绍,然后才是进行比较,以及提及一些重点,在每个的介绍中也会提到这些差异点。

大部分的A都围绕着一个点,也就是 降维

PCA大概是其中最为常见的一种,由于其较为简单的原理以及与降维前的数据关联性比较好,所以应用的范围也是十分的广泛,但是由于其过于简单的假设,也导致了在许多实际应用中的 降维效果 受到了限制。

从大的原则上我们已经把PCA讲完,细节上的数学实现,我们这里不加赘述,可以查看一下参考中的文章 PCA的数学原理 ,大体上都是线性代数里的各种矩阵的运算。

最好能够理解数学中的原理,才能够与其他的A进行比较。以下挑出一些比较重要的特点的本质描述(与数学较为密切)。

PCoA也是一个十分有趣的东西,由于其名字与PCA的类似性,导致也有很多人混淆。而且它还有一个别名即, CMDS(Classical multidimensional scaling) ,注意,不是MDS(MDS分两种,Metric和Non-Metric,PCoA算是Metric里面的一个子类)。这里简单的介绍一下,希望不再混淆。

在CMDS中,大多数时候使用欧几里得距离,并且由于欧几里得距离进行推导出下列过程。

大致上和PCoA的一个原则是一样的,但是由于是应用于非欧式距离矩阵的,所以不满足Classical MDS中的假设,所以只能通过解决一个 最优化问题 去求解。

即通过求解一个叫Strees的偏离度来求解投影后的点的坐标。

一般来说,Metric MDS会要求使用者输入降维后所需要的维度,例如 sklearn 中的MDS。

为了最优化这个Stress要比较多而且繁复的高数内容,这里不加讲解。有兴趣的可以看

MDS的数值优化方法

也叫RA(reciprocal averaging)由于CA、PCA、PCoA都属于利用eigenvalues的ordination方法,所以也就放在一起讲,像MDS的另外一种NMDS,也就放在后面再来加以描述。

CA是一种类似于PCA的方法,但是其更多的用于 类型变量的数据 而不是连续变量的数据,本质上是为了从整体上探索两组变量之间的关系。即在两组变量中,寻找若干个具有代表性的变量的线性组合,用这些线性组合的相关关系来表示两组变量间的相关关系。

直白的说,就是将 行的编号以及列的编号 在一个二维坐标轴中做出相应的点,可以看到行编号以及列编号对应的距离关系来看行之间,列之间,行与列之间的关系,距离越近,关系越密切,同时根据特征值,来判断某个点对整个数据的贡献情况。

基本步骤:

其中各样本的排序值即在投影上的坐标,各特征也有一个排序值,所以在投影上也有坐标。

缺点:

就是CA/RA的第二排序轴在许多情况下是第一轴的二次变形,即所谓的“弓形效应”(Arch effect)或者“马蹄形效应”(horse—shoe effect)

由于是为了去除CA第二轴产生的弓形效应的影响,所以其大体和CA是一致的。

仅仅在求第二轴的坐标值时,采用一个将第一轴分成一系列区间,在每个区间内将平均数定为零,从而消除了弓形效应。

弓形效应如下图的X的点的形状。

即在求第二轴时,不需要进行正交化,取而代之的是除趋势。即将第一轴分成数个区间,在每一区间内对 第二轴的排序值分别进行中心化 。用经过除趋势处理的样本的排序值,再进行加权平均求新的特征排序值。后跟第一轴的求法一样,不断的 迭代

Canonical也是一个十分常见的修饰词,也存在CPCA,CCA。其中CPCA即PCA与多元回归的一个结合,即在PCA分析中的每一步都与环境变量进行多元回归,再将回归得到的系数结合到下一步的计算中。( 这句话也是十分奇怪。。。但是由于CPCA的内容十分少,无法考证。

而CCA则是把CA/RA和多元回归结合起来,每一步计算结果都与环境因子进行回归。即在 每次得到样本的排序值时 ,将其余样本对应的解释变量的表格进行多元线性回归。

基本步骤为:

得到的图大概就是类似于CA的结果。

类似于envfit(vegan)

RDA在现在的生信分析中也不是十分的多见。也许是由于其可以算的上是一种特别的PCA(constrained Version),所以其原理上也十分的类似。这里也简单的介绍一下。

RDA主要做的事情是在响应变量中提取出一些能 被解释变量解释 的变量,(can be explained == linear relationships with)

RDA之所以被认为是constrained version of PCA,是因为投影的坐标轴,一方面是由响应变量线性组合而成,但又必须是解释变量的线性组合(通过多重线性回归来拟合)。

RDA的基本步骤

由于RDA的原理讲解也是比较少,那么直接从结果解读来揭示更多的信息。

以上的图就是一个典型的RDA的结果,其中红色的箭头是解释变量(例如说PH、BMI之类的)的一个特征,其长度表示该特征与样本分布间相关程度的大小,连线越长,相关性越大,反之越小。箭头连线和排序轴的夹角以及箭头连线之间的夹角表示相关性,锐角表示成正相关关系。蓝色的点为原始数据降维后的投影(这个投影与PCA的结果是相近的)。

RDA 或者CCA是基于对应分析发展而来的一种排序方法,将对应分析与多元回归分析相结合,每一步计算均与 环境因子 进行回归,又称多元直接梯度分析(Multivariate direct gradient analysis )。此分析是主要用来反映菌群与环境因子之间关系。RDA是基于线性模型,CCA 是基于单峰模型。

RDA 或CCA 模型的选择原则:先用species-sample 数据(97%相似性的样品OTU 表)做DCA 分析,看分析结果中 Lengths of gradient 的第一轴的大小 ,如果大于4.0,就应该选CCA,如果3.0-4.0 之间,选RDA 和CCA均可,如果小于3.0,RDA 的结果要好于CCA。参考自: 非文献,慎用。

对于metric MDS而言,一般是使cost function最小化,也就是叫Stress的(residual sum of squares)。简单地说就是距离矩阵的距离减去投影后的欧式距离的平方和的开平方。但是对于很多的距离矩阵来说,你使用一个欧氏距离的公式(即使是 应用在投影后的距离 上),是十分难以衡量原来距离矩阵的差异的。

而非度量的MDS就是使用了一个不一样的Stress,先对 距离矩阵进行一个变换 (这个变换多种多样),然后再与投影后的欧氏距离进行差值的平方和再开平方。这个变换仅仅保持距离矩阵中的大小关系,而忽略其数值大小的差异,即为单调函数。所以在不同的尺度上会有不同的大小。

基本的步骤为

属于RDA的拓展,也就是当响应变量属于距离矩阵的时候,那么就应该先用PCoA的来进行一次投影,从而得到一个新的坐标数据。后面的过程即将这个坐标数据当做RDA中接受的响应变量,进行一次RDA的分析,得到一个新的坐标轴以及箭头之类的。

其实讲到上面那里应该就已经把大部分的A都讲完了,当然还有一些拓展的例如dbRDA、ICA、DCA这些其实都还算是上面的一部分,但如果硬要这么说的话,其实上述的A们都应该用一个共同的名字去描述,即Ordination analysis,中文大概叫排序分析(我个人是不喜欢这个名字的...)。所以一般用Ordination称呼就好。

而且还有一些A是不属于Ordination,例如LDA,属于机器学习的范畴。剩下的那些也就不加赘述。

大致就这样的。

至于上面各种A之间的比较用图进行阐释。

其中MDS与环境因子的关联同样的可以用多元线性回归进行解决(虽然也是感觉十分的奇怪,仅仅为了通过投影后的坐标关联出的环境因子的结果。)R包:Vegan:envfit。

PCA的数学原理

Multidimensional scaling

http://www.stat.pitt.edu/sungkyu/course/2221Fall13/lec8_mds_combined.pdf

https://stats.stackexchange.com/questions/68680/how-to-interpret-variation-explained-by-principal-coordinates

MDS的数值优化方法

RDA

GUide to STatistical Analysis in Microbial Ecology (GUSTA ME)

CCA

1    pearson, spearman和kendall是常用的三个计算相关系数的方法。这些方法都可以用过R的cor.test来进行计算。

2    Hmisc包的rcorr可以计算matrix之间两两的相关系数。

3    ppcor可以计算偏相关系数。

4    mentel.rtest可以计算矩阵之间的相关。

5    RDA和CCA可以计算“环境因子”与matrix之间的相关关系。

6    adonis、anosim、envfit可以计算变量与matrix之间的关系。

7    SparCC、SPIEC-EASI可以计算matrix之间内部的相关关系,并形成菌群的拓扑结构。