【R数据处理】不同环境因子组合与群落变化相关性的BioEnv分析

 不求做的最好,但求做的更好。”   --科白君
"R实战"专题·第16篇
  编辑 |free傻孩子
  1864字 |5分钟阅读
本期推送内容
很多时候我们在进行mantel分析或排序分析(如CCA、RDA)时总会有一些困惑;即在已经检测的环境因子中应该选择哪些环境因子作为分析过程中的环境因子矩阵?经常的,我们是拿所有的环境因子进行mantel分析或排序分析的,这样不是不可以,只是存在一定的盲目性。因为,并不是所有已经检测的因子都会影响目标变量或者目标矩阵,有些因子甚至可能会产生负效应从而不利于我们评估环境因子的重要性。为了解决这个问题,在进行mantel 分析,排序分析之前我们可以先挑选出最优的环境因子组合,从而避免过多不必要的因子影响分析结果的问题。本节我为大家推荐一种算法以达到以上目的。
01

BioEnv分析简介

BioEnv 分析是通过计算样本群落结构的距离矩阵和环境因子的距离矩阵,计算两个距离矩阵之间的相关系数,挑选出最佳的环境因子组合;

在默认情况下,计算物种(或者OTUs/ASVs)群落结构的距离矩阵时,使用 Bray-Curtis 距离;计算环境因子的距离矩阵时,使用Euliodean 欧式距离,计算相关性,则采用 spearman 相关系数。

这就意味着我们需要准备两个数据框(data.frame格式),一个是物种数据框,一个是环境因子数据框(包含所有检测的环境因子)。这两个数据框的行名均是样方名。物种数据框的列名为物种名或OTU名;环境因子数据框的列名为变量名。

数据的格式如下:

物种数据框数据

环境因子数据框格式:

以上数据是vegan包中自带的数据,对于自己的数据大家需要对行名进行定义,否者计算时容易出现错误。

02

代码运行和结果分析

library(vegan)
library(tidyverse)
#注意:如果环境变量太多如超过20个(1 h)可能会花费很长时间
data(varespec)
data(varechem)
bio_env <- bioenv(wisconsin(varespec) ~., data = varechem)
bio_env

结果报告分别指出,两个矩阵所用的相关性类型“spearman”相关性,物种矩阵使用的是“bray”距离,环境因子矩阵使用的是“euclidean”距离算法,最佳的模型有7个参数,分别是“P、 Mg、Al、Fe、Mn、Mo和Humdepth”,这七个因子构成的环境因子矩阵与物种矩阵的相关性最高为0.503

summary(bio_env)

使用summary函数可以详细的看到不同环境因子组成的矩阵分别与物种矩阵之间的相关性。

我们使用排序函数可以找到最优的组合,代码如下:

cbind(summary(bio_env)[[3]],summary(bio_env)[[2]]) %>%
  as_tibble() %>%
  arrange(desc(V2))

该方法的优点:

1)当环境因子较多时有助于挑选出与物种矩阵(群落分布/群落结构)最相关的环境因子组合;

2)为后续排序分析如RDA或者CCA、或mantel分析提供环境因子组合的选择的依据。

该方法的缺点:

1)运行时间较慢、当环境因子超过30个时单线程运算可能要超过2h;

2)最优的环境因子组合可能会遗漏最重要的环境因子,因此需要结合其它分析确定最优环境因子组合,如随机森林或者GLM分析。

该方法的参考文献:Clarke, K. R & Ainsworth, M. 1993. A method of linking multivariate community structure to environmental variables. Marine Ecology Progress Series, 92, 205–219.

(0)

相关推荐