||
生态位宽度(niche breadth)是指一个种群(或其它生物单位)在一个群落中所利用的各种不同资源的总和。在可利用资源量较少的情况下,生态位宽度一般增加,以使种群得到足够的资源。在可利用资源量丰富的环境中,可导致选择性利用资源,使得生态位宽度变窄。一个种的生态位越宽,该物种的特化程度就越小,也就是说它更倾向于是一个泛化种(generalist species),泛化种的生态位宽,具有较强的竞争能力;一个种的生态位越窄,该种的特化程度就越强,即它更倾向于是一个特化种(specialists species),特化种生态位窄,在资源竞争中处于劣势(张金屯,2004)。
1.示例数据和R语言代码
library(vegan) generalists_specialists_partion <- function(tab, perm.n = 1000){ tab <- tab[, colSums(tab) > 0] niche_caculate <- function(mat){ niche_value <- c() for(i in 1:ncol(mat)){ P <- mat[,i] / sum(mat[,i]) niche_value[i] <- 1/sum(P^2) } names(niche_value) <- colnames(mat) mat <- na.omit(mat) return((niche_value)) } obs_niche <- niche_caculate(tab) occurence <- apply(ceiling(tab/max(rowSums(tab))), 2, sum)/dim(tab)[2] mean_rela_abund <- apply(tab/max(rowSums(tab)), 2, mean) all_simulate_mat <- matrix(ncol=dim(tab)[2],nrow=perm.n) for(i in 1:perm.n){ sim_tab <- permatswap(tab, times = 1)$perm[[1]] all_simulate_mat[i, ] <- niche_caculate(sim_tab) cat(i/perm.n*100, "\r") } colnames(all_simulate_mat)<-colnames(tab) all_simulate_mat <- as.data.frame(all_simulate_mat) mean_niche <- apply(all_simulate_mat, 2, mean) confidence_interval <-apply(all_simulate_mat,2, function(x){quantile(x, na.rm = T, probs=c(0.025, 0.975))}) Sign <- ifelse(obs_niche > confidence_interval[2, ], 'Generalist', ifelse(obs_niche < confidence_interval[1, ], 'Specialist', 'Others')) stats <- data.frame(niche_value = obs_niche, mean_niche = mean_niche, lowCI=confidence_interval[1,], uppCI=confidence_interval[2,], Sign = Sign, occurence = occurence, mean_rela_abund) return((stats)) } library(ggplot2) dt <- read.csv("filename.csv", comment.char = "", sep = ",", row.names = 1, header = T)dt <- t(dt) res.stats <- generalists_specialists_partion(dt, perm.n = 1000) #write.table(res.stats, file = 'filename.csv', row.names = T, sep = ',', quote = T) res.stats <- read.csv("filename.csv",row.names = 1) p1<- ggplot(res.stats, aes(log(mean_rela_abund), niche_value)) + geom_point(aes(color = Sign))+ scale_color_manual(values = c("#FF7F00","#4387B5","#00A087B2"))+labs(title = "xxx") p12.结果数据
niche_value: 生态位宽度的度量。
mean_niche: 生态位宽度的平均值。
lowCI: 生态位宽度的置信区间下限。
uppCI: 生态位宽度的置信区间上限。
Sign: 表示统计学上的显著性或分类。
occurence: OTU的出现频率或丰度。
mean_rela_abund: OTU的平均相对丰度。
一个宽的生态位宽度可能表明该OTU能够在多种环境条件下生存,而窄的生态位宽度则可能表明它对环境条件更为挑剔。
——————来源未知,很久以前的代码了,侵权请联系我删除
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 01:06
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社