本文主要介绍Mantel test及衍生的MRM方法。
—Let's begin—
1Simple Mantel test
Mantel test计算的是两个不相似矩阵之间的相关性。生态学上的意义是验证环境相似的地方是否物种也相似;环境不相似的地方物种是否不相似。 计算方法为Ecodist包中mantel函数。输入的两个矩阵分别为群落OTU及环境因子/地理距离。 一般群落数据使用Bray-Curtis不相似性。环境因子/地理距离用欧氏距离(Euclidean distances)。
代码语言:javascript复制> library("ecodist")
> set.seed(9876)
> sampleloc <- 1:20
> species <- matrix(rnorm(100), nrow = 20, ncol = 5)
> sampleloc.edist <- distance(sampleloc, "euclidean")
> species.bcdist <- distance(species, "bray-curtis")
> mantel(species.bcdist ~ sampleloc.edist)
mantelr pval1 pval2 pval3 llim.2.5% ulim.97.5%
0.01770804 0.45900000 0.54200000 0.84100000 -0.08224247 0.03649103
Mantelr为r值。pval1评估零模型(r <= 0)的显著性。本例中pval1不显著,说明地理距离上相近的样本群落组成并不相似。Pval2和pval3分别评估r >= 0和r = 0的显著性。
需要注意的是,Mantel test评估的是物种组成或环境因子变化的线性空间结构。(MRM的一大扩展是可以评估非线性的关系)
若距离矩阵是有偏的(skewed),则提前对样本进行排序(ranking)是很有必要的。模式研究表明排序过的样本进行mantel test检验的统计性强于未排序的检验。排序可以使一些非线性的关系线性化, 单调性是比线性更宽松的要求。排序后r稍微高了一些,但是还是不显著。
代码语言:javascript复制> mantel(species.bcdist ~ sampleloc.edist, mrank = TRUE)
mantelr pval1 pval2 pval3 llim.2.5% ulim.97.5%
0.03808221 0.33300000 0.66800000 0.64300000 -0.01192652 0.08266478
Permutation tests仅在多个不相似性矩阵之间独立时有效。做法就是矩阵的行和列进行随机组合。Permutation的次数一直存在争议,10000或1000次都可以。当然越多结果准确性越高。这一步非常耗时,一般1000次足矣。
代码语言:javascript复制>mantel(species.bcdist ~ sampleloc.edist, nperm=1000) ##默认为1000
mantelr pval1 pval2 pval3 llim.2.5% ulim.97.5%
0.01770804 0.47100000 0.53000000 0.85600000 -0.08014799 0.03508382
Mantel test原理。A为原始距离矩阵,B为A转换为向量进行后续分析,并计算不同向量之间的相关系数r值。C为行和列同时置换对r进行统计检验。
2Partial Mantel test
排除因子C的影响,A和B做partial correlation,即 mantel(A ~ B C) 表示排除的因子
代码语言:javascript复制> soil <- runif(20)
> soil.edist <- distance(soil, "euclidean")
> mantel(species.bcdist ~ sampleloc.edist soil.edist)
mantelr pval1 pval2 pval3 llim.2.5% ulim.97.5%
0.01709945 0.47400000 0.52700000 0.83800000 -0.07641251 0.03458313
3multiple regression on distance matrices (MRM)
MRM是partial Mantel的延伸,其优势在于: (1) MRM可以使用多项式、非线性或非参数回归方法,如广义相加模型。距离矩阵展开成向量后,对MRM模型进行拟合的计算与对原始数据进行多元回归的计算没有区别。唯一的计算差异在于显著性检验,它是通过对响应距离矩阵的对象进行排列来执行的。 (2) MRM扩展解释矩阵的数量,允许每个环境变量用它自己的距离矩阵表示。这提供了一种改进的物种-环境相关性(因为重要变量的影响不会被不重要的变量所稀释),以及一种方便的方法来确定每个环境因素的统计显著性和相对重要性。 我理解的响应矩阵(response distance matrix)即OTU,解释矩阵(explanatory matrices)即环境因子。
一定注意MRM的 和mantel不同。mantel中是排除后面因子的影响做partial,而MRM则表示增加另外一个解释矩阵。
代码语言:javascript复制library(ecodist)
# Usage
#
# MRM(formula = formula(data), data = sys.parent(), nperm = 1000, method = "linear",mrank = FALSE)
##nperm #置换次数
##mrank #FALSE (the default option) 使用Pearson correlations;TRUE使用Spearman correlation
##method #linear (the default)使用uses multiple regression analysis;"logistic", performs logistic regression with appropriate permutation testing.
#注意:置换检验使用pseudo-t test来评价显著性, 而不是直接使用回归系数。
#Examples
>data(graze)
# 一定注意 和mantel的意义不同!不表示排除这个因子的影响,而是多个因子的共同作用
>MRM(dist(LOAR10) ~ dist(sitelocation) dist(forestpct), data=graze, nperm=100)
$coef
dist(LOAR10) pval
Int 6.9372046 0.97
dist(sitelocation) -0.4840631 0.35
dist(forestpct) 0.1456083 0.01
$r.squared
R2 pval
0.04927212 0.02000000
$F.test
F F.pval
31.66549 0.02000
Reference
Goslee SC, Urban DL(2007) The ecodist package for dissimilarity-based analysis of ecological data.J Stat Softw 22:1-19
Lichstein JW (2007) Multiple regression on distance matrices: a multivariatespatial analysis tool. Plant Ecol 188:117-131