5. 基于OTUs的alpha多样性指数计算和可视化

简介

1. 物种丰富度指数(Species richness):群落中丰度大于0的物种数之和,一般用Observed OTU(observed species)表示,只有物种种类信息,没有丰度信息;数值范围一般从几百至几千不等,波动范围与研究对象有关;

2. 均匀度(Evenness):用于度量群落中相对物种丰富度,香农均匀度(Shannon’s evenness),又称Pielou均匀度(Pielou’s evenness),是群落实际的香农指数与具有相同物种丰富度的群落中能够获得的最大香农指数的比值;如果所有物种具有相同的相对丰度,则该值为1。

3. 香农指数(Shannon index):或称香农熵指数(Shannon entropy index)、香农-威纳指数(Shannon-Wiener index),大家最常用的Shannon index 数值为1-10左右的小数,是综合物种数量和丰度两个层面的结果。如果群落仅由单一物种组成(种群),那么随机选择的个体必定为那个唯一的物种,此时不确定性就为零;反之,随着生物多样性升高,我们更加无法得知被随机选择的个体的所属关系,不确定性也会随着群落物种种类数的增多而增加。

4. 辛普森指数(Simpson index):同样考虑了物种丰富度以及均匀度,但与香浓指数相比,辛普森指数更易受均匀度的影响。经典辛普森指数代表了在群落中两个随机选择的个体属于同一物种的概率——当群落物种丰富度增加时,这种概率随之降低,即辛普森指数随着物种丰富度的增加而降低。由于经典辛普森指数与物种丰富度趋势相反(不直观),如今常用演变而来的Gini-Simpson指数代表原来的辛普森指数,即用1减去经典辛普森指数的数值后得到,此时Gini-Simpson指数随着丰富度的增加而增加(二者保持一致的趋势)。

特别注意:通常情况下为保持物种丰度指数与辛普森指数的趋势一致,一般直接将“Gini-Simpson”定义为“Simpson”;即绝大多数情况下,我们在文献中看到的辛普森指数或者软件直接给出的辛普森指数计算结果,往往就是Gini-Simpson指数,而并非经典辛普森指数。

5. Chao1指数:对稀有的物种很敏感的度量物种丰富度的指标,它与丰度和均匀度无关。在一个群体中进行随机抽样,当稀有物种(singletons)被不断的被发现时,表明群体中还存在稀有的物种未被发现;若,所有物种至少被抽到两次(doubletons)时,则推测群体中所有物种被计数完毕。

6. ACE指数:同样是利用稀有物种估算物种多样性的指数,,其值越高代表群落物种种类越丰富。

7. Goods_coverage:常用于微生物16S/18S/ITS测序中,作为反映测序深度的指标,其值越接近于1,说明测序深度越合理,即该深度已经基本覆盖到样品中所有的物种;反之,测序深度不高,许多物种仅被测到了一次,暗示着很多低丰度物种可能尚未被测序测到。

数据样式:常OTUs/ASVs丰度表,列为样本,行为OTUs/ASVs,交叉区域为每种OTUs/ASVs在各样本中的丰度。

Alpha多样性指数计算

library(vegan)
library(ggplot2)

otu_table  <-  read.delim("16S-amplicon-analysis/otutab.txt", header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)

Transp_otu <- t(otu_table )

Alpha_diversity_index <- function(x, tree = NULL, base = exp(1)) {
  est <- estimateR(x)
  Obs <-  est[1, ]
  Shannon <- diversity(x, index = 'shannon', base = base)
  Simpson <- diversity(x, index = 'simpson')
  Pielou <- Shannon / log(Obs, base)
  goods_coverage <- 1 - rowSums(x == 1) / rowSums(x)

  result <- rbind(est, Shannon, Simpson,
                  Pielou, goods_coverage)
  if (!is.null(tree)) {
    Pd <- pd(x, tree, include.root = FALSE)[1]
    Pd <- t(Pd)
    result <- rbind(result, Pd)
  }
  result <- as.data.frame(t(result))
  return(result)
}

alpha_diversity <- Alpha_diversity_index(Transp_otu)
alpha_diversity[c(1:3), ]

可视化

metadata <- read.delim("16S-amplicon-analysis/metadata.txt", header=T, sep="\t", stringsAsFactors = FALSE)

alpha_diversity$Sample <- rownames(alpha_diversity)
plot_data <- merge(metadata, alpha_diversity, by = "Sample")

custom_theme <- theme(panel.background = element_blank(),
               panel.grid.major.y = element_line(colour = "black"), 
               axis.line.x = element_line(colour = "black"),
               axis.line.y = element_line(colour = "black"),
               axis.title.x = element_blank()
               )

ggplot(data = plot_data, aes(x = Group, y = Shannon))+ 
  geom_jitter() + 
  geom_boxplot(aes(fill = Group), alpha = 0.5) + 
  custom_theme

当样本数目比较多时,蜜蜂图可能是一个比较好的可视化策略。

差异显著性

  1. anova对指数与分组统计
  2. 使用TukeyHSD对组间进行检验,效正pvalue
  3. R - t检验
  4. R - 非参数检验

你可能感兴趣的:(5. 基于OTUs的alpha多样性指数计算和可视化)