数量生态学:R语言的应用 第四章 聚类分析6—指示物种
今天我们来学习第四章聚类分析中指示物种的内容,本部分内容主要有两个部分:
- IndVal:指示物种值
- 相关类型的指数
1. 概念
首先我们来大致了解一下:
在应用生态学中,生态保护和管理专家,经常需要寻找快速评估或者预测某一区域的环境类型,以评估活的生物群落的类型(例如植被类型)或者监测生态环境因子(例如年平均温)的时间变化,在这种情况下,在一组样方中寻找指示种或特征种是一个特别重要的问题。
在基础生态学中,我们经常会寻找物种在不同样方组(生境)的偏好,去了解这些物种本身的生活习性,或增加对不同样方组来代表的生境的理解,这些途径经常具有互补性,用不同的方法来解决。
指示值指数基于特异性(当该物种只存在目标生境,而不存在于其他生境的时候数值最高)和保真度(物种在目标生境中的所有样方都出现的时候数值最高)。高指示值是高特异性和高保真度的组合。
相关指数测量一个物种在样方内是否存在或多度值的样向量与样方在样方组中归属的向量(0-1数据)之间的Pearson相关系数。
指示值指数在评估物种能否作为指示物种等方面更有用(例如野外群落类型的确定或生态检测);而相关指数用于决定物种生境偏好是否更有用。
2. IndVal:指示物种
IndVal指数是一个物种在一个样方组内平均多度和出现概率的组合。一个物种指示值高表示该物种在该样方组内平均多度大于其他样方组(特异性),并且该物种在该组内绝大部分样方都存在(均匀度)。
使用IndVal方法寻找的指示种与分组类型具有充分必要的关系,即如果找到该物种,就可以找到该类型。如果找到该类型,就可以找到该物种。
样方组的定义有很多种形式,最简单的是基于物种数据的样方聚类结果,这时指示种就是聚类组中最显著的最具有代表性的成员。但是,用这种方式获得的指示物种无法进行统计检验,因为分组和指数值的计算并不是来自不同的独立数据。另一种方法先基于非物种数据(例如环境数据)对样方进行聚类,然后再找指示物种,从概念或统计意义上讲更合理,因为分组和指数值的计算来自不同的独立的数据(环境数据和物种数据)。此时,指示物种才是真正具有指示意义的指示种,即该物种与该样方组所在的生态环境关系最为密切,指示值的后验统计显著性(即观察值和随机制的比较)可以通过置换检验进行评估。
定义的指示值可以用labdsv包内的indval( )函数进行计算。
接下来用鱼类数据来演示indval( )函数。例如,寻找与某个环境变量相关的指示种时我们可以考虑 dfs(离源头距离)作为代表河流梯度的变量,通过dfs变量将样方分为连续的组,然后寻找这些样方组的指示种。
# 依据dfs(离源头距离)环境变量将样方分4组
dfs.D1 <- dist(data.frame(dfs = env[, 1],
row.names = rownames(env)))
dfsD1.kmeans <- kmeans(dfs.D1, centers = 4, nstart = 100)
# 聚类簇的分隔和编号
dfsD1.kmeans$cluster
# 这个编号具有随机性,为了避免混淆,构建一个连续的编号给这个分组
#向量
grps <- rep(1:4, c(8, 10, 6, 5))
# 这个样方分组的指示物种
(iva <- indval(spe, grps, numitr = 10000))
注意:
在输出表中,聚类簇编号不一定遵循有意义的顺序。K-均值划分以数字的形式产生任意组标签。indval()输出的列标题是提供给他的列标题(数字),但是这些列已根据数值重新排序。因此这里这个组的排序不按照沿河流向顺序,这就是为什么手动操作构造了一个具有连续组号的对象的原因。
输出结果包括以下表格:
relfrq =物种在每个组的相对频度,即出现在这一组样方数的比例
relabu =物种在组间的相对多度(在目标处的多度/总多度)
indval =每个物种的指示值
maxcls =每个物种最高指示值的聚类簇(组别)
indcls =每个物种在最高指示值的聚类簇的指示值
pval =每一个物种在最高指示值的聚类簇的指示值的显著性
多重比较P值较正
pval.adj <- p.adjust(iva$pval)
接下来将从indval表格内提取出来含有最高指示值的组合指示值,以及置换检验p值的总额度
# 显著指示物种表格
gr <- iva$maxcls[pval.adj <= 0.05]
iv <- iva$indcls[pval.adj <= 0.05]
pv <- iva$pval[pval.adj <= 0.05]
fr <- apply(spe > 0, 2, sum)[pval.adj <= 0.05]
fidg <- data.frame(
group = gr,
indval = iv,
pvalue = pv,
freq = fr
)
fidg <- fidg[order(fidg$group, -fidg$indval), ]
fidg
# 将结果输出为CSV文件
write.csv(fidg, "IndVal-dfs.csv")
注意:这里确定的指示物种可以与上一节物种集合的成员并不重叠。指标物种是预先通过环境因子来对样方进行分组后获得,而物种集合并没有首先通过环境因子来预设组别。
indicspecies程序包可以计算各种不同的指示物种指数,其中也包括Indval(确切的说是Indval指数的平方根)。indicspecies包有两个值提及的特征:通过自助法获得指示值的置信区间(通过设定strassoc()函数内的 nbootcans参数获得)和通过不断尝试所有分类组组合情况依次选择合适的指示物种(函数multipatt()),这里我们首先使用函数multipatt()计算与上面相同的分析,并利用将两组合并的可能性优势。
library(indicspecies)
# 用multipatt{indicspecies} 函数计算Indval去寻找组合组的
# 指示物种
(iva2 <- multipatt(
spe,
grps,
max.order = 2,
control = how(nperm = 999)
))
在函数multipatt()中,默认指示值是func=IndVal.g,这里“.g”表示针对不相等的组大小进行校正。这个与原始的IndVal吻合,因此值得推荐。
输出对象包含以下几个矩阵:
comb=将样方进行所有可能的组合的分组到分析要求次数;
str=“连接强度”,即所选指数的值;
A=如果函数是IndVal指数,则为其A组分的值(特异性);否则为NULL;
B=如果函数是IndVal指数,则为其B组分的值(保真度);否则为NULL;
sign=最佳格局,即组或组的组合统计量最高的地方,以及该结果的置换检验的结果。这里并没有进行多次检验的p值校正。
应该针对多重复验证进行p值校正:
# 多重复验证进行p值校正
(pval.adj2 <- p.adjust(iva2$sign$p.value))
#也可以用summary()函数进行简单的输出
summary(iva2, indvalcomp = TRUE)
Summary 结果显示具有显著指标物种的组或组的组合。在每个组中它显示物种的IndVal值(stat)和置换检验的p值。如果使用参数indvalcomp=TRUE,IndVal指数的A组分(特异性)和B组分(保真度)也一块展示。
第二次分析的结果与以前的分析略有不同,因为对于某些物种,合成组的IndVal可能比单独组高。例如,褐鳟(satr)的最高IndVal出现在组1+2,而如果进行没有组合组分析中,则在第1组中指示值最高。
下一个分析使用函数strassoc()计算IndVal置信区间,选代次数由参数nboot设置
# 通过自助法获得指示值置信区间
(iva2.boot <- strassoc(spe, grps, func = "IndVal.g", nboot = 1000))
输出对象包含三个元素的列表:指标值(lowerCI)和上限($upperCI)。但是每次结果并不相同,因为他们来自自助抽样法。
在解释置信区间时,请记住任何指示值的置信区间下限等于0可以被认为是不显著的,因为该值可能也是本身大于0的。例如,在第3组和第4组中,欧亚鲦鱼(Phph)IndVal值分别为0.12和0.072,但置信区间下限为0。此外,如果两个值的置信区间重叠则被认为没有显著差异。例如,在组1中,褐鲜(Satr)和欧亚鲦鱼(Phph)的置信区间分别为[0.495;0.804]和[0.418;0715]。因此,这两个物种真正的IndVal值处于共同范围即[0.495;0.715],但没有办法确定一个值大于另外一个值。
2.相关类型指数
设计相关指数以帮助识别物种在一组样方中的生态偏好。
如果以此为目的,这种方法可能比指标值更有用,因为前者(相关型指数)可以允许检验负的偏好。但要注意的是,这个指数与物种在某组样方中的缺失有关。但引起物种在样方中缺失的原因很多,因此在没有明确的生态解释缺失原因,应该谨慎使用该指数(见第3章)。在植物生态学中,具有高生态偏好的物种通常被称为明确代表一组样方生态条件的“诊断”物种,在野外调查中可用于识别植被类型。
用于有-无物种数据的最简单的相关类型指数称为PearsonΦ(phi)关联系数。它处理两个二元向量之间的相关性。对于所有样方,一个向量给出了物种的存在与否,另一个向量表明了样方是否属于某一给定组(属于为1,不属于为0)。如果是定量(多度)数据,phi系数称为点双系列相关系数,而用多度取代了原先物种有-无数据。
在函数strassoc()中,默认指标是phi系数,由func=“r”设置,但是如果设定为“r.g”,可用于大小不等组的校正。推荐后一种选择 func=r.g。
# Phi correlation index
(iva.phi <- multipatt(
spe,
grps,
func = "r.g",
max.order = 2,
control = how(nperm = 999)
))
summary(iva.phi)
该分析的结果与IndVal分析的结果非常相似。注意统计检验结果突出显示最高的正phi值(参见summary结果)。因此,两种方法(物种指标值和相关)都是彰显物种与被选组之间最强的关联性。但是,显示可能的环境条件所有可以识别的phi值可能会很有趣。
round(iva.phi$str, 3)
例如,欧鲌鱼(Ala1)显示出组“1+2”非常强烈的负相关(φ=-0.92),组“3+4”是最强的正关联(φ=0.92)刚好成镜像。的确,欧鲌鱼在组1+2所有样方都没有,而在组3+4所有的样方都存在。显然,欧鲌鱼喜欢河流的下游区域,而极其不喜欢上游区域。。
也可以通过自助法计算phi的置信区间,使用与计算IndVal系数置信区间相同的strassoc()函数:
(iva.phi.boot <- strassoc(spe, grps, func = "r.g", nboot = 1000))
由于phi值可以是负数或正数,因此您可以通过自助法检验(bootstrap test)获得phi值的显著性:
如果置信区间上下限具有相同的符号(即,CI不包含0)表示显著。这个置换检验也可以求出负的phi值置信区间。例如,大头鱼(Cogo)在组1中不存在,CI范围是[-0.261,-0.313]。
好了,第四章 聚类分析6-指示物种主要就是这些,数据有点多,得好好分析可以提炼出很多有价值的信息,好好思考。下一期将给大家带来 聚类分析7—多元回归树(MRT)这个很有意思,敬请期待!
如有不足或错误之处,请批评指正。
有什么不明白的也欢迎留言讨论。
欢迎关注同名wx公众号
往期内容:
《数量生态学:R语言的应用》第二版第三章-关联测度与矩阵------Q模式
《数量生态学——R语言的应用》第二版阅读笔记--绪论和第二章(一部分)
感谢你的阅读!!!你的点赞关注转发是对我最大的鼓励。