简介
生态相似性(Ecological resemblance)以计算样方之间的群落组成相似程度或相异程度(距离)为基础,是处理多元生态数据的基本方法之一。在群落数据分析中,对于两个共享相同物种的群落,如果所有物种的丰度也一致,那么这两个群落就具有最高的相似程度(或最低距离0),常用其反映Beta多样性。
数据样式:常见OTU丰度表,列为样本,行为OTU,交叉区域为每种OTU在各样本中的丰度(系列第一节)。
距离矩阵计算
otu_table <- read.delim("16S-amplicon-analysis/otutab.txt",
header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)
Transp_otu <- t(otu_table )
library(vegan)
# 注:由于Jaccard index等本身属性是相似指数,
# 但 vegdist() 函数的输出结果统统为距离指数,需要通过 S=1-D 转换
# jaccard 相异度
jacc_dis <- vegdist(Transp_otu , method = 'jaccard', binary = TRUE)
## jaccard 相似度
jacc_sim <- 1 - jacc_dis
# 欧几里得距离
eucl_dis <- vegdist(Transp_otu, method = 'euclidean')
# 弦距离
otu_chord <- decostand(Transp_otu, method = 'normalize')
chord_dis <- vegdist(otu_chord, method = 'euclidean')
# Hellinger 距离
otu_hell <- decostand(Transp_otu, method = 'hellinger')
hell_dis <- vegdist(otu_hell, method = 'euclidean')
# Bray-curtis 距离
bray_dis <- vegdist(Transp_otu, method = 'bray')
## Bray-curtis 相似度
bray_sim <- 1 - bray_dis
# write
bray_dis<- as.matrix(bray_dis)
write.table(bray_dis, "bray_curtis_distance.txt",
col.names = FALSE, sep = '\t', quote = FALSE)
Beta多样性研究中,最常见的是用Weighted Unifrac 距离或者Unweighted Unifrac 距离来衡量两个样本间的相异系数,其值越小,表示这两个样本在物种多样性方面存在的差异越小,常常直接进行热图可视化或利用对角线热图在同一面热图上展示差异度。
library(phyloseq)
otu_table <- read.delim("16S-amplicon-analysis/otutab.txt",
header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)
# 有根树、无根树均可
tree <- read_tree('otu_tree.tree')
# 构建phyloseq 对象
physeq <- phyloseq(otu_table(otu, taxa_are_rows = TRUE),
phy_tree(tree))
# 计算加权 Unifrac 距离
wei_unif_dis <- distance(physeq, method = 'wunifrac')
# 计算非加权 Unifrac 距离
unwei_unif_dis <- distance(physeq, method = 'unifrac')
除热图外,Weighted Unifrac 距离或者 Unweighted Unifrac 距离还可以通过箱线图直观的反映组内物种多样性的中位数、离散程度、最大值、最小值、异常值。同时,亦通过T-test检验,wilcox秩和检验和anova检验(TukeyHSD对组间进行检验),分析组间物种多样性差异是否显著。
网友评论