新浪博客

[转载]R软件包vegan教程 2.2群落差异

2014-07-26 15:05阅读:

经典

原文作者:mateco

2.2 群落差异(Community dissimilarities

非度量多维度变换是排序的好方法,因为它能使用具有生态学意义的方法度量群落差异。好的差异指标沿环境梯度有好的排列顺序关系。NMDS只是用排列信息,并用非线性的方法把排列在序列空间中以图示的形式显示出来,因此可以用它处理物种的、各种形式的非线性响应,有效和稳健地找出潜在的梯度。

最自然的差异测度是欧氏距离,它是特征向量排序的内在方法。它是物种空间距离。物种空间指每个物种都是一个与其它所有物种正交的轴,样地是多维度超空间中的点。但是欧氏距离是一种基于差异的平方的距离,受到单一的巨大差异的控制。大多数具有生态意义的差异是马氏(Manhattan)类型的,它不使用平方项。成比例是良好差异指数的另一个性质:如果两个群落没有共有种,它们差异取最大值 1。按欧氏距离和马氏距离计算总丰富度结果会不同,即便两个群落没有共有种。

在vegan程序包里,函数 vegdist 使用Bray-Curtis,Jaccard,和
Kulczyński 指数。这些都是马氏类型,都只用第一顺序(use only first order terms(sums and differences)),并且都使用相对值,当没有共有种时取得最大值,1。vegdist 是标准R函数 dist 的替代,都可用于分析差异。

有很多差异指数令人困惑,同样的指数写成不同样式的方程是原因之一,从Manhattan公式可见一斑。命名混杂是另一个让人困惑的原因:函数vegdist使用的是不太严谨的口语化命名;vegan里默认的是Bray(或者Bray-Curtis)指数,但是也许该称其为Steinhaus指数。另一方面,在过去,它的正确命名被认为应是Czekanowski指数(现在认为是另一个指数),还被称为Sørensen指数(拼写常被搞错)。严格来说,Jac
card指数是二义变量(binary),数值变量的在vegan里应该称为Ružička指数,但是在vegan里没有做出区分。

这些公式在探究梯度方面表现良好。补充一句,vegdist函数中的指数应满足其它准则。Morisita, Horn-Morisita, Raup-Cric, Binomial and Mountford 指数应具有比较不同大小的样本单元的能力。Euclidean, Canberra 和 Gower指数应具有更好的理论特性。

函数 metaMDS 默认使用Bray-Curtis指数,这是个不错的选择。Jaccard(Ružička)指数的等级排序相同,但度量特性更好,可能是首选。vegan里的rankindex函数可用于沿已知梯度对群落做最好的区分,它默认使用秩相关关系进行分析。

以下实例使用了数据集varechem里的全部环境变量,但经过了方差单位化的标准化(but standardizes these to unit variance)。

[转载]R软件包vegan教程 <wbr>2.2群落差异
它们非线性相关,但等级顺序相同,而且秩相关系数也相同。通常情况下,推荐的三种指数几乎是等价的。

基于实用性考虑,作者强调的是上述指数揭示目标环境梯度的能力,很多教科书强调指数的度量属性。对很多方法来说是重要的,但NMDS则不然,因为NMDS仅用到了等级顺序信息。
简单说来,所谓的度量属性是指:⑴ 如果两个样地相同,它们的距离为零;⑵ 如果两个样地不同,它们的距离远大于零;⑶ 距离是对称的;⑷ 两样地简单最短距离是直线,且不能经由其它样地而增大。这对任何自然条件都适合,但不是所有的差异都满足。事实上,本文所讨论过的各种差异指数,只有欧氏距离,可能也包括Jaccard指数满足所有条件,是度量指标。其它差异指数满足前三个条件,属半度量指标。

下面给出了一些公式:
[转载]R软件包vegan教程 <wbr>2.2群落差异

某学院提出我们应使用度量指标,使用欧氏距离是最自然而然的。不足是没有固定的限制,此外就差异而言它不是一成不变的,两个没有共有种的样地甚至看起来会比两个有共有种的样地更相似。可以通过数据标准化来克服这些不足。基于求平方的欧氏距离,自然的变形方法是等平方和的样地(数据)标准化,或者用decostand函数进行向量范数vector norm)的标准化。

dis <- vegdist(decostand(varespec, 'norm'), 'euclid')

以上命令赋值为弦距离,当两个样地没有共有种时弦距离取最大值。另一种受推荐的是Hellinger距离,它基于方根值进行样地数据标准化,实现总和单位化(Another recommended alternative is Hellinger distance which is based on square roots of sites standardized to unit total)。

dis <- vegdist(decostand(varespec, 'hell'), 'euclidean')

如果最小的非零丰富度和最大的丰富度之间的差异巨大,我们希望减小这种差异,一般情况下,方根转化足以平衡之。通常经Wisconsin双重标准化(Wisconsin double standardization)可以提高差异指标的梯度探查能力,使用vegan里的 wisconsin 命令即可实现之。这里先把所有物种除以最大值,然后标准化成单位总和。标准化之后,很多指数在等级顺序上变成相同的,NMDS分析结果也应相等。

tmp <- wisconsin(sqrt(varespec))
dis <- vegdist(tmp)
vare.mds0 <- monoMDS(dis)


不限于只使用vegan里的vegdistdist 也行。其它兼容的函数有dsvdis(labdsv package),daisy(cluster package),distance(analogue package),以及vegan里求beta多样性指数的betadiver函数。函数betadiver定义的更多的是binary差异指数。

而且,vegan里还有 designdist 函数,它允许自定义差异指标,使用所定义的 ABJ,或者使用binary数据,2×2列联表,表中a指样地共有种数,bc指仅出现在其中一个样地的物种数。大多数已发表的差异指数都可以用designdist来定义。但是,更方便、更安全的是使用封装好的现有函数,因为写方程时极易犯错误。

d <- vegdist(varespec, 'bray', binary = TRUE)
d <- designdist(varespec, '(A+B-2*J)/(A+B)')
d <- designdist(varespec, '(b+c)/(2*a+b+c)', abcd=TRUE)


上面三个命令行定义的都是 Sørensen 指数,其中共有种的数量被对比样地的平均丰富度除。

############################################################
下面是一些定义:
[转载]R软件包vegan教程 <wbr>2.2群落差异
[转载]R软件包vegan教程 <wbr>2.2群落差异


我的更多文章

下载客户端阅读体验更佳

APP专享