今天就跟大家聊聊有关R语言中的MRPP分析是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
无论是野外环境样品,还是室内试验样品,一般我们都会设置样方或平行样来增强分析的准确性,必要时还会进行区组设计,因此在数据分析中需要进行组间差异的比较判别。然而对于微生物群落数据,由于物种繁多,而且不同物种的敏感环境因子不同,因此基于正态分布的参数检验难以满足分析需要,要进行多元非参数检验(non-parametric multivariate statistical tests)来计算显著性,R语言vegan包含有多种非参数检验方法,包括Anosim、Adonis、MRPP等,不同方法在统计量的选择、零模型等方面存在差异。
MRPP
分析
即多重响应排列程序(
Multiple ResponsePermutation Procedure
),使用方法与
Anosim
类似,用于分析组间微生物群落结构的差异是否显著,通常可以配合
PCA
、
PCoA
、
NMDS
等降维图使用。
MRPP
的研究原理是通过置换把所有观察对象统一分成各种可能的组合情况,构造统计量
δ
:
然后计算每种分组下统计量的值并统计该统计量的分布,其中
n
为组数,
Ci
为第
i
组的权重,一般为改组观察值占全部观察值的比例,
ξi
为第
i
个小组的平均对象距离,可以想象如果统计量
δ
值越小分组越有效,然后根据实际观察值计算统计量进行检验。可以看出,
MRPP
与
Anosim
以及
Adonis
的理念完全不同,
Anosim
与
Adonis
旨在比较组内与组间差异,而
MRPP
旨在搜寻组内距离最小的分组方案而不考虑组间距离,也即坚信一定存在一种显著的分组。在
R
中可以使用
vegan
包中的
mrpp()
函数进行分析,其默认距离为
distance="euclidean"
,可以先计算距离矩阵再进行分析,示例如下:#读取物种和环境因子信息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)#计算距离矩阵library(vegan)dist=vegdist(otu, method="bray", diag=TRUE, upper=TRUE)#根据地理距离聚类kms=kmeans(env, centers=3, nstart=22)Position=factor(kms$cluster)#进行MRPP分析mrpp=mrpp(dist, Position, permutations=999)mrpp

结果给出了每个组的样品数目以及组内平均对象距离(
class delta
)、分组解释的距离比例(
A)
。可以使用
meandist()
函数计算组间平均距离,如下所示:#计算组间平均距离meandist(dist, Position)

MRPP
分析也常用来识别和检验不同小组在排序图上的差异程度,使用主排序轴数据(需要欧氏距离!)和分组数据,来检验排序结果是否符合预期。例如如下所示
PCoA
排序
:
我们想要判断两种动物肠道微生物群落的排序坐标是否具有显著差异:dist=read.table("new.weighted.phylip.subsample.dist", header=FALSE)rownames(dist)=dist[,1]dist=dist[,-1]colnames(dist)=t(rownames(dist))dist=as.dist(dist, diag=TRUE)#进行PCoA分析otu_pca=prcomp(dist, scal=FALSE)pc12=otu_pca$x[, 1:2]#检验排序结果fish=c(rep("Bp", 10), rep("Ci", 10))mrpp2=mrpp(pc12, fish, distance="euclidean", permutations=999)mrpp2
检验结果显著,也即排序结果与实验设计分组是相符的。看完上述内容,你们对R语言中的MRPP分析是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注天达云行业资讯频道,感谢大家的支持。