#计算微生物群的alpha多样性指标,包括Simpson,shannon,chao1等
对微生物多样性的计算主要思路是先进行抽平,使每个样本量的OTU丰富和一致,再按照公式对多样性进行计算
library(vegan)
#读入物种数"
otu <- read.csv("Arche_test.csv",row.names = 1,stringsAsFactors = FALSE, check.names = FALSE)
otu <- t(otu) #注意行和列需不需要转换
#对微生物OUT数据进行抽平
#求和查看每个样本的和
colSums(otu)
#使用该代码进行抽平
otu_Flattening = as.data.frame(t(rrarefy(t(otu), min(colSums(otu)))))
#查看抽平后的每个样本的和
colSums(otu_Flattening)
#将抽平后的otu表保存到该工作目录,准备后面的多样性分析
write.table (otu_Flattening, file ="otu_Flattening.csv",sep =",", quote =FALSE) #结果导出
##物种丰富度 Richness 指数
richness <- rowSums(otu > 0)
#Shannon 指数
shannon_index <- diversity(otu, index = 'shannon', base = exp(1))
##Simpson
#Gini-Simpson 指数(我们平时常用的 Simpson 指数即为 Gini-Simpson 指数)
gini_simpson_index <- diversity(otu, index = 'simpson')
#Chao1 指数
chao1 <- estimateR(otu)[2, ]
##goods_coverage 指数
goods_coverage <- 1 - rowSums(otu == 1) / rowSums(otu)
#保存结果
result <- data.frame(richness, shannon_index, gini_simpson_index, pielou, chao1, ace, goods_coverage)
write.csv(result, 'alpha_diversity.csv', quote = FALSE)