2019-05-01 修订
1 前言
由于进化以及适应性的差异,很多物种对生境有一定的偏好。在亚热带森林生态系统中,不同生境中可能生长着不同的物种,如山脊上常有杜鹃花属(Rhododendron)、南烛属(Lyonia)植物生长; 而阴湿的沟谷中,则常见杨梅叶蚊母树(Distylium myricoides)、山茶属(Camellia)植物、茜草科植物等;在经常受干扰的地段,常会有马尾松(Pinus massoniana)、枫香(Liquidambar formosana)、木荷(Schima superba)等较为喜光的树种。
物种对生境的偏好,需要生境关联检验进行分析。假设某样地的生境分为: A.沟谷,B.山坡,C. 山脊三种类型,要检验一种目标植物是否倾向于在C山脊上生长,却不能直接用卡方检验 (Chi Square Test)。这是因为卡方检验的前提是物种的个体之间是完全独立的,换句话说说,就是个体在群落中是完全随机分布的,个体与个体之间没有什么联系。但这个假设是没有办法满足的:由于传播限制等因素的影响, 不同个体在空间上往往表现出一定的聚集性。例如,幼苗和小树往往只能在母树附近生长。如果此时仍然按照卡方检验去判断物种是否对某种生境具有偏好, 就容易高估物种对生境的关联。从这个角度上看,过去大部分探讨物种和生境关联的研究,都需要用新方法检验。
Harms, K. E等人在2001年的一篇论文里提出了Torus translation的方法,以检验物种和生境的关联,本文就要介绍这个检验。虽然该方法已经提出十几年了,但在大样地物种分布格局的研究中仍然十分重要。
Torus translation其实是一种随机化方法,但是是有条件的随机化。Torus是拓扑学专业词汇,中文为“环面”,torus translation是指在随机化过程中,所研究的样方位置,好像在环面上滚动一样,保存样方之间的空间关系。
Torus translation大体过程如下:
假设现在有一块320mX500m的森林样地,如果以20m边长的样方为研究尺度,那么就有400个边长为20m的样方。每一个20m样方的生境已经按照地形划分为A、B、C、D四种类型。现在要研究某个种是否与生境存在关联,也就是说,这个种的个体数是否在某种生境中出现的更多,而在另外一种生境中出现地更少。
首先,计算目标种在每种生境中的个体数,同时计算样地中所有种在每种生境中的个体数,两者相除,得到目标种在每种生境中的实际相对多度(或者翻译为相对密度)。
现在,让每个样方中目标种的个体数固定,而生境类型按照行或者列,每次增加20m。如果生境的样方超过了样地的坐标范围,则放在最前面一排,或者最前面一列,以此类推。在这个过程中,任何一个样方在任意变换中,除了一条或者两条边以外,和其他周围样方的相对关系都不改变,从而最大限度上保留了该物种所有个体在空间上的聚集程度。 经过这样的位置变换之后,重新计算目标种在每种生境中的个体数,就可以计算出在该次torus translation格局下,目标种在每种生境中的相对多度。
Torus translation可以进行多少次? 举例来说,320mX500m的样方,以20m为尺度,可以进行399次torus translation。不过真实的生境分布,还可以衍生出以下三种情况:横轴相反的镜像 (X mirror image), 纵轴相反的镜像 (180° rotation of mirror image),横纵轴同时反向(相当于旋转180度, 180° rotation)。每种情况都可以再进行一套完整的torus translation。 这样一来, 对于320mX500m的样地,就有(400*4 - 1), 即1599种torus translation。每一次torus translation, 针对每一种生境,都可以比较物种实际相对多度相比基于torus translation转换以后获得的1599个相对多度,再基于95%置信区间做出进一步判断。
在某一种生境中,可以把这1599个基于torus translation的计算出来的相对多度按照从高到低排序。如果实际观测值小于torus translation 2.5%分位数,也就是排名在40位之前,那么我们就在alpha = 0.05的显著性水平断定目标物种不喜欢这种生境, 或者说排斥这种生境。如果实际观测值大于torus translation 97.5%分位数,也就是排名在1559位之后,那么我们就能在alpha = 0.05的显著性水平断定目标物种偏好这种生境。如果该物种的相对多度位于torus translation 这1599个值的95%置信区间中,就可以认为物种对这种生境没有什么特别排斥或者偏好,换言之,是随机的。
当然,如果物种的个体数比较少,经过torus translation,或者有时候某种生境的面积很少,就会出现在某种生境中,能够比较的相对多度数量很少的情况,此时permutation test的检验能力可能会不足。因此,一般来说,torus translation test都需要物种的个体数比较多。如Kyle Harms等人的研究中, 就只选用了多过50个体的种来检验。
torus translation 检验的本质, 是基于条件控制下的随机排列来计算显著性水平的方法。 正是对样方之间相对空间关系的严格控制,才保证零假设不是完全随机。如果让生境在样方中完全随机排列,所得结果将与卡方检验相差无几。
torus translation的算法虽然比较简单,但是直接编写函数,对于R初学者仍然比较困难。虽然生态学家Kyle E. Harms在他的个人网站也公布了相应的函数和相关数据 (https://sites01.lsu.edu/faculty/kharms/wp-content/uploads/sites/23/2014/05/R_TorusTranslationTest_HarmsK_011911_For_txt_Trees.doc ),但是从数据格式上看,这个函数需要一定的操作技巧。同时,由于函数一直没有整合到程序包中,R初学者在使用时也有一定困难。
前不久,CTFS下辖的ForestGEO森林监测网络重新整理了这些函数,将样地数据分析相关的重要函数整合到一系列程序包中,其中fgeo.habitat程序包( https://github.com/forestgeo) )就可以进行torus translation检验,使用起来也较为方便。
下面的例子是fgeo.habitat程序包tt_test函数的示例代码。笔者修改了该示例代码,增加了绘图部分,希望结果torus translation能更直观, 以方便理解。示例代码之后,是tt_test和torusonesp.all函数的详细注释。为了格式统一,笔者对源代码进行了一些调整,如参数中的逻辑变量,F,T统一改为 FALSE,TRUE; if条件判断中, x,y条件的顺序调整为一致;if函数后仅有一行命令的,也增加了花括号等。
由于本人水平有限,错误之处在所难免,敬请读者批评指正。
2 R代码
2.1 导入程序包
1 | library(fgeo.habitat)library(fgeo.data) |
2.3 物种分布图
1 | # 筛选出胸径10以上的树 |
2.4 三种变换
1 | 有三种情况, 是没有在循环中考虑的 |
2.4.2 Y-flip
1 | newx <- habitat$gx |
2.4.3 180度旋转
1 | newx <- -(habitat$gx - max(habitat$gx)) |
2.5 Torus translation 核心算法
1 | ### 变换样方原点的坐标, 如超出样地横纵坐标x或者y的最大值, 就减样地样地x或者y的最大值。 |
2.6 绘制经过Torus Translation随机化之后的生境分布图
1 | ### ### 这里从400种Torus Translation随机化中,随机抽出10个查看 |
2.7 tt_test函数实例
1 | head(census) |
3 函数注释
3.1 tt_test函数注解
1 | ## check_tt 函数用于检查 |
3.2 torusonesp.all函数注解
1 |
|
4 参考文献:
Harms, K. E., Condit, R., Hubbell, S. P., & Foster, R. B. (2001). Habitat associations of trees and shrubs in a 50-ha Neotropical forest plot. Journal of Ecology, 89(6), 947–959.
Mauro Lepore (NA). fgeo.habitat: Analize Soils and Tree-Habitat Data. R package version 0.0.0.9006. https://github.com/forestgeo/fgeo.habitat