R语言绘制群落物种累积曲线
物种累积曲线(Species accumulation curves,SAC),用于估计特定区域中的物种数量。物种累积曲线反映的是抽样个数对物种多样性的影响,当抽样个数较少时,发现的物种并不全面,并不能表征整个群落结构;随着抽样个数的上升,发现的物种种类数越来越多,也更能表征这个群落结构。这里的“抽样”,既可以指物种个体数量,也可以指观测的样方数量。
本篇带来R语言绘制物种累积曲线的方法。vegan包是生态统计的常用R包,我们通过调用其方法实现。同时使用到其内置数据集BCI,它的每一行代表了一个取样样方,每一列代表了一种物种,交叉区域为各样方中观测到的该物种个体数量。
如上所述,“抽样”既可以指物种个体数量,也可以指观测的样方数量,因此,物种累积曲线常见两种表现形式。
第一种表现形式,横坐标为调查到的个体数量,纵坐标为物种种类数。随着调查到的个体数量逐渐增加,曲线趋近平缓,代表群落中的物种接近全部被观测到;反之表明不饱和,还需继续调查物种。这种类型的曲线,也即前篇所提到的“稀释曲线”,细节本篇不再作更多描述,可参阅前文。
library(vegan)#使用 vegan 自带的数据集 BCI,第一种类型的物种累积曲线,也就是稀释曲线
data(BCI)
#展示 5 个样方的物种累积曲线(稀释曲线)
#详情 ?rarecurve
rarecurve(BCI[1:5,], step = 20, col = c('red', 'green', 'blue', 'orange', 'purple', 'black'))
第二种表现形式,横坐标为样本数量,纵坐标为物种种类数。随着取样样本(所观测的样方)数量逐渐增加,所观测到的物种种类也不断增加。当曲线趋近平缓时,代表群落中的物种接近全部被观测到;反之不饱和,还需继续观测更多的样方。
##使用 vegan 自带的数据集 BCI,第二种类型的物种累积曲线data(BCI)
#函数 specaccum() 可以统计一定数量的采样点的物种数量
#详情 ?specaccum
sp <- specaccum(BCI, method = 'random')
sp
summary(sp)
#作图展示
plot(sp, ci.type = 'poly', col = 'blue', lwd = 2, ci.lty = 0, ci.col = 'lightblue')
boxplot(sp, col = 'yellow', add = TRUE, pch = '+')
mod <- fitspecaccum(sp, model = 'lomolino') #Fit Lomolino model to the exact accumulation
mod <- fitspecaccum(sp, model = 'arrh') #Fit Arrhenius models to all random accumulations
#查看拟合模型
coef(mod)
fitted(mod)
#作图展示
plot(mod, col = 'hotpink')
boxplot(sp, col = 'yellow', border = 'blue', lty = 1, cex = 0.3, add = TRUE)
作图部分到这里就结束了。
下面的内容,主要建立在第二种类型的物种累积曲线的基础上做延伸,有兴趣的话可以继续往下看,对群落研究具有一定的帮助。
如上所述,我们可以根据物种累积曲线拟合回归模型,并据此推断物种数量是否达到了“饱和”。
#BCI 数据集共计 50 个样方#specslope() 可在给定数量的样方中评估物种积累曲线的导数,用于表征物种数量的增加率
#可知数值越小,表明曲线越趋饱和
sp <- specaccum(BCI, method = 'exact')
specslope(sp, at = 5)
specslope(sp, at = 25)
specslope(sp, at = 45)
许多物种在样地集中将始终不可见或未被发现,vegan包中提供了相关的评估这些未被观测到的物种的方法。
#poolaccum() 使用一些流行的方法来估计这些未见物种的数量,并将它们添加至观察到的物种丰富度中#详情 ?poolaccum
pool <- poolaccum(BCI)
summary(pool, display = 'chao')
plot(pool)
#即计算 Chao1、ACE 指数,反映这些未见物种的数量
#详情 ?estimateR
estimateR(BCI)
关于这里的Chao1、ACE指数的概念可参考前文。