R包cocorresp的协对应分析(CoCA)
CoCA有两种类型,对称模式的CoCA和非对称模式的CoCA。
对称模式的CoCA中,两个物种丰度矩阵之间无解释和被解释的关系,二者地位等同。结果用于衡量两矩阵间的共同结构,或者说某种类型的相关。
非对称模式的CoCA中,采用了更为直接的回归模型,其中一个矩阵扮演响应角色,另一个矩阵扮演预测角色。在这种模式下,一组物种数据用于预测另一组。
本篇简介R包cocorresp的CoCA方法,包含对称和非对称模式的CoCA。
数据集
cocorresp包的内置数据集beetles、plants,记录了30个地点的甲虫和维管植物物种丰度的观测结果,包含126种甲虫和231种维管植物类群。
library(cocorresp)#数据集。详情 ?beetles、?plants
data(beetles)
data(plants)
#为了使甲虫数据集更加均一并具有稳定的方差,进行对数转换
beetles <- log(beetles + 1)
接下来使用CoCA,推测甲虫类群和植物类群的相互关系。
对称模式的CoCA
cocorresp中,CoCA通过coca()函数执行。
对称模式的CoCA意在确立两数据集之间的某种相关性,表征共同结构。
##对称 CoCA,详情 ?coca#直接输入两数据矩阵,method = 'symmetric' 意为执行对称 CoCA,此时 y 和 x 的顺序无关紧要
bp.sym <- coca(y = beetles, x = plants, method = 'symmetric')
#或者通过公式指定变量,这里“~.”代表使用 plants 全部的物种变量
bp.sym <- coca(beetles ~ ., data = plants, method = 'symmetric')
bp.sym
summary(bp.sym)
结果中,我们通常期望CoCA轴的“Explained”尽可能与“Total”相当,且较少的CoCA轴能够承载绝大部分的特征值。
#names(bp.sym)
bp.sym$scores$site$X #数据集 X 的对象在 CoCA 轴上的得分(坐标)
bp.sym$scores$species$X #据集 X 的变量在 CoCA 轴上的得分(坐标)
bp.sym$scores$site$Y #数据集 Y 的对象在 CoCA 轴上的得分(坐标)
bp.sym$scores$species$Y #据集 Y 的变量在 CoCA 轴上的得分(坐标)
bp.sym$lambda #各 CoCA 轴的特征值
screeplot(bp.sym)
corAxis(bp.sym)
上述相关指的两数据集整体的相关性。若对于单个变量间的关系,可通过排序图评估。
绘制包含对象和变量的双序图,观测两个数据集中的对象和变量在CoCA协惯量轴中的投影位置。
#绘制双序图,观测前两轴中,两个数据集的对象(样方)和变量(物种)关系#y1 表示数据集 Y(本示例为 beetles),y2 表示数据集 X(本示例为 plants)
layout(matrix(1:2, ncol = 2))
biplot(bp.sym, which = 'y1', main = 'Beetles', type = 'text', choices = 1:2)
biplot(bp.sym, which = 'y2', main = 'Plants', type = 'text', choices = 1:2)
结合两图,若某甲虫物种和某植物物种均在靠近同一样方的位置出现,则表明它们倾向于“共存”,即正相关关系。
非对称模式的CoCA
在非对称模式的CoCA中,基于某种回归模型,通过一个矩阵对另一矩阵建模,意在通过一个矩阵的结构推断另一矩阵的结构。
##非对称 CoCA,详情 ?coca#直接输入两数据矩阵,method = 'predictive' 意为执行模型 CoCA,此时 y 代表响应变量矩阵,x 代表预测变量矩阵
#reg.method 参数用于指定使用的模型
bp.pred <- coca(y = beetles, x = plants, method = 'predictive', reg.method = 'simpls')
#或者通过公式指定变量,这里“~.”代表使用 plants 全部的物种变量预测 beetles 的物种
bp.pred <- coca(beetles ~ ., data = plants, method = 'predictive', reg.method = 'simpls')
bp.pred
summary(bp.pred)
结果中,我们通常期望较少的CoCA轴能够解释绝大部分的原数据集总惯量。
对于主要结果部分的查看和提取,和上文对称 CoCA中的方法类似。
接下来可通过交叉验证评估选择多少个轴观测是合适的。
#交叉验证,详情 ?crossvalcrossval(beetles, plants)
首先,选择的轴数尽可能少;其次,交叉验证结果中对应的值尽可能高。结果显示选择前两轴是合适的。
并且在这种模型类的排序方法中,仅当排序轴显著时,才具说服力。
#置换检验,999 次置换为例,详情 ?permutestbp.perm <- permutest(bp.pred, permutations = 999)
bp.perm
显示前两轴是显著的。
模型CoCA的排序图。和对称CoCA的排序图解读方式相似,若某甲虫物种和某植物物种均在靠近同一样方的位置出现,则表明它们倾向存在“正协同”,该植物物种的数量增加时,该甲虫物种的数量也增加。
#绘制双序图观测前两轴layout(matrix(1:2, ncol = 2))
biplot(bp.pred, which = 'y1', main = 'Beetles', type = 'text', choices = 1:2)
biplot(bp.pred, which = 'y2', main = 'Plants', type = 'text', choices = 1:2)
参考资料