VIF分析过程中,需要基于RDA/CCA进行相关性分析,RDA/CCA 模型选择原则同RDA/CCA分析。
RDA分析即冗余分析,是环境因子约束化的PCA分析,可以将样本和环境因子反映在同一个二维排序图上,从图中可以直观地看出样本分布和环境因子间的关系。CCA分析是基于对应分析发展而来的一种排序方法,将对应分析与多元回归分析相结合,每一步计算均与环境因子进行回归,又称多元直接梯度分析。此分析主要用来反映菌群与环境因子之间关系。RDA是基于线性模型,CCA是基于单峰模型。分析可以检测环境因子、样本、菌群三者间的关系或者两两之间的关系。
RDA分析是一种约束性对应分析方法,常采用欧氏距离(Euclidean distances)进行分析。但是欧氏距离并不适用于一些数据类型,采用db-RDA分析可以解决数据类型的限制,并用于分析物种与环境因子之间的关系。
db-RDA(distance-based redundancy analysis)是一个五步分析过程:
Mantel test是检验两个矩阵相关关系的非参数统计方法。Mantel test多用在生态学上检验群落距离矩阵(比如UniFrac distance matrix)和环境变量距离矩阵(比如pH,温度或者地理位置的差异矩阵)之间的相关性(Spearman 等级相关系数等)。Partial Mantel test在控制矩阵C的效应下,来检验A矩阵的残留变异是否和B矩阵相关。该分析输入两个数值型矩阵,第三个控制矩阵可通过选择因子来确定。
软件:Qiime
相关性 Heatmap分析通过计算环境因子与所选物种之间的相关性系数(Spearman等级相关系数、Pearson相关系数等),将获得的数值矩阵通过Heatmap图直观展示。通过颜色变化反映二维矩阵或表格中的数据信息,颜色深浅表示数据值的大小,它可以直观地将数据值的大小以定义的颜色深浅表示出来。
软件:R(pheatmap package)。
线性回归(Linear Regression)是利用数理统计中回归分析,来确定一个或多个自变量和因变量之间关系的一种统计分析方法。环境因子排序回归分析,常根据Alpha多样性或Beta多样性分析结果,以各样本对应的Alpha多样性指数,或在Beta多样性分析结果PC1轴上的分值为y轴,以该样品对应的环境因子(如pH、温度等)为x轴做散点图,并进行线性回归(Linear Regression),标注R2,可用于评价二者间的关系。其中R2为决定系数,代表变异被回归直线解释的比例。
VPA(Variance partitioning analysis)方差分解分析,可用于定量评估两组或多组(2~4组)环境因子变量对响应变量(如微生物群落差异)的单独解释度和共同解释度,常配合RDA/CCA使用。
分析软件:R语言vegan包中vpa分析。
MaAslin(Multivariate Association with Linear Models)分析是一种通过线性模型挖掘环境因子(如临床数据标等)与微生物群落物种或功能相对丰度(data)间相关性的分析方法,结果为一个环境因子对应一个物种或功能相对丰度的线性关系,而与其他环境因子无关。环境因子可以是连续型数据(例如年龄和体重),布尔型数据(性别),或离散型/因子数据(队列分组和表型),data代表的物种相对丰度或功能相对丰度百分比,其分布一般不符合正态分布,因此在该分析过程中data要进行反正弦平方根标准化,而环境因子通过boosting算法得到潜在的与data有联系的环境因子,在构成多元线性模型之前,还需要对环境因子和data进行质检,剔除一些异常值,和一些低丰度或无差异的值。最后以环境因子为预测值,data为响应量构建多元线性模型,计算对应的相关系数,进行相关性显著检验。相关系数大于0时,表示正相关;小于0,表示负相关,当对应的显著性检验值p值和q值符合阈值时,非连续型数据绘制箱式图,连续型数据绘制其中线性拟合度最高的散点图。
Procrustes分析(Procrustes analysis)是一种用来分析形状分布的方法。数学上来讲,就是不断迭代,寻找标准形状(canonical shape),并利用最小二乘法寻找每个样本形状到这个标准形状的仿射变化方式。普氏分析可基于不同多元数据集的排序构型(≥2组),通过平移、旋转、缩放等转换方式,实现最大叠合(maximal superimposition),用于不同数据集的对比分析。排序方法可选择PCA、PCoA等。
这篇微文写的非常棒,因此转发至自己的智库中,以便日后学习。衷心的感谢每一位知识的奉献者。。。。
VPA ,全称Variance Partitioning Analysis,中文成为方差分解分析,该分析的目的是 确定指定的环境因子对群落结构变化的解释比例 。
我们使用CCA/RDA的排序分析方法可以得到所有参与分析的环境因子对群落变化的解释比例。
那么在进行VPA时,首先就要对这些环境因子进行一个分类,然后在约束其它类环境因子的情况下,对某一类环境因子进行排序分析,这种分析也成为偏分析,即partial CCA/RDA。
在对每一类环境因子均进行偏分析之后,即可计算出每一个环境因子单独以及不同环境因子相互作用分别对生物群落变化的贡献。
分析实战
这里使用 R语言vegan包的varpart()函数 进行VPA分析,之后使用plot函数对结果进行可视化。
VPA是确定不同类型环境因子对群落变化的解释,那么首先就要对环境因子进行一个分类, 这个类怎么分呢 ?
简单的说就是 你自己想怎么分就怎么分 ,根据你研究的实际情况自己确定怎么分类。
两种环境因子分类
当分析的环境因子只有两类时,可以将两类环境因子放在不同的数据框中进行分析。
首先我们导入示例数据。
data(mite)
data(mite.env)
data(mite.pcnm)
这里mite为群落丰度数据表格,行为样本,列为物种;mite.env和mite.pcnm分别为两个环境因子的数据表格,同样行为样本,列为环境因子。
mod <- varpart(mite, mite.env, mite.pcnm, transfo="hel")
mod
进行VPA的时候, 第一个数据框为群落数据,之后两个数据框分别代表两类环境因子 ,transfo时对数据进行转换,hel为hellinger转换,可以避免分析的“弓形效应”。
在结果中我们看Individual fractions部分即可。
a为X1也就是命令中第二个数据框单独对群落变化的贡献。
c为X2也就是命令中第三个数据框单独对群落变化的贡献。
b为X1和X2的相互作用对群落变化的贡献。
d为X1和X2无法解释的群落变化。
使用plot()函数对结果进行可视化。
plot(mod, bg = c("hotpink","skyblue"))
三种及以上的分类
对与将环境因子分为3类或4类的情况,可以将环境因子放在同一个数据框中,之后使用formula的形式指定不同的分类因子。
mod <- varpart(mite, ~ SubsDens + WatrCont, ~ Substrate + Shrub + Topo,
mite.pcnm, data=mite.env, transfo="hel")
可以看到3种分类的结果就相对复杂一些,a-h的含义需要根据Partition table中的对应情况确定一下,这个我就不从头捋一遍了,感兴趣的朋友可以自行画个交集和并集的图分解一下。
为什么不捋一遍结果呢,是因为可视化之后解释的比例就直接给出了????
plot(mod, bg=2:4)
VPA最多能将环境因子分为4组,再多就不行了,不过我想也几乎不会遇到能够将环境因子分为很多组的情况。
下面是干货
做VPA分析对样本的数量有一定的要求,记得最开始使用Canoco分析的时候,如果样本数小于环境因子数目减2,软件就会报错。
也就是说 样本数目至少要比因子数目多2个 ,不要问我为什么,我也不知道为什么,没研究过具体的算法,我只是只要如果环境因子比样本数还多的话,就算做完了,结果也很奇葩,根本没法解释。
这对于一些大样本量的研究项目当然不成问题,但是对于一些经费有效的研究,可能样本数目就会是使用VPA的一个限制因素。
这里我有一个变通的方法,就是先 对不同分类环境因子做降维分析 ,比如说PCoA,之后使用主要的PC的结果替代环境因子, 从而达到降低实际使用因子数目的目的 。
但是 具体使用前几个PC就要不断的尝试 ,根据结果进行调整了。
对于结果的可视化,R默认的结果图确实不是很好看,关键还不太好调整,大家可以先默认出一个图,然后把每一部分的解释比例记下来,之后使用在线的Venn图绘制工具,画一个自己满意的只有圆圈的Venn图,再手动把解释比例和环境因子的名称给P上去