Anosim分析(Analysis of similarities)是一种基于置换检验和秩和检验的非参数检验方法,用来检验组间的差异是否显著大于组内差异,从而判断分组是否有意义。Anosim分析使用距离进行分析,默认为method="bray",可以选择其他距离(和vegdist()函数相同),也可以直接使用距离矩阵进行分析。在R中我们可以使用vegan包中的anosim()函数进行分析,这里我们微生物群落数据为例进行分析:
#读取抽平后的OTU_table和环境因子信息
data=read.csv("otu_table.csv", header=TRUE, row.names=1)
envir=read.table("environment.txt", header=TRUE)
rownames(envir)=envir[,1]
env=envir[,-1]
#筛选高丰度物种并将物种数据标准化
means=apply(data, 1, mean)
otu=data[names(means[means>10]),]
otu=t(otu)
#根据地理距离聚类
kms=kmeans(env, centers=3, nstart=22)
Position=factor(kms$cluster)
#进行Anosim分析
library(vegan)
anosim=anosim(otu, Position, permutations=999)
summary(anosim)
上图中的ANOSIM statistic R为Anosim检验的统计量,他的分布衡量的就是零模型的分布,Upper quantiles of permutations就是通过999次置换获得的统计量的分位数。具体说来,Anosim分析的原理是先计算样品两两之间的距离,将样品两两之间的距离按照从小到大进行排序并计算排名(秩,r),并根据距离的归类(属于组间距离还是组内距离)来计算组间距离秩的均值rb与组内距离秩的均值rw之差作为统计量:
假如R>0,说明组内距离小于组间距离,也即分组是有效的,这与方差分析中比较组内方差与组间方差来判断的原理是类似的。由上面分析结果可以看到R=0.4613,大于零模型99%分位数0.290,因此p值为0.001,结果是显著的。我们可以提取分析结果,如下为距离的秩:
因为有22个样品,所以应该有C(22, 2)=231个距离。如下为上述距离对应的归属:
现在我们根据这个排序归类进行可视化:
mycol=c(52,619,453,71,134,448,548,655,574,36,544,89,120,131,596,147,576)
mycol=colors()[mycol]
par(mar=c(5,5,5,5))
result=paste("R=",anosim$statistic,"p=", anosim$signif)
boxplot(anosim$dis.rank~anosim$class.vec, pch="+", col=mycol, range=1, boxwex=0.5, notch=TRUE, ylab="Bray-Curtis Rank", main="Bray-Curtis Anosim", sub=result)
作图结果如下所示:
设置参数notch=TRUE后会在箱子的两边绘制凹槽来显示中位数的置信区间,从而便于对中位数进行比较。可以看出第二组分组效果较差,但总体来说分组是有效的。
示例数据下载链接:
链接:https://pan.baidu.com/s/1X0W-ns8kSdwzyliycYwV8A
提取码:65pc
END
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有