三万字懂得微生物群落差异分析(中)
9.2.1 介绍不同矩阵的Mantel检验和Partial Mantel检验
Mantel发起了一个排列检测程序(Mantel 1967)来测试两个距离矩阵之间的相关性,并在Mantel和Valand中进一步发展(Mantel和Valand 1970)。由于这一开端,该程序在生物和环境科学中被称为Mantel检验,在统计文学中也被称为Mantel和Valand的非参数MANOVA。
一般来说,相关分析是用来量化两个连续变量之间的关系,或者一个自变量和一个因变量之间的关系,或者两个自变量之间的关系。Mantel的检验的优点是:它可以应用于不同类型的变量,包括类别、等级或区间尺度数据,因为它使用距离(不同)矩阵作为其输入数据。Mantel’s检验的设定是回归分析,其中变量本身是距离或不相似矩阵,总结了样本位置之间的成对相似性。在这种设置下,因变量不是“类群X在样本i上的丰度”,而可能是“类群X在样本i和j上的平均数量的相似性”;同样,预测变量也不是单个样本的“条件”,它可能是样本之间的“条件相似性”。
总的来说,Mantel的检验是一个相关性检验,因为它分析两个变量或两个距离矩阵的关联,它仅仅是一种距离矩阵的回归性分析。这仅仅是一种倒退 距离矩阵。事实上,们特尔检验的力量和多功能性就在于此。处理距离矩阵和构建回归分析。在相关分析中包含分类变量的功能,并转换这些变量到距离(不同)矩阵使矩阵更好服务于假设检验,这对生态学家和微生物组研究人员特别有用。因此,Mantel检验被认为克服了一些固有的问题在解释物种与环境的关系(Legendre和Fortin1989)或一般群落和环境之间的关系。一般来说,Mantel的检验中的零假设是这样起始的:样本在因变量的矩阵和另一个解释变量的矩阵之间的距离不是线性相关的我们能问的关键问题就像这样:“样本在预测变量(环境)方面是否相似?而且在因变量(群落)方面也趋于相似?或者“靠近的样品成分也相似吗?””或换句话说,“是不同组或环境中的样本之间不同也在群落组成上也不同 或不相似?检验统计量如下:
其中,z =检验统计量,是Hadamard结果(矩阵),以法国数学家Jacques Hadamard的名字命名。在乘积中,两个维数相同的矩阵产生了另一个矩阵,其中每个元素ij是原始两个矩阵中元素ij的乘积;Yij为相关距离矩阵或压缩向量:Xij为预测因子矩阵或对比矩阵,如果样本在组内取取0,如果样本在不同组内取1。适当的距离矩阵可以是单变量的(例如,“拟杆菌类的相似性丰度”)或多变量的(例如,Bray-Curtis’,Jaccard’s, Sørenson’s相似性指数);n是样本数。
我们可以把Mantel检验的过程分为以下四个主要步骤:
步骤1:计算不同矩阵。
步骤2:计算测试统计量Z。
步骤3:检验显著性。
Mantel测试通过判断一组变量的相似性(或相似性)是否与另一组变量的相似性(或相似性)有关来比较两组不同之处。基本上,它是不相似项之间的相关性。由于距离矩阵的元素不是独立的,且N个样本之间的差异太大(N(N-1)/2),所以不适用正态显著性检验。Mantel开发了渐近检验统计,但在vagen包中,Mantel()函数使用排列检验。正如在PERMANOVA检验中,检验统计量z的p值是通过随机重新排列其中一个输入距离矩阵(第一个不相似矩阵)的行和列来获得的。显著性检验简单地说就是排列Z大于观察到的Z的部分。它是给定Z大于或等于这个值的概率。如果随机化经常产生大于或等于观察到的数据的相关性,那几乎不能证明相关性不同于零。如果这两个距离进行秩转换,Mantel检验与ANOSIM检验相同,类似于秩转换的MRPP检验。
步骤4:计算两个矩阵的相关系数r,确定它们之间的关系强度。标准化Mantel统计量r如下:
标准化的Mantel统计量r被解释为一个相关系数,“效应大小”的衡量标准正如其他类型的相关系数一样(如Pearson的相关系数r)。r的取值范围为−1~+1,接近−1表示强烈的负相关,+1表示强烈的正相关。如果样本间的平均群内距离小于样本间的平均总距离,则r>0;r越大,组间的相关性越强。
然而Mantel测试用于比较两个距离(不同)矩阵。例如A和B,在控制控制矩阵c的效果时,使用部分Mantel测试来估计这两个矩阵之间的相关性。目标是消除虚假相关性。在生态文献中,一个典型的例子是使用部分Mantel检验来比较一个群落距离矩阵和另一个由环境参数导出的距离矩阵,而使用地理距离作为第三个“控制”距离矩阵。在微生物组研究中,第三个矩阵C可以是环境矩阵或根据环境矩阵创建的实验设计矩阵或其他变量,如处理成员或条件。但请记住,环境和从环境参数衍生的设计矩阵在本质上都需要是数值/连续的:也需要是距离(不同)矩阵。如果创建矩阵不是一个距离矩阵(不同),你应该使用一个距离函数来将它转换成距离(不同)矩阵在你使用它作为一个控制矩阵的构造部分Mantel测试
partial Mantel 测试通过两个步骤:首先,进行A和C之间的回归残差构造一个矩阵。A’,以及B和C之间的回归来构造一个残差矩阵。B’;然后比较两个残差矩阵。通过标准Mantel检验。
9.2.2 使用Vegan包做Mantel检验
检验两个群体距离矩阵的相关性
在进行高深度采样时,Bray-Curtis、Jaccard和Sorensen不同指标的相关性通常较高。我们可以对这些矩阵进行Mantel测试。Mantel测试可以使用vegan, ape和ade4包。在这里,我们使用vegan包进行检验。下面给出了一种语法:
mantel(xdis, ydis, method = “pearson”, permutations = 1000)
式中,xdis、ydis为不同矩阵或距离对象;方法是相关法。是一个字符串,被接受为“pearson”、“spearman”或“kendall”:排列是在评估重要性时需要指定的排列的数量。在第七章中,我们在GUniFrac包中使用来自的吸烟者数据集绘制树,并说明排序技术。在本节中,我们再次使用它来阐明Mantel检验。下面的R代码加载包,访问数据并对数据进行子集
> library(GUniFrac)
> data(throat.otu.tab)
> otu_table <-throat.otu.tab
> data(throat.meta)
> data(throat.tree)
> library(dplyr)
> throat_meta <- select(throat.meta, SmokingStatus, Age, Sex, PackYears)
测试Bray-Curtis和Jaccard异同点的Pearson’s积矩相关性Bray-Curtis和Jaccard不同指标的相关性估计如下:
> library(vegan)
> mantel(bray, jaccard,"pearson",permutations=1000)
Mantel statistic based on Pearson's product-moment correlation
Call:
mantel(xdis = bray, ydis = jaccard, method = "pearson", permutations = 1000)
Mantel statistic r: 0.993
Significance: 0.001
Upper quantiles of permutations (null model):
90% 95% 97.5% 99%
0.154 0.201 0.233 0.266
Permutation: free
Number of permutations: 1000
Mantel测试可以这样解释:我们规定permutations= 1000,对Bray-Curtis距离矩阵的行和列进行1000次随机化,然后在零假设下生成相关性分布:Bray-Curtis矩阵中样本间的距离与Jaccard矩阵不是线性相关的。结果表明。在这种情况下,这1000个值中。均小于观测值0.993(即。排列数<观测值的数量= 1000;排列数>观测值的数量=0;排列数=观测值的数量=1).使获得与观察到的值一样大的值的概率小于1/1000,表明p值为0.001。因为偶然产生的大的相关性是如此之小,我们可以得出 Bray-Curtis距离和Jaccard距离差异呈线性增加;换句话说,这两个指标是高度相关的
我们可以绘制Bray-Curtis和 Jaccard 矩阵之间的Pearson相关性如下:
> plot(bray, jaccard, main="Scatter plot of Bray-Curtis index vs. Jaccard
index")
Pearson相关系数r为0.993,p值为0.001。Brav-Curtis和Jaccard矩阵的元素散点图表明,这两种距离/差异呈线性关系,如图9.3所示
测试Bray-Curtis和Serensen异同的斯皮尔曼相关系数我们使用斯皮尔曼方法计算Bray-Curtis和Sorensen不同指标的相关性,如下:
> mantel(bray, Sørensen,"spearman",permutations=1000)
Mantel statistic based on Spearman's rank correlation rho
Call:
mantel(xdis = bray, ydis = Sørensen, method = "spearman", permutations
= 1000)
Mantel statistic r: 0.514
Significance: 0.001
Upper quantiles of permutations (null model):
90% 95% 97.5% 99%
0.132 0.178 0.206 0.241
Permutation: free
Number of permutations: 1000
测试Jaccard 和 Sørensen差异的肯德尔等级相关系数 下面我们用Kendall方法计算Jaccard和Sorensen不同指标的相关性。
> mantel(jaccard,Sørensen,"kendall",permutations=1000)
Mantel statistic based on Kendall's rank correlation tau
Call:
mantel(xdis = jaccard, ydis = Sørensen, method = "kendall", permutations
= 1000)
Mantel statistic r: 0.358
Significance: 0.001
Upper quantiles of permutations (null model):
90% 95% 97.5% 99%
0.0961 0.1285 0.1521 0.1849
Permutation: free
Number of permutations: 1000
9.2.2.2测试群落矩阵和设计矩阵的相关性
在第9.2.2.1节中,在两个群落基质之间进行了Mantel试验。本文选取Bray-Curtis矩阵作为相关距离矩阵,选取元数据中的吸烟情况作为设计矩阵来说明测试。我们将测试来自吸烟者和非吸烟者的样本之间的Bray-Curtis差异是否不同。变量SmokingStatus位于咽喉处。元数据集。下面的R代码提取这个变量并将其转换为距离矩阵。
> library(dplyr)
> group <-select(throat.meta, SmokingStatus)
> group$Status <- with(group, ifelse(SmokingStatus%in%"Smoker", 1, 0))
> group <- group[,-1]
> group_dist <- vegdist(scale(group), "euclid")
以下R代码对Bray-Curtis矩阵(依赖距离矩阵)与吸烟状况(预测因子矩阵)的皮尔逊积矩相关系数进行Mantel检验。
> mantel(group_dist,bray,"pearson",permutations = 1000)
Mantel statistic based on Pearson's product-moment correlation
Call:
mantel(xdis = group_dist, ydis = bray, method = "pearson", permutations
= 1000)
Mantel statistic r: 0.0728
Significance: 0.003
Upper quantiles of permutations (null model):
90% 95% 97.5% 99%
0.0245 0.0336 0.0436 0.0581
Permutation: free
Number of permutations: 1000
9.2.2.3 partial mantel检验两个距离矩阵的相关性控制第3个矩阵
在控制环境距离矩阵的同时,采用Mantel partial test用来对群落距离矩阵和设计距离矩阵进行相关分析(Smouse et al. 1986)。例如,当控制矩阵与年龄、性别和时,可以使用Mantel partial test来确定Bray-Curtis距离(不相似)矩阵与吸烟情况距离矩阵是否存在显著相关性。
假设我们想知道“在控制环境矩阵(预测矩阵:年龄、性别和每年的包装)的同时,有多少Bray-Curtis不同(依赖矩阵)中的可变性可以用吸烟状况(设计矩阵)来解释?”然后,检验统计量通过构造残差矩阵计算出来,A’是吸烟状态和预测矩阵在年龄,性别,每年包的回归分析和一个残差矩阵,B’,是 Bray-Curtis差异和预测矩阵在年龄、性别和每年包的回归分析。两个残差矩阵A’和B’,然后通过标准Mantel测试进行比较。
下面的R代码是咽喉元数据中环境数据集的子集。
> meta <- select(throat.meta, Age,Sex,PackYears)
原始数据集中,性别是一个特征变量称“男人”和“女人”。为了把这个数据集转化成数字化的距离矩阵,我们需要重新编码它成为数字化的值。下面的R代码生成了数字化的性别变量:
> meta$Gender <- with(meta,ifelse(Sex%in%"Male", 1, 0))
> env <-select(meta, Age,Gender,PackYears)
下面的R代码把这个数据集转化成了距离矩阵通过采用vegan包中的vegdist()函数。
> env_dist <- vegdist(scale(env), "euclid")
Mantel partial test采用Pearson方法分析,如下:
> mantel.partial(group_dist,bray,env_dist, method = "pearson", permutations
=1000)
Partial Mantel statistic based on Pearson's product
Call:
mantel.partial(xdis = group_dist, ydis = bray, zdis = env_dist, method
="pearson", permutations = 1000)
Mantel statistic r: 0.068
Significance: 0.008
Upper quantiles of permutations (null model):
90% 95% 97.5% 99%
0.0215 0.0321 0.0438 0.0641
Permutation: free
Number of permutations: 1000
Mantel r统计量为0.068,说明吸烟状况与Bray-Curtis距离(不同)矩阵之间存在相对不强的正相关关系,同时控制了环境矩阵中年龄、性别和每年包数的差异。而当p值为0.008时,说明在a = 0.05时,结果具有统计学意义。