谱系和功能群落结构
上述多样性的计算实际上是观察 (调查) 到的群落多样性格局,通过计算群落谱系和功能的标准化效应值 (Standardized effect size,SES),可以得到谱系和功能的群落结构 (community structure) 的聚集或发散格局。标准效应值是通过观察 (调查) 值减去随机 (零模型) 得到的平均值的差,再除以随机得到的标椎差,公式如下:
SES = (Obs - Meannull)/SDnull
其中Obs是实际观察到的谱系 (或功能) 多样性,Mean
null是随机多次 (通常为999次) 后得到的谱系 (或功能) 多样性的平均值,SD
null是随机多次后得到的谱系 (或功能) 多样性的标准差。可以通过picante包中的ses.mpd和ses.mntd函数实现。零模型有很多种选择,每种零模型都对应不同的前提假设,详见 (Gotelli, 2000; Swenson, 2014),本研究选择使用“taxa.lables”零模型。该零模型的作用是将谱系树 (或功能树) 上物种的名字 (tip.label) 随机化,在保持群落数据的结构不变的情况下,进而模拟物种的谱系或功能随机分配的情况 (Swenson, 2014),然后再使用物种名随机后的谱系树 (或功能树) 重新计算相应的多样性指数。
SES值小于0表示群落内物种比预期的亲缘 (或功能) 关系更紧密,即群落聚集 (community clustering);相反地,SES值大于0表示群落内的物种比预期的亲缘 (或功能) 关系更远,即群落发散 (community overdispersion);如果SES等于0,则表示群落的谱系或功能多样性与零模型无差别,群落呈现随机格局。如果SES值小于–1.96,那么表示显著的群落聚集,如果SES值大于1.96,那么群落存在显著的发散格局 (Webb
et al., 2002)。接下来,我们继续使用千岛湖33个岛屿上蚂蚁群落的数据进行演示:
#谱系群落结构,即SES.MPD和SES.MNTD
set.seed(10086) #在每次使用零模型前都设置一个seed (可以是任意数字),保证之后重复运行的结果相同。
result_mpd <- ses.mpd(ant_com,cophenetic(ant_tree), null.model = "taxa.labels", abundance.weighted = FALSE, runs = 100) #通常使用999次,这里为节省时间设置为100次
set.seed(10086)
result_mntd <- ses.mntd(ant_com,cophenetic(ant_tree), null.model = "taxa.labels", abundance.weighted = FALSE, runs = 100)
head(result_mpd)
结果中,ntaxa为每个岛屿的物种数,mod.obs为MPD的实际值,mpd.rand.mean为零模型得到的MPD的平均值,mpd.rand.sd为零模型得到的MPD的标准差,mpd.obs.rank为实际值在零模型结果中的分布位置,mpd.obs.z为SES值 (即SES.MPD),mpd.obs.p为实际值在零模型结果中的分位数 (即P值,计算方式为mpd.obs.rank / runs + 1),runs为零模型随机次数。
#可以尝试使用上述的公式计算SES值,会得到相同的结果。
(result_mpd$mpd.obs-result_mpd$mpd.rand.mean)/result_mpd$mpd.rand.sd
同样的,我们将谱系树更换为功能树,可以计算功能群落结构:
#功能群落结构,即SES.FD_MPD和SES.FD_MNTD
set.seed(10086)
result_fd_mpd <- ses.mpd(ant_com,cophenetic(ant_tree), null.model = "taxa.labels", abundance.weighted = FALSE, runs = 100)
set.seed(10086)
result_fd_mntd <- ses.mntd(ant_com,cophenetic(ant_tree), null.model = "taxa.labels", abundance.weighted = FALSE, runs = 100)