分享

微生物群落和环境因子相关性:Bioenv & bvStep

 追着天使拔毛 2021-01-08

微生物群落和环境因子相关性:Bioenv & bvStep

阅读 1350

本文介绍两个分析微生物群落和环境因子相关性的工具。

Bioenv

Bioenv比较常用,是vegan包中的函数。 功能:找到与群落差异有最大(秩)相关性的环境变量的最佳子集

 1library(vegan)
 2#说明
 3bioenv(comm, env, method = "spearman", index = "bray",
 4       upto = ncol(env), trace = FALSE, partial = NULL, 
 5       metric = c("euclidean", "mahalanobis", "manhattan", "gower"),
 6       parallel = getOption("mc.cores"), ...)
 7comm:群落
 8env:环境因子
 9method:相关性方法,同cor函数
10index:群落不相似性矩阵的构建方法。同vegdist函数
11upto:子集中最多元素个数
12partial:是否做partial分析
13metric:环境因子矩阵构建方法,有四种方法。

对于p个环境因子,存在2^p-1个子集,因此环境因子多的时候会非常非常非常慢。20个变量包含>1e6组合。

 1#例子
 2data(varespec)
 3data(varechem)
 4sol <- bioenv(wisconsin(varespec) ~ log(N) + P + K + Ca + pH + Al, varechem)
 5#结果给出了不同数量环境因子条件下相关性最高的组合
 6summary(sol)
 7                    size correlation
 8P                      1      0.2513
 9P Al                   2      0.4004
10P Ca Al                3      0.4005
11P Ca pH Al             4      0.3619
12log(N) P Ca pH Al      5      0.3216
13log(N) P K Ca pH Al    6      0.2822

bvStep

bvStep在sinkr包中。功能和Bioenv一样。在环境因子很多的时候表现更好。

 1# install.packages("remotes")
 2# remotes::install_github("marchtaylor/sinkr")
 3library('sinkr')
 4#说明
 5bvStep(
 6  fix.mat,
 7  var.mat,
 8  fix.dist.method = "bray",
 9  var.dist.method = "euclidean",
10  scale.fix = FALSE,
11  scale.var = TRUE,
12  max.rho = 0.95,
13  min.delta.rho = 0.001,
14  random.selection = TRUE,
15  prop.selected.var = 0.2,
16  num.restarts = 10,
17  var.always.include = NULL,
18  var.exclude = NULL,
19  output.best = 10
20)
21fix.mat:固定的群落或环境因子数据(一般是群落)
22var.mat:可变的群落或环境因子数据(一般是环境因子)
23fix.dist.method    :计算固定数据的不相似矩阵(默认bray)
24var.dist.metho:计算可变数据的不相似矩阵(默认欧氏距离)
25scale.fix:固定数据是否中心化和标准化(默认否)
26scale.va:可变数据是否中心化和标准化(默认是)
27max.rho:最大Spearman 相关性,用于停止计算,默认0.95
28min.delta.rho:Spearman 最小的变化
29random.selection:是否随机开始
30prop.selected.var:每次重新开始包含的变量比例
31num.restarts:重新开始次数,默认50
32var.always.include:每次重新开始包含的环境因子
33output.best:结果返回多少种组合,默认10

可以先经过一轮初步筛选,得到相关性比较高的因子后,再进行二次筛选。

 1#例子
 2library(vegan)
 3data(varespec)
 4data(varechem)
 5set.seed(1)
 6res.biobio1 <- bvStep(wisconsin(varespec), wisconsin(varespec), 
 7                      fix.dist.method="bray", var.dist.method="bray",
 8                      scale.fix=FALSE, scale.var=FALSE, 
 9                      max.rho=0.95, min.delta.rho=0.001,
10                      random.selection=TRUE,
11                      prop.selected.var=0.3,
12                      num.restarts=50,
13                      output.best=10,
14                      var.always.include=NULL
15)
16res.biobio1 
17#结果中包含相关性最高的组合,和不同因子数相关性最高的结果。
18$order.by.best
19                            var.incl n.var       rho
201     3,4,13,15,24,28,29,30,35,37,39    11 0.8404258
212  3,4,13,15,24,28,29,30,35,37,39,44    12 0.8385896
223       4,13,15,24,28,29,30,35,37,39    10 0.8346131
234       4,15,17,24,26,29,34,35,37,43    10 0.8302690
245     3,4,15,17,24,26,29,34,35,37,43    11 0.8296674
256            3,4,5,15,22,23,29,38,42     9 0.8294197
267              4,5,15,19,25,26,29,38     8 0.8286999
278         3,4,5,15,17,22,23,29,38,42    10 0.8275624
289                 4,5,15,19,26,29,38     7 0.8260670
2910          4,5,14,15,19,25,26,29,38     9 0.8249346
30
31$order.by.i.comb
32                             var.incl n.var       rho
331                                  26     1 0.5186498
342                               23,26     2 0.6100455
353                            15,26,29     3 0.6873777
364                         15,19,26,29     4 0.7428844
375                       4,15,19,26,29     5 0.7760409
386                    4,15,19,26,29,38     6 0.8038093
397                  4,5,15,19,26,29,38     7 0.8260670
408               4,5,15,19,25,26,29,38     8 0.8286999
419             3,4,5,15,22,23,29,38,42     9 0.8294197
4210       4,13,15,24,28,29,30,35,37,39    10 0.8346131
4311     3,4,13,15,24,28,29,30,35,37,39    11 0.8404258
4412  3,4,13,15,24,28,29,30,35,37,39,44    12 0.8385896
4513 2,3,6,7,11,12,13,14,16,35,42,43,44    13 0.7157158
46
47$best.model.vars
48[1] "Rhodtome,Vaccmyrt,Dicrpoly,Pleuschr,Cladstel,Cladgrac,Cladfimb,Cladcris,Cetreric,Flavniva,Stersp"
49
50$best.model.rho
51[1] 0.8404258
52
53$var.always.include
54NULL
55
56$var.exclude
57[1]  8 20 21 32
58
59#232629一直存在,因此第二次筛选将这几个样本包含进去。
60set.seed(1)
61res.biobio2  <- bvStep(wisconsin(varespec), wisconsin(varespec), 
62                       fix.dist.method="bray", var.dist.method="bray",
63                       scale.fix=FALSE, scale.var=FALSE, 
64                       max.rho=0.95, min.delta.rho=0.001,
65                       random.selection=TRUE,
66                       prop.selected.var=0.3,
67                       num.restarts=50,
68                       output.best=10,
69                       var.always.include=c(23,26,29)
70)
71res.biobio2 # Best rho equals 0.895 (15 of 44 variables)
72
73#最优的组合包含15个环境因子
74$best.model.vars
75[1] "Vaccmyrt,Vaccviti,Polypili,Pohlnuta,Cladarbu,Cladrang,Cladcocc,Cladcorn,Cladgrac,Cladfimb,Cladcris,Cladamau,Cetreric,Nepharct,Cladcerv"

sinkr包重点包含了多变量方法和地理数据的处理。

sinkr也有做bioenv的函数为bioEnv。

本文分享自微信公众号 - Listenlii(gh_1a9e56035563),作者:水岸风堤

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多