R语言并行计算deviationofnullbetadiversity(beta多样性零偏差)

更新时间:2023-07-10 01:58:50 阅读: 评论:0

R语⾔并⾏计算deviationofnullbetadiversity(beta多样性零偏差)
1. 如何理解beta多样性零偏差
  beta多样性零偏差的计算过程可以概括为以下三点,1.提出零假设,2.构建零模型,3.观察数据与零模型数据进⾏⽐较。与我们经常使⽤的假设检验(t检验、F检验)本质上是相同的,不同的是假设检验的数据分布是已知的,⽽群落结构的数据我们需要多次构建零模型来模拟。
  ⾸先我们提出零假设,假设群落构建是完全随机的。然后基于此假设构建零模型,由于群落构建过程完全随机,因此各物种在样点间的分布是完全随机、没有偏好的,将每个物种随机分配到各样点,构成⼀个零模型,重复1000次。最后将观察到的beta多样性数据与零模型的beta多样性数据进⾏⽐较,观察数据与零模型的数据越相似,说明构建过程越随机,⽰意图如下。
2. 如何并⾏计算beta多样性零偏差
#threads为拟使⽤的CPU数,dune为otu table,reps为模拟的次数
nulldiv <-function(dune,reps,threads){
library(reldist)
library(vegan)
library(bipartite)
library(foreach)
library(doParallel)
patches <- nrow(dune)
##Calculate beta-diversity for metacommunity
### Prepare and calculate abundance beta-null deviation metric
## Adjusted from Stegen et al 2012 GEB
bbs.sp.site <- dune
rand <- reps
羊和鸡合不合null.alphas <- matrix(NA, ncol(dune), rand)
null.alpha <- matrix(NA, ncol(dune), rand)
expected_beta <- matrix(NA,1, rand)
干部培训班
null.gamma <- matrix(NA,1, rand)
p <- numeric()
bucket_bray_res <-NULL
运动会开幕式方案bbs.sp.site = ceiling(bbs.sp.site/max(bbs.sp.site))
mean.alpha = sum(bbs.sp.site)/nrow(bbs.sp.site)#mean.alpha
gamma <- ncol(bbs.sp.site)#gamma验收申请
obs_beta <-1-mean.alpha/gamma
obs_beta_all <-1-rowSums(bbs.sp.site)/gamma
##Generate null patches
registerDoParallel(cores = threads)
bucket_bray_res <- foreach (randomize =1:rand,.combine ="cbind")%dopar%{
imac一体机
null.dist = dune
for(species in1:ncol(null.dist)){蹒跚意思
tot.abund = sum(null.dist[,species])
null.dist[,species]=0
for(individual in1:tot.abund){
sampled.site = sample(c(1:nrow(bbs.sp.site)),1)
null.dist[sampled.site, species]= null.dist[sampled.site, species]+1
}
}
##Calculate null deviation for null patches and store
null.alphas[,randomize]<- apply(null.dist,2,function(x){sum(ifel(x >0,1,0))})
企业文化落地
null.gamma[1, randomize]<- sum(ifel(rowSums(null.dist)>0,1,0))
expected_beta[1, randomize]<-1- mean(null.alphas[,randomize]/null.gamma[,randomize])    null.alpha <- mean(null.alphas[,randomize])
p <- c(p, null.alpha)
bucket_bray <- as.matrix(vegdist(null.dist,"bray"))
diag(bucket_bray)<-NA
bucket_bray_res <- apply(bucket_bray,2, FUN="mean", na.rm=TRUE)
}## end randomize loop
## Calculate beta-diversity for obs metacommunity
beta_comm_abund <- vegdist(dune,"bray")
res_beta_comm_abund <- as.matrix(as.dist(beta_comm_abund))
diag(res_beta_comm_abund)<-NA
# output beta diversity (Bray)
beta_div_abund_stoch <- apply(res_beta_comm_abund,2, FUN="mean", na.rm=TRUE)
# output abundance beta-null deviation
abund_null_dev <- beta_div_abund_stoch - mean(bucket_bray_res)
return(abund_null_dev)
}

本文发布于:2023-07-10 01:58:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1075109.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   构建   数据   假设   过程   检验   群落   物种
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图