对象与引用变量的有效期是一致的,当引用RDA排序后变量不存在在时,编程人员必须将对象删除,否则会造成内存泄露

约束排序之冗余分析(RDA)概述


冗餘分析的基本方法描述


冗余分析(RDA)和基于转化的冗余分析(tb-RDA


analysisRDA),从概念上讲RDA是响应变量矩阵与解释变量矩阵之间多元多重线性回歸的拟合值矩阵的PCA分析,也是多响应变量(multi-response)回归分析的拓展在生态学数据分析中常使用RDA,将物种组成的变化分解为与环境变量相关的變差(variation或称方差,variance由约束/典范轴承载),用以探索群落物种组成受环境变量约束的关系

包含很多零值的数据在执行多元回归或其它基于欧式距离的分析方法之前必须被转化,LegendreGallagher2001)提出的基于转化的RDATransformation-based analysistb-RDA)用于解决这个问题。tb-RDA在分析前首先对原始数据做一定的转化(唎如Hellinger预转化包含很多零值的群落物种数据)并使用转化后的数据执行RDA。即除了第一步多了数据转化外其余过程均和常规的RDA相同。

Ecology579-584頁的内容)。其中矩阵Y是中心化的响应变量矩阵X矩阵是中心化(或标准化)的解释变量矩阵。RDA中通常使用标准化后的解释变量因为在佷多情况下解释变量具有不同的量纲,解释变量标准化的意义在于使典范系数的绝对值(即模型的回归系数)能够度量解释变量对约束轴嘚贡献解释变量的标准化不会改变回归的拟合值和约束排序的结果。在生态学数据分析中响应变量矩阵一般即为物种数据,解释变量矩阵即为环境变量数据

1)先将矩阵Y中的每个响应变量分别与矩阵X中的所有解释变量进行多元回归,通过回归模型获得每个响应变量的擬合值(fitted values即在回归线上对应的值)以及残差(residuals,响应变量的观测值和拟合值之间的差值)最终得到包含所有响应变量拟合值及残差的擬合值矩阵?以及残差矩阵Yres)。

2)对拟合值矩阵?运行PCA得到典范特征向量(eigenvectors)矩阵U。使用矩阵U计算两套样方排序得分(坐标):一套使用中心化的原始数据矩阵Y获得在原始变量Y空间内的样方排序坐标(即计算YU所获得的坐标称为“样方得分”,即物种得分的加权和);叧一套使用拟合值矩阵?获得在解释变量X空间内的样方排序坐标(即计算?U所获得的坐标称为“样方约束”,即约束变量的线性组合)

3)一般来讲,RDA过程执行到上步就算完成了但一般情况下我们会同时对残差矩阵Yres运行PCA,获得残差非约束排序非约束轴即代表了解释變量未能对响应变量作出解释的部分,严格地来说不属于RDA的范畴但能够帮助我们获取更多信息。


Zeleny使用仅包含一个解释变量(环境变量)嘚数据形象化地展示了RDA过程

1)执行物种spe1与环境变量env1的线性回归(由于此处示例中仅存在一个环境解释变量故此回归为一元线性回歸;当存在多解释变量时,即为多元线性回归)将回归模型拟合的物种丰度值存储在拟合值矩阵,物种丰度的残差存储在残差矩阵见丅图1中所示的过程。

2)如此对物种组成矩阵中的所有物种重复相同的操作最终获得包含所有物种丰度拟合值及残差的两个矩阵。见下圖2中所示的两个矩阵(1)(2)过程即形象化地展示了RDA中的回归细节部分。

3)回归过程执行完毕后使用PCA,在拟合值矩阵中提取约束的排序轴并在残差值矩阵中提取非约束的轴。见下图2中所示的过程在该示例中,由于仅有一个解释变量(环境变量env1)因此仅得到一个約束的排序轴(排序图中的垂直轴是第一个非约束轴)。


RDA排序结果产生的约束轴的数量为min[p, m, n - 1];如果同时获得非约束排序结果(即PCA)则非约束轴数量为min[p, n - 1]。其中p为响应变量数量;m为定量解释变量数量以及定性解释变量(因子变量)的因子水平的自由度(即该变量因子水平数减1);n为排序对象数量。

偏冗余分析(偏RDA


ordinationRDA)相当于多元偏线性回归分析(DaviesTso1982)在实际应用中同样广泛。

与偏线性回归相似解释變量被分为两组:XW,其中X表示模型中将被考虑的解释变量W表示对响应变量Y的影响被控制的协变量。若变量矩阵W对响应变量Y的影响已知在这种情况下,我们常期望在控制WY的影响的前提下将关注点集中在另一组变量矩阵X对响应变量Y的影响上。例如可以以气候变量X作為解释变量,土壤因子变量W作为协变量对群落物种数据进行RDA分析。这样分析的目的是在控制土壤因子影响后展示单独能够被气候变量線性模型解释的物种格局。

在解释变量的前向选择过程中偏RDA也是经常被使用的。

基于距离的冗余分析(db-RDA


尽管tb-RDA的应用拓展了RDA的适用范围但无论常规的RDAtb-RDA实质上均基于欧氏距离,有时我们可能需要用到基于非欧式距离的RDALegendreAnderson1999)提出的基于距离的冗余分析(Distance-based analysisdb-RDA)用于解决這个问题并且证明RDA能够以方差分析方式分析由用于选择的任何距离矩阵。db-RDA将主坐标分析(PCoA)计算的样方得分矩阵应用在RDA中其好处是可鉯基于任意一种距离测度(例如Bray-curtis距离等,而不再仅仅局限于欧氏距离)进行RDA排序因此db-RDA在生态学统计分析中被广泛使用。当然若是我们矗接计算样方群落间的欧式距离矩阵并将其输入至db-RDA中计算时,也将会得到和常规的RDA一致的结果

db-RDA首先基于物种数据(根据实际需求,选择使用原始物种数据或经过某种转化后的物种数据)计算相异矩阵作为PCoA的输入,之后将所有PCoA排序轴上的样方得分矩阵用于执行RDA而不再使鼡原始的物种数据以及解释变量(环境因子数据)直接作为RDA的输入。由于在PCoA中可能会产生负特征值必要时需要引入一些有效的校正方法。

尽管物种信息在相异矩阵的计算过程中丢失但主坐标矩阵依然可以视为表征数据总变差的距离矩阵,因此db-RDA结果反映了解释变量对从整個响应数据中得出的样方相似性(相异矩阵)的影响物种得分可以通过与它们所在样方得分的多度加权平均与PCoA轴建立关联而投影到最终嘚排序图中,用以表明响应变量(即物种信息)对PCoA排序的贡献程度


RDA是通过多元线性回归分析后获得的拟合值矩阵的PCA分析,因此很多用於多元回归的技术都可以在RDA中使用。上面所有的RDA模型都仅使用一阶的解释变量然而,物种分布对环境梯度通常是单峰响应(如下图所示)即物种通常有最适合的生态区域。因此对于这种情况一阶线性模型可能不太适用。


图注:单一物种沿环境梯度的单峰响应曲线D为該物种的最适环境梯度,E为较适环境ABC则为位于该物种生态位外(对于该物种来讲此时环境很极端,难以生存或增长)

绘制所有响應变量与单个解释变量之间的散点图检验非线性关系非常繁琐,识别和拟合单峰响应最简单模式是在一阶函数基础上加入二阶解释变量(即二次项)并运行变量的前向选择以保留某些一阶或二阶变量。然而含有二阶解释变量的RDA结果很难解读,所以只有充分理由认为是非線性关系时才能使用非线性的RDA三阶的解释变量也可以用于拟合单峰响应关系,但需要高偏态分布的响应变量原始的多项式通常高度相關,因此建议使用正交的多项式

需注意,所有的非线性RDA仅使用非转化的响应变量



从上面解释计算RDA的步骤中即可看出,RDA的排序轴实际上昰解释变量的线性组合(即线性模型拟合值的排序)换句话说,RDA的目的是寻找能最大程度解释响应变量矩阵变差的一些列的解释变量的線性组合因此RDA是被解释变量约束的排序。约束排序与非约束排序的区别很明显:约束排序过程中解释变量矩阵控制排序轴的权重(特征根)、正交性和方向在RDA中,排序轴解释或模拟(从统计意义上讲)依赖矩阵(响应变量)的变差并可以检验响应变量矩阵Y与解释变量矩阵X的线性相关显著性;非约束排序PCA分析则不存在这种情况。尽管在非约束模型中可以通过在排序后被动地加入解释变量以达到解释排序轴的目的,但此举与约束排序相比具有本质区别可

在生态学排序分析中对于非约束排序模型(如PCA),我们感兴趣的信息主要是排序图中样方和物种变量得分的相对位置、部分排序轴的相??对重要性(根据特征值判断)以及排序轴的生态解释等;而对于约束排序模型(如RDA)我们通常更关注环境变量对物种组成的影响(即环境变量所能解释的变差,以及)、哪些环境变量对于群落结构的解释更为重偠()以及获知各变量或变量集解释的变差()等由于本文仅对RDA作基础性的简介,这些相关的延伸(也很重要)内容不在本文中介绍若有需要可点击链接阅读。


通常情况下我们在执行RDA时(如使用R语言vegan包的rda()函数运行RDA)能够同时获得约束轴和非约束轴的相关信息,原始响應变量矩阵的总变差为约束模型解释变差(即解释变量能够解释的部分以RDA轴呈现)和非约束模型解释变差(即解释变量未能解释的部分,非约束部分以PCA轴呈现)的加和在对RDA进行解读时,最好同时结合约束轴和非约束轴中的信息尽管非约束部分严格来讲不属于RDA范畴,但佷多情形中仍具参考价值

约束模型解释变差反映了响应变量变化量的多少与解释变量有关,如果用比例表示其值相当于多元回归的R2,這个解释比例值也称作双多元冗余统计(Bimultivariate redundancy statistic)然而,类似于多元回归的未校正R2RDAR2也是有偏差的,需要进行校正同时,并非每一个约束軸都是合理有效的还需依据置换的原理检验各约束轴的显著性,对约束轴进行取舍RDAR2校正以及及约束轴的显著性检验简介可。生态学Φ常通过RDA描述环境变量(解释变量)解释样方物种组成(响应变量)的差异。如果约束模型解释变差大于非约束模型解释变差表明响應数据的大部分变化量均可通过解释变量作出解释,群落物种组成分布真实地由给定环境因子所影响(对于RDA结果即二者呈现出较好的线性梯度);如果约束模型解释变差低于非约束模型解释变差,或者约束模型解释变差仅占总变差的较小比例此时应谨慎对待,因为模型並未显示出给定环境因子能够对群落物种的组成作出有效的解释约束模型解释量偏低的原因可能是还有重要的解释变量尚未考虑,或是解释变量之间存在交互作用或者归因于实际群落中物种和环境的复杂关系通常很难仅通过简单的模型有效描述出等(例如常规的RDA基于一階线性模型,但物种和环境的关系多数情况下并非一阶线性关系这种情况下,物种分布可能并非不受这些环境因子的约束仅仅归因于簡单的一阶线性模型无法有效描述其关系)。

RDA模型中每一个约束轴的特征值(eigenvalue)与特征值总和(约束轴和非约束轴特征值总和)的比例即為该轴的解释量对于合理的RDA模型来讲,选定轴(通常选取特征值最高的前2-3轴用来观测)的解释量不能太低

少数情况下,残差之间的排序或相关性(非约束轴)可能比具有良好特征的约束轴更具生态学意义如上所述,对于RDA的残差即额外以PCA的形式呈现。如果有必要通過观测非约束空间中的样方和物种的相对位置可以帮助解读这些残差的特征。


对于排序对象、解释变量以及响应变量的相互关系最终通過排序图直观呈现。一般而言我们仅选择前2-3个特征值较高(且显著)的约束轴用于观测(并尝试对其做出解释),并表示为二维/三维散點图的样式少数情况下也会根据实际情况选择特定的排序轴(例如第二轴的趋势不明显,第三轴反而明显因此跳过了第二轴,使用二維点图对第一、三轴可视化并做出解释;有时也会选择使用两个二维点图分别展示并解释第一、二和三、四轴等)。有一点需要切记僦是不要试图解释太多的轴,太多的生态维度反而意义不大正如McCuneGrace2002)所说:“Very

R语言vegan包分析生态学群落数据为例,排序对象(样方)、响应变量(物种)以及解释变量(环境变量)在各个约束轴中的排序结果分别报告为样方得分(site scores)投影到排序图中即表示为坐标轴上對应位置处的坐标。根据是否展示物种向量排序图可分为双序图(仅展示样方和环境变量二者关系)和三序图(展示样方、物种及环境變量三者关系)。

RDA排序图中样方直接在对应坐标处绘制为点。物种变量则呈现为向量由原点(0,0)起始,指向物种得分的对应坐标处向量嘚方向表示了该物种丰度增加的方向。解释变量得分(explanatory variable scores)同样以向量的形式表示在RDA排序图中环境向量的长度表示样方物种的分布与该环境因子相关性的大小;向量与约束轴夹角的大小表示环境因子与约束轴相关性的大小,夹角小说明关系密切若正交则不相关。


图注:二維散点图展示某RDA结果的前两个约束轴其中A图为双序图,B图为三序图

无论RDA双序图或三序图,均需要同时展示对象和变量但没有同时可視化对象和变量的最优化方法。通常根据关注侧重点的不同考虑使用不同的标度(或称尺度、标尺)展示排序图,以重点反映关键的信息得分集作为RDA输出的典型特征,将根据使用的标度而变化一般有两种标尺模式,不同模式的排序图有不同的解读方式如果对排序样方之间的距离更感兴趣,或者大多数解释变量为因子类型则考虑I型标尺;如果对变量之间的相关关系更感兴趣,则考虑II型标尺

在两种標尺的RDA排序图内,对于双序图由于未展示物种信息故无需考虑样方和物种关系的解读方式;对于三序图,样方和物种箭头的解读同PCA将樣方对象点垂直投影到物种变量箭头上位置表示该物种在该样方内数值在所有样方内的排序位置。但是解释变量的箭头或因子变量的形惢的解读另有规则。

依据I型标尺缩放排序图

I型标尺关注的是对象之间的关系矩阵U的特征向量(代表了约束轴中的响应变量得分,参见开頭“RDA算法简述”下述XY?等同述),被标准化为单位长度X空间内的样方得分由公式Z=?U获得,这些向量具有相同的方差λkY空间内的樣方得分由公式F=YU获得,这些向量的方差通常显著高于λk因为Y同时涵括了拟合值和残差值因此其总方差高于?(仅为拟合值)的方差。通過双序图表示矩阵ZUFU时,特征向量与样方得分矩阵的结果较好地还原了原始矩阵:ZU’=?FU’=Y对于定量解释变量x与样方得分拟合值嘚相关性,乘以k/Y的总方差)1/2后在各排序轴中呈现其中λk为约束轴k的特征值。在这种标尺中各约束轴中的样方得分具有不同的方差。

I型標尺的RDA排序图主要展示如下信息:

1)样方点垂直投影到响应变量或定量解释变量的箭头或延长线上投影点近似于该样方内该响应变量戓解释变量的数值沿着变量的位置;

2)响应变量与解释变量箭头之间的夹角反映了它们之间的相关性(但响应变量之间的夹角无此含义);

3)定性解释变量的形心与响应变量(物种)箭头之间的解读如同样方点与响应变量之间的解读(因为定性解释变量的形心也是一组樣方的形心);

4)定性解释变量的形心之间或形心与样方点之间的距离近似他们之间的欧式距离。

依据II型标尺缩放排序图

II型标尺中每個特征向量被标准化为特征根的平方根,关注的是变量之间的关系

通过U?1/2转化,将矩阵U的特征向量(代表了约束轴中的响应变量得分參见开头“RDA算法简述”,下述XY?等同述)标准化为k)1/2X空间内的样方得分通过Z=?U获得后,再经Z?-1/2转化缩放为单位方差同样地,Y空间內的样方得分通过F=YU获得后再经F?-1/2转化缩放,并且所得向量的方差通常显著高于由X所得向量的方差原因同上述“I型标尺”中的描述。通過双序图表示矩阵ZUFU时,特征向量与样方得分矩阵的结果较好地还原了原始矩阵:ZU’=?FU’=Y定量解释变量x与样方得分拟合值的相關性直接呈现在各排序轴中。

II标尺的RDA排序图主要展示如下信息:

1)将样方点垂直投影到响应变量或定量解释变量的箭头或延长线上投影点位置近似于该响应变量或解释变量在该样方内的数值;

2)响应变量与解释变量箭头之间的夹角反映它们之间的相关性,响应变量の间和解释变量之间也同样解读;

3)定性解释变量的形心与响应变量箭头之间的解读如同样方点与响应变量之间的解读可以通过投影點判断;

4)定性解释变量的形心之间或形心与样方之间的距离不再近似欧式距离。

看完描述是不是有点懵接下来通过两个图来简要说奣下对RDA排序图的解读吧。


1a图存在排序样方(样本)III,解释变量(环境变量)1探究III1的关系时,将III垂直投影在1的向量(箭头)上根据交叉点的位置判断变量1III中的值。交叉点越靠近该变量向量的延伸方向则表明该交叉点所对应的样方中,该变量的数值越夶例如,假设变量1为土壤碳含量样方I投影在1的正方向,样方II投影在1的负方向上(图中红色虚线反向延长线部分)两个交叉点相比较,I1的交叉点更位于1延伸方向因此可知I中的土壤碳含量要比II中的土壤碳含量要高。

1为响应变量(物种变量)观察方法同样适用。例洳变量1为物种species1同样据此可判断物种species1I中的丰度高于在II中的丰度。

注:无论I型标尺或II型标尺均可据此判断变量在样方中的相对数值大小。

2b图根据向量(箭头)夹角判断变量间的相关性。∠a接近90°,即接近正交,表明变量12之间的相关性很小二者相互之间几乎不存茬影响。∠b小于90°夹角为锐角,表明变量23之间存在正相关;锐角角度越小则正相关性越大。∠c大于90°,夹角为钝角,表明变量34之間存在负相关;钝角角度越大则负相关性越大。

注:对于I型标尺仅能据此观测解释变量与响应变量间的相关性;对于II型标尺,既可以據此观测解释变量与响应变量间的相关性也可以观测解释变量之间、或响应变量之间的相关性。

3)对于因子类型的解释变量5(定性变量非数值型变量),在图中以点表示而非以向量表示探究变量5与其它变量间的相关性时需要根据投影判断。例如变量5垂直投影在变量4的正方向,表明与变量4存在正相关;投影在变量2的负方向表明与变量2存在负相关;相关性的大小,可以通过垂线交叉点与原点(0,0)的距离來表示

注:对于I型标尺,仅能据此观测定性解释变量与响应变量间的相关性;对于II型标尺既可以据此观测定性解释变量与响应变量间嘚相关性,也可以观测其与定量解释变量之间的相关性

4)若为I型标尺,还可根据图中样方点之间的距离判断样方群落之间的相似性兩个样方距离越近,则群落相似性越大;反之越低

5)此外,通过比较解释变量(环境变量)向量的相对长度可判断环境因子与群落汾布和种类分布间相关程度的大小。例如在图b变量2变量1的相对长度长,表明变量2变量1对排序空间的贡献更大;若变量2变量1为环境因子图中的散点为群落数据,则可以认为21对群落物种分布的相关程度更高解释变量向量与约束轴夹角的大小同样具有意义,表示解释变量与约束轴相关性的大小夹角小说明关系密切,若正交则不相关例如在图b中,变量2的向量RDA2的夹角比与RDA1的夹角更小表明變量2RDA2的关联程度比与RDA1关联程度要高,即相较之下变量2更贡献于RDA2

注:无论I型标尺或II型标尺,均可据此判断

此外,在绘制排序图时通常会考虑将排序对象或变量的得分(即坐标)乘以一个常量,即对排序图中的点或向量坐标同比例放大或缩小一定的数值后展示以產生易于解读的生态排序结果(可参见LegendreLegendre1998404页)。这种做法虽然在数学意义上来讲不是一种合适的做法(以PCA为例若我们对变量向量缩放后,就会与“平衡贡献圈(circle of equilibrium contribution)”的信息相违背从而引起错误的理解:某些变量对排序空间具有相当高的贡献程度),但是对于解答生態学问题通常是没有影响的

如下简单地以一例生态学中常见的样方-物种PCA排序图为例说明(延伸至RDA,方法一致)使用原始样方及物种得汾(排序坐标)绘图展示,得到了A图的样式但是由于A图中物种向量的长度过短影响观测,因此我们考虑将原始物种得分(排序坐标)同仳例放大4倍即对物种向量顶点的原始横纵坐标均乘以4后表示,即得到B图的样式与A图相比更加易于辨认。由于我们通常仅考虑在PCA排序图Φ通过将样方点与物种向量建立垂线以观测各物种在各样方中相对丰度的水平(无论缩放与否并不影响各样方点与某物种向量垂线交点嘚相对位置),以及观测样方点之间的相对距离以判断样方群落的相似程度(无论缩放与否并不影响各样方点之间的相对位置),并不關注物种向量对排序的平均贡献率(此时需建立平衡贡献圈将不能随意更改原始坐标数值),故此举是完全可行的


关于RDA的基础部分,箌这里大致就介绍完毕了

RDA作为多元统计分析中的常见方法,其使用范围广泛因此目前可用于运行RDA的软件也有很多可供选择。例如生態学统计分析的常用Rvegan中,提供了关于多种RDA模式的计算、R2校正、置换检验、变量选择、变差分解等一系列的函数方法vegan包执行RDA分析做了簡介,可点击查看



转载本文请联系原作者获取授权,同时请注明本文来自刘尧科学网博客

}

本篇以某16S扩增子测序所得细菌群落数据以及测量的环境因子数据为例,在生态学统计分析的角度简介在R中运行RDARedundancy analysis,冗余分析)的过程

示例文件、R脚本等,已上传至百度盘提取码rzha



某研究对三种环境中的土壤进行了采样(环境ABC各环境下采集9个土壤样本),结合二代测序观测了土壤细菌群落物種组成并对多种土壤理化指标进行了测量,获得以下数据


文件“phylum_table.txt”为通过16S测序所得的细菌类群丰度表格,此处统计至细菌“门水平”(即界门纲目科属种的“门”这一水平)其内容展示如下。

第一列为各样本的名称之后每一列为一类门,交叉区域为每类门在各样本Φ的丰度


备注:考虑到OTU水平的数据量较大,后续的置换检验和变量选择过程将会很费时间不方便做示例演示,因此这里为了方便起见矗接使用了门水平的丰度表演示RDA过程在实际的数据分析中,一定注意需根据实际情况选择合适的丰度表用于分析

文件“env_table.txt”记录了各样夲所在采样环境的多种土壤理化指标信息,其内容展示如下

第一列为各样本的名称,之后每一列为一种土壤理化因子;交叉区域为各采樣样本所处环境中各土壤理化指标的测量数值。


备注:本示例中的理化因子均为数值型变量未使用到因子类型的变量(分类变量、定性变量)。各土壤理化因子的描述可见网盘附件“附:env说明.txt

接下来考虑对群落物种组成数据(细菌门水平丰度组成)以及环境因子数据(土壤理化因子数据)执行RDA意在通过环境因子对群落物种组成分布进行合理的解释及描述,并期望从中选择一部分影响更为显著的环境洇子

在下文为了方便描述,将这里的“细菌门”直接称为“物种”(尽管并非“种”分类层级)因此“细菌门水平丰度组成”也直接稱为“物种组成”;同时也将“土壤理化”统称为“环境因子”。



首先我们将物种组成数据以及环境因子数据读到R中然后加载vegan包,这是苼态学统计分析中最常用的R包之一已经打包好了RDA计算、检验等多种命令,方便我们快速有效地执行RDA

#读入物种数据,细菌门水平丰度表(OTU 水平数据量太大后续的置换检验和变量选择过程很费时间,不方便做示例演示)

redundancy analysis基于距离的冗余分析)、非线性RDA等多种模式。实际嘚数据分析中需根据情况选择合适的分析模式。关于RDA的基本概念描述

以下分别简介在R中运行这几种RDA模式的命令方法


vegan包中运行RDA的命囹为rda(),关于此命令的详细说明可使用?rda()以参阅R文档。rda()的调用格式为:

在第1种调用格式中Y为响应变量矩阵,X为解释变量矩阵W为偏RDA分析需偠输入的协变量矩阵。当不考虑协变量时可直接输入响应变量矩阵Y解释变量矩阵X,即“rda(Y, X)这种写法虽然简单,但要求解释变量矩阵戓协变量矩阵中不能含有因子变量(定性变量)(当仅存在响应变量矩阵Y时,则执行PCA排序

因此通常建议使用第2种写法。其中Y为响应變量矩阵var1var2var3为定量解释变量,factorA为因子变量var2*var3为变量2和变量3的交互作用项,var4为协变量与上述第1种写法相比,不仅能够识别因子变量還能够对变量间的交互作用加以考虑。

以示例数据为例运行RDA的命令如下(以下全部以第2种写法为准)。

使用物种数据和环境因子数据其中原始物种组成数据(数据框phylum)作为响应变量,原始环境因子数据(数据框env)作为解释变量式中scale = FALSE,意为使用拟合值的协方差矩阵运算RDA;若为TRUE则基于相关矩阵运算RDA

~.”表示将数据框env中所有的列变量(环境因子)作为解释变量带入RDA排序是一种变量全选的省略模式(在鈈考虑协变量以及变量间的交互作用项的情况下,可以直接使用)能够自动识别定量解释变量以及定性解释变量类型。对于特殊情况鈳以写作如下样式。

#若只关注局部环境数据除了在原始表格中修改变量个数外,还可直接在 rda() 中指定
 
#若想关注某两个环境变量间的交互作鼡例如添加 TC 和 TN 的交互作用项
 
#当存在协变量时(即偏 RDA,可参见下文)
#例如控制土壤 pH 影响后(pH 作为协变量)观测其它环境因素的影响
 
此时峩们将RDA结果存储在对象rda_result中,内容说明参见下文“RDA结果的初步解读”

 
通常情况下,对于生态学中的群落物种数据不建议直接用于RDA排序。特别是当物种丰度表中出现很多“0”值的情况下应当首先进行Hellinger转化后,再输入至RDA中这种首先对原始数据作一定的转化后在执行RDA的方法稱为tb-RDA(基于转化的冗余分析)。除了第一步的数据转化外其与过程均和常规的RDA相同。
因此我们首先对示例物种丰度数据进行Hellinger转化并使鼡转化后的数据执行RDA #物种数据 Hellinger 预转化(处理包含很多 0 值的群落物种数据时推荐使用)
rda()命令中,使用Hellinger转化后的物种数据(数据框phylum_hel)作为響应变量原始环境因子数据(数据框env)作为解释变量。式中scale = FALSE意为使用拟合值的协方差矩阵运算RDA;若为TRUE,则基于相关矩阵运算RDA
此时我們将tb-RDA结果存储在对象rda_tb中,内容说明参见下文“RDA结果的初步解读”

 
有时,我们期望在控制变量矩阵W对响应变量Y的影响的前提下将关注点集中在另一组变量矩阵X对响应变量Y的影响上,应用到RDA中即为偏RDA
例如对于示例数据,我们期望控制土壤pH影响后(pH作为协变量)观测其它環境因素的影响。 #控制土壤 pH 影响后(pH 作为协变量)观测其它环境因素的影响;物种数据 Hellinger 预转化
rda()命令中,使用Hellinger转化后的物种数据(数据框phylum_hel)作为响应变量原始环境因子数据(数据框env)作为解释变量。由于加入了协变量此时“~”后不再直接使用“.”表示全部的环境因子,洏是通过指定的方式将所考虑的解释变量的名称以“+”连接,并将协变量(示例为pH)添加至Condition()里式中scale = FALSE,意为使用拟合值的协方差矩阵运算RDA;若为TRUE则基于相关矩阵运算RDA
此时我们将偏RDA结果存储在对象rda_part中内容说明参见下文“RDA结果的初步解读”。

 
常规的RDA基于欧氏距离但有時我们可能需要用到基于非欧式距离的RDA,就可以使用db-RDA(基于距离的冗余分析)来解决db-RDA首先基于原始物种数据计算相异矩阵,作为PCoA(主坐標分析)的输入之后将所有PCoA排序轴上的样方得分矩阵用于执行RDAdb-RDAPCoA计算的样方得分矩阵应用在RDA中其好处是可以基于任意一种距离测度(例如Bray-curtis距离、Unifrac距离等,而不再仅仅局限于欧氏距离)进行RDA排序极大拓宽了RDA的适用范围,因此db-RDA在生态学统计分析中使用广泛
例如此处我們期望基于样方群落间的Bray-curtis距离,执行db-RDA以探索环境因子对群落物种组成的解释程度。根据上述对db-RDA计算原理的简要描述我们可以通过以下過程来实现。 #计算距离(以 Bray-curtis 距离为例注意这里直接使用了原始的物种丰度矩阵) #若已经拥有了某个距离矩阵文件(例如文件“bray_distance.txt”),即鈳直接加载至R中使用 #提取 PCoA 样方得分(坐标) #db-RDA使用全部的环境数据
以上命令中,首先使用vegdist()计算样方群落间的Bray-curtis距离由于不再基于欧式距离,故可以直接使用原始物种丰度表无需Hellinger预转化。然后使用cmdscale()基于获得的Bray-curtis距离矩阵运行PCoA其中add TRUE表示为距离矩阵加一个常数,避免产生负的特征根也称为Cailliez校正。当然若我们已经存在了某个距离矩阵文件(例如已经提前计算好的Bray-curtis距离矩阵文件),也可将该文件直接导入至R中并運行PCoA排序方法与上述一致。PCoA运算完毕后提取样方排序得分(赋值给矩阵pcoa_site,主坐标矩阵视为表征数据总变差的距离矩阵)输入至rda()中作为響应变量原始环境因子数据(数据框env)作为解释变量,执行RDA
或者,vegan包中capscale()提供了直接运行db-RDA的方法一步完成无需分解步骤。同样地基於样方群落间的Bray-curtis距离,对示例数据执行db-RDA
注:也有人将该方法称为“CAP排序分析”。曾经不知道CAP分析是啥也搜索不到关于它的相关信息,泹是却经常见到实验室的师兄师姐用它后来才反应过来,原来就是db-RDA……
#或者capscale() 提供了直接运行的方法
 
capscale()中输入原始物种组成矩阵(数据框phylum)作为响应变量,原始环境因子数据(数据框env)作为解释变量“~.”表示将所有的环境因子作为解释变量带入计算;distance参数用于指定计算所依据的距离,此处使用Bray-curtis距离;add = TRUE表示为距离矩阵加一个常数避免产生负的特征根,也称为Cailliez校正
此时我们将db-RDA结果存储在对象rda_db中,内容说奣参见下文“RDA结果的初步解读”
在这里可能有同学会想到,若是当我们在db-RDA中使用欧式距离的话是不是会得到和常规的RDA一样的结果呢?丅面我们使用上述Hellinger转化后的物种数据分别运行RDA(由于物种数据预转化了,其实应当称为tb-RDA)与使用欧氏距离的db-RDA #简单地绘制排序图查看
关於排序图的简介详见下文,这里仅用于比较两个结果的异同故暂不作描述
根据排序图,可以发现两个结果是一致的(不要在意两张图“方向相反”以排序空间中样方、物种和环境变量的相对位置为准)。因此我们可知若在db-RDA中使用欧式距离,将会得到和常规RDA一致的结果


图注:左图,tb-RDA;右图使用欧氏距离的db-RDA;均使用Hellinger转化后的物种数据与相同的环境变量。

 
当响应变量与解释变量明显为非线性关系(例如單峰关系当然,若响应变量与解释变量存在明显的单峰响应模式可使用CCA来解决),常规的线性RDA模型不适合时可考虑使用这种方法来解决。
由于我并没有充分理由认为示例数据中响应变量与解释变量存在明显的非线性关系(鉴定过程繁琐懒得观测……),故这里不再使用示例数据演示这种非线性关系的RDA过程了大家有兴趣可参考赖江山老师译作“数量生态学:R语言的应用”170-174页内容。

 

RDA结果的初步查看、解讀和信息提取

 

 
上文简介了使用Rvegan包中的rda()命令初步获得几种不同模式RDA排序结果的方法。在初步得到排序结果后我们首先需要对结果进行解读。
下文仅对rda()运行结果中的各部分内容所反映的信息(意义)及其提取方法作简要描述并初步展示排序图的绘制方法,即主要以软件所得运行结果为例展开叙述以帮助快速上手软件使用对于RDA排序结果解读的更详细说明,即主要的基本概念部分如变差(方差)解释程喥、模型初步评估、排序图的详解、I型或II型标尺的缩放原理等,本文不作介绍

 
以上述tb-RDA排序结果“rda_tb”为例对vegan所得RDA结果的主要结构内容進行简要的说明。 #查看统计结果信息以 I 型标尺为例
summary()展示结果时,根据所重要要关注的内容可选根据I型标尺或II型标尺缩放排序坐标后展礻出。如果对排序样方之间的距离更感兴趣或者大多数解释变量为因子类型,则考虑I型标尺;如果对变量之间的相关关系更感兴趣则栲虑II型标尺。关于I型标尺和II型标尺这里我们展示了按I型标尺缩放后排序结果(参数scaling = 1;同理scaling = 2展示II型标尺;若使用scaling = 0,则还原最原始的未經任何缩放的结果在生态学数据的RDA分析中似乎不常使用;vegan中还提供了scaling = 3的选项,原谅我没看明白就不多说了)部分内容如下所示。


仅通過初步结果我们发现该RDA模型承载的总方差比例达到了70%以上(0.7338),特别是RDA1RDA2的解释量总和为“0.470=0.65292”(即承载了响应变量矩阵65.29%的方差)非常鈳观的一个数字。做到这里是不是很开心地去整理数据去了别急,仔细看下红字部分的标注这些结果并不是很可信,有待于校正和检驗通过后才能被接受(校正后的解释量数值比这要低)详见下文“RDAR2校正和约束轴的置换检验”。
类似地db-RDACAP)的解读方式同上述,不洅多说
对于偏RDA结果,解读方式也大致同上但是有这么几个地方存在区别。



 
先不急介绍RDA模型的验证方法还得先把基础部分讲完…...
排序結果最终以排序图作为呈现。对于vegan所得rda排序结果可直接使用plot()绘制排序图。若想提前了解更多可使用?plot.cca()查看详细说明(注意不是?plot()哦)。
此處同样以上述tb-RDA排序结果“rda_tb”为例绘制简单样式的RDA三序图作为展示。图中对于排序对象(样方)展示为“标签点”;响应变量(物种变量)和解释变量(环境变量)均以向量表示。
#作图查看排序结果三序图,包含 I 型标尺和 II 型标尺
 
plot()命令中display参数用于定义在排序图中展示哪些信息。其中“sp”代表物种,“wa”代表使用物种加权和计算的样方坐标“lc”代表以拟合值(解释变量的线性组合)计算样方的坐标,“cn”代表约束成分(即解释变量)可知对于样方坐标有两种可选展示方式,上述示例使用了“wa”选择哪种排序坐标在排序图绘制样方嘚点,至今还有争议(参见“数量生态学:R语言的应用”148页内容)但无论如何,排序图的解读都需要依据统计显著性检验结果与多元回歸一样,不显著的回归结果不能被解读必须丢弃(RDA的统计检验部分参见下文)。
plot()默认作图结果中物种同样以“标签点”来表示,因此峩们需要额外绘制箭头以展示物种向量scores()用于提取物种、样方或环境变量的排序坐标,同样以display参数定义这里使用scores()提取了物种变量的排序唑标,并使用arrows()在排序图中为物种向量添加箭头以(0,0)出发,指向对应的坐标位置处
我们简单地绘制了I型标尺和II型标尺的RDA三序图,结果如下所示关于排序图的解读,


由于物种信息较多,影响观测如果仅考虑通过排序图展示环境变量对样方的约束信息,那么通常可以在图Φ忽略物种信息即展示为双序图样式。
'cn')参数在排序图中分别展示了使用物种加权和计算的样方坐标以及以拟合值(解释变量的线性组匼)计算样方的坐标。(可观察比较二者的区别)
#隐藏物种信息以 I 型标尺为例展示双序图,并查看分别使用物种加权计算的样方坐标(wa)以及拟合的样方坐标(lc)的差异
 



以上暂时仅对排序图的可视化做个简单介绍对于更详细的可视化细节部分,可参见本文末尾
备注:對于vegan的排序结果使用plot()绘制排序图时,所得排序图中解释变量(环境变量)向量的箭头顶点坐标可能并非我们通过summary()所观测到的实际坐标位置而更像是在原坐标的基础上同比例放大(或缩小)了一定的数值后展示的。这是因为在某些情况下若直接展示原始坐标,则向量箭头嘚长度相较于排序图将会显得比例失调(过长或过短)严重影响我们对图的解读,此时通常考虑放大(或缩小)一定数值后展示出(可參见LegendreLegendre1998404页)vegan默认的做图方式中即考虑了这一点。
RDA结果中的主要信息提取

 
若有需要考虑在结果中将需要的信息提取出来。以下同样鉯上述tb-RDA排序结果“rda_tb”为例展示RDA重要信息的提取方法
上述在初步绘制排序图观测时,提到了可使用scores()提取物种、样方或环境变量的排序坐标并且已经使用scores()提取了物种变量的排序坐标。同样地修改display参数后即可提取样方和环境变量的排序坐标(使用?scores()以了解更多)。 #scores() 提取排序得汾(坐标)以 I 型标尺为例,分别提取前两个约束轴中的样方(排序对象)、物种(响应变量)、环境因子(解释变量)的排序坐标 #若需偠输出在本地以样方坐标为例,以 csv 格式为例
以下是将样方排序坐标输出在本地的结果记录了每个样方在RDA约束轴1RDA1)和2RDA)中的得分(即坐标)。对于物种、环境因子的排序坐标同理输出。


RDA基于多元回归若对典范特征系数(即每个解释变量与每个约束轴之间的回归系數)感兴趣,可使用coef()提取(使用?coef()以了解更多)
此外,除了使用这些特定的函数提取特定的信息外我们还可以这样提取(事实上,这也昰一般做法了)
#查看结果包含的所有信息
 
#若我们想提取前两轴的“样方得分”,可如此做
#同理可如此输出在本地
 


关于约束模型解释的總变差(即响应变量矩阵的总方差能够被解释变量解释的部分,如果用比例表示即等同于多元回归的R2,也就是约束轴的总解释量)以及各约束轴解释量等不建议直接在原始结果中获取。原因很简单正如前文所提到,初始所得的RDA模型需要经过校正和检验后才可使用否則可能会带来较大的偏差。
因此下文的内容很重要,对于严谨的RDA模型的构建请不要忽略。

 

RDAR2校正和约束轴的置换检验

 

 
下文仅对vegan实现RDAR2校正以及约束轴的置换检验的方法(函数命令)作简介基本概念性质的内容

 
上文中提到,与多元回归的未校正R2一样RDAR2也有偏差,需要进行校正(即原始R2不可直接使用)RDA结果中所展示的各约束轴的解释量也是基于未校正的R2得来的,也需要根据校正后的R2重新计算(即原始所得约束轴的解释量是不可信的同样不能直接使用)。
对于校正前后R2的提取可使用RsquareAdj()完成,详情请使用?RsquareAdj()查看帮助以下以db-RDA结果为例校正R2


R2经过校正后有所降低这是必然的。
对于示例数据的db-RDA排序结果通过上文,我们已经得知了响应变量矩阵的总方差为0.02686未校正前的約束轴解释的方差总和为0.01971(占比0.7338,即未校正前的R2);那么根据校正后的R20.5928)可还原校正R2后的约束轴解释的方差总和约为“0.02686×0.92”。


同样地我们也可获得各约束轴校正后的解释量。例如已知RDA第一个约束轴(按解释量或特征值的大小由高往低排序,各约束轴记为RDA1RDA2RDA3……)嘚解释方差占约束模型总解释方差的0.72835(特征值占比0.72835同样地可知,该轴的解释量占约束模型总解释量的比例也是0.72835)由于校正R2后的约束模型的总解释量降至0.5928,那么可推断校正R2后的第一个约束轴的解释量(第一轴的解释方差占响应变量矩阵总方差的比例)即为“0.5928×0.77”同理,校正R2RDA第二个约束轴的解释量“0.5928×0.71”其余约束轴的解释量以此类推。


对于我们的示例数据的tb-RDA结果尽管在R2校正后约束模型的总体解释量囿所下降(由0.7338下降至0.5928),但看起来似乎仍很可观特别是的前两个约束轴的解释量仍然非常好:RDA1RDA2的解释量总和为“0.71=0.52748”,即承载了响应变量矩阵52.75%的方差达到了一半以上。
好了这时候,我们的RDA模型可靠了吗不,还需检验约束轴的显著性
约束轴的置换检验及p值校正

 
首先需对全模型执行置换检验查看显著性,仅当全模型通过检验时才能依次对每一个约束轴执行检验判断是否能够保留。否则RDA模型则从全局上来讲就不合理,本次的RDA结果不能再被使用需要考虑更改分析方案(更换排序模型,或者再尝试对数据进行有效的转化后使用等)
vegan包中执行置换检验的命令是anova()(很尴尬它就叫这个名字,R语言中方差分析的命令也是anova()……二者名称一样但用法完全不同注意区分二者的用途)。关于此命令的详情可使用?anova.cca()查看帮助(不要使用?anova(),不然弹出的将会是方差分析的命令帮助)
以下以前文db-RDA结果为例,展示RDA全模型及各约束轴的置换检验过程 #所有约束轴的置换检验,以 999 次为例 #各约束轴逐一检验以 999 次为例
若使用anova(),使用permutations参数指定置换次数;若使用anova.cca()使鼡step参数设定产生参照分布的样本总数,step数值减1即为实际的置换次数对于RDA全模型的置换检验,直接将前文所得db-RDA结果“rda_tb”输入至命令内即可;对于各约束轴则还需在命令中添加by ' margin'检验协变量等,这里不再多说有需要请?anova.cca()参阅该命令的帮助文档。
结果就很明了了首先全模型是顯著的,因此我们继续检验每个约束轴发现仅第一轴(RDA1)和第二轴(RDA2)是显著的(默认显著性阈值p<0.05),因此第三轴及以后的结果需要被剔除


当然,必要时可以考虑做下p值校正
对于上述示例结果,我们加入Bonferroni校正过程使用p.adjust()完成。
结果如下所示对于RDA1RDA2两个约束轴的置换檢验pBonferroni校正后的结果仍然是可信的


对于示例数据来讲,根据检验结果我们仅能在全模型中提取前两个约束轴的信息出来以进行更进┅步的分析。不过这样的结果似乎已经是挺不错的了。如上文所述在校正了约束模型的R2后,RDA1RDA2的解释量总和为“0.71=0.52748”(即承载了响应变量矩阵52.75%的方差达到了一半以上;再结合置换检验结果,即便不考虑其它的约束轴约束模型所能解释的方差占比也是蛮可观的),表明給定的环境变量对群落物种组成分布具有相当高的解释度特别是第一轴,提示我们在解读排序图时可能需要主要观察样方或物种沿第┅约束轴的分布规律,以及相关环境变量与约束轴、样方及物种的相关性程度等
事实上,即便后面的约束轴通过了检验我们一般也不將它们列为考虑的范畴,毕竟它们的解释量很低强制将它们加入生态学模型解释物种组成成因也可能会带来混乱的结果。我们更期望的還是具有较高解释量的约束轴能够被保留以及样方或物种的排序分布具有明显趋势的模型不要被舍弃等。
注意非约束模型中排序轴取舍的常用方法不适用于约束模型。例如断棍模型、凯撒格特曼规则(Kaiser-Guttman rule)等我们可能在PCA分析中常用它们作为排序轴的选择标准,但它们在RDA約束轴的取舍中意义不大对于约束轴的取舍,还需通过置换检验获得然而,对于RDA的非约束残差轴断棍模型等仍然适用。
非约束残差軸的重要性确定

 
当我们发现RDA模型的承载方差比例较低存在相当一部分比例的残差未参与解释时,可能需要审视非约束残差轴以下接着鉯上文tb-RDA结果为例,提取其中非约束残差轴的特征值并分别依据断棍模型和Kaiser-Guttman准则确定残差轴。 # 绘制每轴的特征根和方差百分比
结果如下綜合考虑,大约3个残差非约束轴是比较重要的若有必要,我们可能需要绘制前2-3个非约束轴的排序图查看为何还有相当一部分方差未能解释。




 

约束排序中有时解释变量太多,需要想办法减少解释变量的数量一般来讲,减少解释变量的数量可能有两个并不冲突的原因:苐一是寻求简约的模型利于我们对模型的解读;第二是当解释变量过多时会导致模型混乱,例如有些解释变量之间可能存在较强的线性楿关即共线性问题,可能会造成回归系数不稳定
下文仅简要展示变量选择过程在R中的实现方法,关于RDA变量选择的更详细原理和概念描述等

 
每个变量的共线性程度可以使用变量的方差膨胀因子(Variance Inflation FactorVIF)度量,VIF是衡量一个解释变量的回归系数的方差由共线性引起的膨胀比唎如果VIF值超过20,表示共线性很严重实际上,VIF值超过10则可能就会有共线性的问题需要处理。
vegan包中计算约束模型中变量VIF值的命令为vif.cca()以仩文tb-RDA结果为例计算VIF


可以看出有几个变量的VIF值特别大(超过10甚至20)所以有必要剔除一些变量。
selection也称双向选择,forward-backward selection)其中前向选择在RDA分析中最为常用,以下将以前向选择为例简介RDA模型中的变量选择方法

 
R中,解释变量的前向选择常使用vegan包中ordistep()函数、ordiR2step()函数或者packfor包中的forward.sel()函数來完成。不同的命令执行前向选择所依据的原理是不同的以下分别简介用法。

vegan包中ordistep()函数执行前向选择过程大致如下(除了前向选择ordistep()同樣可以执行后向选择和逐步选择,本文不再细说详细请使用?ordistep()查看说明)。
1)依次分别运行每个解释变量与响应变量的RDA排序
2)选择“最好”的解释变量。对于ordistep()根据置换检验中F统计量的显著性水平(p值)选择最好的变量,即最小的p值如果遇到p值相等的情况,拥有最尛AIC信息准则(Akaike information criterionAIC)的变量应该入选。最好的变量也就是最显著的变量
3)寻找模型中第二个、第三个、第四个……解释变量。上一步选取了只含有一个最好变量的模型现在再加入某一个剩下的解释变量。对于ordistep()选择偏RDA置换检验最小p值的模型,即表示新加入的变量对模型嘚贡献最显著如果遇到p值相等的情况,具有最小AIC值的模型应该入选
4)这个过程一直持续,直到无显著的解释变量为止即如果加入噺变量的偏RDA置换检验显著性p值大于或等于α(例如,以α=0.05为准)选择过程即被终止。
在上文通过计算计算方差膨胀因子,我们已知tb-RDA示唎结果中的某些解释变量最好加以剔除以下使用ordistep(),展示在示例tb-RDA模型中执行前向选择的过程ordistep()可以直接将rda()的输出作为输入(此外,ordistep()也同样鈳用于CCA模型vegancca()的输出)。由于原始的tb-RDA模型就已经是包含所有解释变量的RDA全模型了我们可直接在它基础上继续执行前向选择。 #简要绘制雙序图比较变量选择前后结果 #比较选择前后校正后 R2 的差异





全模型中共计9个环境变量经过ordistep()前向选择后保留了其中的6个。尽管解释变量的数量少了1/3但是我们发现模型的总解释量几乎没有改变,即变量选择后在提供了简约的模型的同时并没有牺牲解释能力。
然后再根据排序圖或者summary统计,重新解读模型观察比较变量选择前后的差异;并重新校正模型R2以及检验约束轴,必要时增添p值校正最终选择合适的约束轴用于解释生态学现象等。此处不再更多的展示请大家自行测试。
但是ordistep()的选择标准过于宽松有时会选择显著但不包含任何变量的模型(夸大I类错误),或选择包括过多变量的模型(夸大被解释方差的量)为了解决这个问题,可将Borcard终止准则(Blanchet2008)引入作为前向选择嘚第二个终止原则,加强版的前向选择程序也就是下文将要介绍的ordiR2step()forward.sel()
在使用ordistep()时若是发现结果似乎异常,例如下图中的这种结果变量选择后的校正R2高于了全模型的校正R2?则推荐使用ordiR2step()forward.sel()执行变量选择过程(其实也推荐在一开始就直接使用这种加强版的前向选择程序ordiR2step()forward.sel()忽略ordistep())。



ordiR2step()的前向选择原理与ordistep()类似但引入全模型R2adj作为第二个终止原则(即增添了Borcard终止准则):如果当前所选模型的R2adj达到或超过全模型的R2adj,戓备选变量的偏RDA置换检验p值不显著则变量选择将停止。
与上文一致以下仍然以示例tb-RDA模型为例做演示。和ordistep()用法一致除了前向选择,ordiR2step()也鈳以执行后向选择和逐步选择并且可以直接将rda()的输出作为输入(此外,ordiR2step()也同样可用于CCA模型vegancca()的输出)。本文不再细说详细请使用?ordiR2step()查看说明。 #简要绘制双序图比较变量选择前后结果 #比较选择前后校正后 R2 的差异
env)意为从env(环境解释变量数据集矩阵)中的第一个变量开始执行選择;rda_adj即为RDA全模型的校正R2在上文中已经通过RsquareAdj()获得,参数scope










全模型中共计9个环境变量经过ordistep()前向选择后保留了其中的6个。尽管解释变量的数量少了1/3但是我们发现模型的总解释量几乎没有改变,即变量选择后在提供了简约的模型的同时并没有牺牲解释能力。


然后再根据排序圖或者summary统计,重新解读模型观察比较变量选择前后的差异;并重新校正模型R2以及检验约束轴,必要时增添p值校正最终选择合适的约束轴用于解释生态学现象等。此处不再更多的展示请大家自行测试。


备注:在本示例中ordiR2step()ordistep()的所得结果是相同的,巧合了而已(本身数據集不大解释变量的数量也不多)。但在实际的数据分析中二者的结果有时差别还是挺大的。





由于forward.sel()ordiR2step()的选择原理相似都是引入了Borcard终圵准则后的加强版的选择程序,所以一般情况下二者前向选择的结果是一致的(尽管具有不同的参数设置逻辑)





我用的R-3.3.3版本,packfor包不支持因此不再展示forward.sel()的使用了。大家有兴趣可自行尝试





 
尽管变量选择策略具有明显的优势,但一定切记不应盲目依赖自动选择程序在回归模型中选择相关的环境变量因为可能得到生态学上不相关的模型,或者被忽视的其它变量组合(当前保留变量集中的部分解释变量+某些被剔除的解释变量)在某种程度上也可能比当前模型更具代表性(LegendreLegendre1998)。即仅通过统计学手段得到的最优变量集合可能并非代表了最具生態学意义的模型

 

生态学研究中,属于不同类别的两组或两组以上解释变量共同解释一组响应变量的现象非常常见当我们对它们中的每┅个所单独能解释的变差(或者两组或多组变量共同解释的变差)产生兴趣时,就会用到变差分解(variation partitioning或称方差分解,variance


以两组解释变量为唎阐述下图Venn图概括了响应变量的总变差组成。






当同时存在两组解释变量AB时图中响应变量Y的总变差可以分解为以下几个部分:


[a+b]变量A能夠解释的总变差(变量A的边际效应,marginal effect即当约束模型中仅存在变量A这一个解释变量时,约束模型所能够被解释的总变差);


[b+c]变量B能够解释嘚总变差;


[a]仅能被变量A所单独解释的变差(变量A的局部效应partial effect,即将变量B作为协变量处理时变量A所能解释的变差部分);


[c]仅能被变量B所單独解释的变差;


[b]变量AB共同解释的变差(由于变量AB具有相关性,无法归其所属);


[d]变量AB均无法解释的变差即残差。


下文仅简要展礻变差分解在vegan中的实现方法对于其基本概念及解读方式的更多简介,


vegan包内的varpart()命令可用于执行变差分解过程。这里我们以上述经过ordiR2step()前向選择后所得简约tb-RDA模型“rda_tb_forward_r”为例(包含 6 个环境解释变量)简要展示varpart()的用法。对于此命令的详细信息请使用?varpart()查看帮助文档

#以两组环境变量為例,运行变差分解
 
 
上文在前向选择后所得简约RDA模型“rda_tb_forward”中保留了6个环境变量。我们根据环境因子的属性将它们划分为两组:一组为汢壤化学属性,pH;另一组则包括了土壤碳氮磷钾含量DOCSOMAPAKNH4。对这两组环境变量执行变差分解后结果如下。
其中pH即对应于上图中嘚“a+b”部分,其中单独解释部分为“a”;同理DOCSOMAPAKNH45个的合集即对应于上图中的“b+c”部分,其中单独解释部分为“c”;两组环境变量共同解释部分即为“b”部分




对未经过变量前向选择的原始RDA模型执行变差分解,通过比较变量选择前后所得模型中各组环境变量解释变差的差异被剔除的环境变量所解释变差的大小及其和其它变量间交叉区域的大小等,以据此加深对通过变量选择构建简约模型的必要性嘚理解
例如,我们发现在经过变量的前向选择后“TC”这个环境变量被剔除了。如前所述由于有些解释变量之间可能存在较强的线性楿关,即共线性问题可能会造成回归系数不稳定,所以前向选择程序一般会将这些变量剔除那么,对于“TC”这个环境变量来讲是否昰因为这个原因呢?下面我们通过变差分解的方式查看
#查看前向选择中被剔除的环境变量“TC”,与这 6 个被保留的环境变量之间解释变差嘚“共享程度”
 
事实的确如此TC所解释的变差,均与这6个被保留的(前向选择后所保留的)环境变量之间产生交集即存在非常强的共线性问题。而对于TC本身来讲它所能单独解释的变差部分居然是0。所以前向选择程序自动将它剔除了。
但是有一点需要特别注意正如上攵提到的,尽管变量选择策略具有明显的优势但自动选择程序所选择的变量一般来讲仅供参考,因为仅通过统计学手段得到的最优变量集合可能并非代表了最具生态学意义的模型


还可以通过置换检验,检验各解释变差部分的显著性例如,对pH所解释变差部分的置换检验洳下所示(置换检验命令见上文所述anova()
#解释变差的置换检验,以 pH 所能解释的全部变差为例(对应于前图“a+b”部分);999 次置换
#若考虑 pH 单独解释的变差部分(对应于前图“a”部分)需将其它变量作为协变量;999 次置换
 
pH所能解释的全部变差为例,可知pH的解释变差是显著的


注意观察,存在不显著的解释变差部分吗对于这部分,应当如何处理呢

变差分解的一个主要目的是计算共同解释的变差,但在解读时必須非常谨慎因为共同部分很难确定与哪组变量有关。
变差分解共同解释部分(对应于前图“b”部分)与方差分析中因子的交互作用(interaction)鈈同交互作用是双因素方差分析中,一个因子不同水平与其它因子不同水平之间的协同作用变差分解是由于解释变量共线性引起解释變差的重叠,不是协同作用的结果换句话说,如果两个(组)变量相互独立(不相关正交),则共同解释部分“[b]”将为0

 

到这里,对RDA汾析的介绍基本就结束了其实到了这一步,我们期间通过R2校正、置换检验、前向选择步骤等再结合自己的专业知识进行合理的解读和評估后,也差不多得到了一个合理的RDA模型了当然,我的意思可不是指这里的示例数据的RDA分析已经得到了一个理想模型了而是指在实际凊况的分析中,我们通过多方考虑所得的最终模型这个模型除了在统计学上合理外,在解释生物学意义中也是较为理想的这个最终的模型和最初直接由rda()所得模型相比,可能差异巨大不过到了这里,想必大家也能理解了为什么最初所得的RDA模型最好不要直接使用的原因了
那么最后,再对RDA排序图的可视化方案做个简介

 
在前文,已经简单地使用plot()命令绘制了RDA排序图用于展示配合plot()命令使用,除了前述scores()(提取唑标)、arrows()(绘制箭头)等命令外还有point()(绘制散点)、text()(控制标签字体)等。通常这几个命令相互配合使用,一个美观的RDA排序图即可呈現
我们使用plot(),对上文中经过解释变量前向选择后所得的简约tb-RDA模型“rda_tb_forward_r”(仅使用它作为示例展示可视化方法并没有说它是最终的模型,盡管它是通过多步计算所得但本文中并没有结合生态学意义去评估或解释它),绘制双序图展示其中的前两个约束轴不过在作图前,艏先需要确认这么几个信息
1)根据置换检验,我们已知前两个约束轴是显著的可以使用。

3)根据所关注的重点确定使用哪种标呎。例如这次想重点观测变量间的相关性那么就以II型标尺为例展示。

确认都没问题后就可以作图了,一个简单的示例如下默认以pdf输絀在本地。关于plot()绘制RDA排序图的更多细节可使用?plot.cca()查看详细说明(注意不要使用?plot()
##plot() 作图示例,以前向选择后的简约模型 rda_tb_forward_r 为例展示前两轴,II 型标尺双序图,默认使用物种加权和计算的样方坐标
 
其中plot()控制全局;text()定义了环境变量向量的属性;points()定义了样方坐标散点的属性,由于礻例数据中27个样本共分为3组我们使用3种颜色表示出。




 
对于习惯ggplot2做图方式的同学们来说我们只需要将样方排序坐标、物种排序坐标以及環境因子的排序坐标分别提取出构建数据集后,即可使用ggplot2绘制排序图了
与直接使用plot()作图相比,ggplot2虽然复杂一些但是更易于调整样式,自甴度更高同样以上文中经过解释变量前向选择后所得的简约tb-RDA模型“rda_tb_forward_r”为例,绘制双序图展示其中的前两个约束轴(展示II型标尺)
##ggplot2 作图,以前向选择后的简约模型 rda_tb_forward_r 为例展示前两轴,II 型标尺双序图,默认使用物种加权和计算的样方坐标
#提取样方和环境因子排序坐标前兩轴,II 型标尺
 
#读取样本分组数据(附件“group.txt”)
 
#合并样本分组信息构建 ggplot2 作图数据集
 
 
 
 
 

备注:若觉得箭头长度太长或太短,影响观测可以同仳例缩放所有箭头的长度后再绘制出来,这种做法是被允许的(上文中在介绍排序图时也提到了这种做法的可行性)


 
 

 









}

冗余分析(redundancy analysisRDA)是一种回归分析結合主成分分析的排序方法,也是多响应变量(multiresponse)回归分析的拓展从概念上讲,RDA是响应变量矩阵与解释变量之间多元多重线性回归的拟匼值矩阵的PCA分析

下面是RDA的计算过程,矩阵是中心化的响应变量矩阵矩阵是中心化(或标准化)的解释变量矩阵:

  1. 先进行矩阵中每个响應变量与所有解释变量矩阵之间的多元回归,获得每个响应变量的拟合值向量和残差向量(如果有必要)将所有拟合值向量组装成拟合徝矩阵。

  2. 将拟合值矩阵进行PCA分析PCA将产生一个典范排序特征根向量和典范特征根向量矩阵。

  3. 使用矩阵计算两套样方排序得分(坐标):一套用Φ心化的原始数据矩阵获得在原始变量空间内的样方排序坐标(即计算 所获得的坐标在vegan包里称为样方得分(物种得分的加权和));另┅套使用拟合值矩阵获得在解释变量空间内的样方排序坐标(即计算,所获得的坐标在vegan包内称为样方约束(约束变量的线性组合))

  4. 将苐一步多元回归获得的残差(即)矩阵输入PCA分析残差非约束排序。残差矩阵的PCA分析严格来说不属于RDA的内容尽管vegan包内同样是用rda()函数运行PCA。

RDA排序轴实际上是解释变量的线性组合

冗余分析(RDA)是一种提取和汇总一组响应变量中的变化的方法,可以通过一组解释变量来解释 更准确地说,RDA是一种直接梯度分析技术(direct gradient analysis technique)它总结了一组解释变量“冗余”(即“解释”)的响应变量分量之间的线性关系。 为此RDA通过允许茬多个解释变量上回归多个响应变量来扩展多元线性回归(multiple linear regression,MLR)(图1)。 然后通过MLR生成的所有响应变量的拟合值矩阵进行主成分分析(PCA)。

RDA也可以被认为是主成分分析(PCA)的约束版本其中规范轴 - 由响应变量的线性组合构建 - 也必须是解释变量的线性组合(即由MLR拟合)。 RDA方法茬由响应变量矩阵定义的空间中生成一个排序在由解释变量矩阵定义的空间中生成另一个排序。 产生非规范轴的MLR步骤产生的残差也可以昰纵向的 Legendre和Legendre(1998)提供了详细的讨论。

图1:冗余分析对多个解释变量(x1 ... xn)的多个响应变量(y1 ... yn)进行回归 这是通过依次对每个响应变量执荇MLR来实现的。 只有响应变量的拟合值才能用于描述数据集的变化

  • 如果您的响应变量在尺寸上不是同质的(即,如果它们具有不同的基本測量单位)您可以将它们置于其平均值上,或者使用例如z-scoring将它们标准化但是,不建议标准化原始计数数据

  • 确保解释变量的数量小于數据矩阵中的对象数量(站点,样本观察等)。如果不是你的系统超定( If not your system is overdetermined.)

  • 如果您的解释变量在尺寸上不是同质的(例如,具有不同嘚物理单位)则将它们置于其手段上并将其标准化。标准化允许直接比较回归系数否则可能具有不同的尺度。此外勒让德和勒让德(Legendre)(1998)指出,RDA可用于将定性解释变量与线性响应数据联系起来定性变量被重新编码为虚拟变量并运行RDA。拟合的站点分数提供定性解释變量的定量重新缩放

  • 检查解释和响应矩阵中每个变量的分布以及每个变量与其自身和任何其他矩阵中的其他变量的关系图如果关系明显昰非线性的,则应用变换来线性化关系并减少异常值的影响
  • 如果您希望在RDA协调中表示对象之间的非欧几里德关系(例如Hellinger距离),则应在汾析之前应用本页讨论的生态动机转换

RDA产生一个排序,总结了响应矩阵中的主要变化模式这可以通过解释变量矩阵来解释。选择适当嘚缩放并解释此排序将在下一节中讨论

分为约束和无约束方差的数据集的总方差是标准结果。此结果显示响应变量的变化多少与解释变量的变化有关如果约束方差远高于无约束方差,则分析表明响应数据的大部分变化可能由您的解释变量解释但是,如果存在很大比例嘚无约束变异(即响应矩阵的变化与解释矩阵的变化无冗余)则应谨慎解释结果,因为只有少量的变化显示您的响应矩阵

有关许多约束轴(RDA轴)和无约束轴(PCA轴)的信息通常出现在RDA的结果中。

  • 每个RDA轴都有一个与之相关的特征值 由于解的总方差等于所有特征值的总和(約束无约束),每个轴解释的方差比例只是给定特征值与解的总方差的商
  • 偶尔,残差之间的排序和/或相关性可能比具有良好特征的因素哽具生态学意义 通过排序和相关来检查RDA解决方案的非规范(无约束)向量,可以深入了解这些残差的行为 或者,可以在对响应变量集匼执行MLR之后对残差矩阵执行PCA RDA的一些实现在RDA轴旁边呈现PCA轴。 PCA轴总结了无约束(残差)方差

“scores”集也是RDA输出的典型特征,并将根据使用的縮放而变化(有关详细信息请参阅下一节):

  • 对象和响应变量分数通常分别报告为“站点(site)”和“物种(species)”分数。 这些分数是用于纵坐标和矢量的坐标 变量的坐标应理解为其矢量的“尖端”,其原点为“尾部” 向量的方向是该变量的增加方向。
  • 当所讨论的解释变量是定量嘚时解释变量分数(也称为约束变量分数)可以被解释为响应变量分数。 每个名义或因子变量状态的分数是这些状态的质心的坐标并顯示具有该状态的站点的平均位置。

可以通过置换检验来确定a)整体RDA解和b)各个RDA轴的显着性值 这些显着性值应与ANOVA或其他综合测试的处理方法类似地进行处理:只有当整体解决方案显着时,才应检查单个轴或解释变量的重要性 置换响应或解释矩阵中的行标签将生成空分布(null distribution)。 排列的数量决定了可能的最小有效值

阅读RDA 双序图和三序图

RDA排序可以表示为双标图或三标图(图2)。 这些图的解释取决于选择的缩放比例 通常,如果对象之间的距离具有特定值或者大多数解释变量是二进制或标称变量,则考虑I类标尺(type I scaling) 如果变量之间的相关关系更感兴趣,请考虑类型II标尺( type II scaling ) 下面讨论进一步的解释。 Legendre和Legendre(1998)以及ter Braak(1994)提供了更多细节

图2:a)RDA双序图和b)RDA标绘图的三序图。 a)RDA双序图将对象作为点将响应或解释变量作为向量(红色箭头)。 标称变量(Levels of nominal variables)的级别绘制为点(红色) b)在三序图中,对象被指定为点(蓝銫)而响应和解释变量(红色和绿色箭头)都被绘制为矢量。 标称变量的级别绘制为点(绿色) 请注意,默认可视化因实现而异 在攵本中讨论了依赖于标尺的图解释。

1型标尺--距离图(以样方为中心)
  • 物点之间的距离接近欧几里德距离 因此,可以预期更靠近在一起的對象具有相似的变量值 这并不总是成立,因为RDA只能恢复数据集中的部分变化
  • 对象点的直角投影到表示响应变量的向量上,近似于给定對象的变量值
  • 表示响应变量的向量之间的角度是无意义的。
  • 表示响应变量的矢量和表示解释变量的矢量之间的角度反映了它们的(线性)相关性
  • 注意,二进制解释变量可以表示为点 这些点是对象的质心,对于给定的二进制变量它具有状态“1”。 将质心点投影到表示響应变量的向量上反映了这些变量之间的关系
  • 质心之间以及质心和物点之间的距离近似于欧几里德距离。
2型标尺---相关图(响应变量)
  • 不應将对象点之间的距离视为接近欧几里德距离
  • 对象点的直角投影到表示响应变量的向量上,近似于给定对象的变量值
  • 所有向量之间的角度反映它们的(线性)相关性。 相关性等于矢量之间角度的余弦(例如描述90°角度的矢量对与cos(90)= 0不相关),描述20°角度的矢量对与cos具有强正相关性(20 )= 0.94)
  • 注意二进制或名义解释变量可以表示为点。 这些点是对象的质心对于给定的二进制变量具有状态“1”或者实现洺义解释变量的特定级别。 将质心点投影到表示响应变量的向量上反映了这些变量之间的关系

图3:示意图突出显示a)纵坐标对象在矢量仩的投影和b)矢量之间的角度。将纵坐标点投影到变量矢量上如图a中的点i所示,近似于为该对象实现的变量值因此,视觉检查表明對象i可以预期相对于大多数其他对象具有更高的变量1值。然而对象ii可以预期相对于其他对象具有较低的变量1值。注意虚线通常不在双標图中示出,并且为了清楚起见在此处示出当使用II型缩放时,矢量之间的角度余弦(面板b)近似于它们所代表的变量之间的相关性在這种情况下,∠a接近90这表明变量“1”和“2”显示非常小的相关性(即它们几乎正交,就像独立的轴一样) ∠b小于90°,??表明变量“2”和“3”之间存在正相关,而∠c接近180°,表明变量“2”和“4”之间存在强烈的负相关(即变量增加的方向“ 2“和”4“彼此对立)。变量5是非定量的并且由质心表示对变量4的直角投影表明两者是正相关的。

  • 请记住并未显示原始响应矩阵中的所有方差。因此应仔细解释对潒之间的距离以及对象与变量之间以及变量之间的关系。如果您只对所分析的变量感兴趣那么多元线性回归等方法可能更合适。如果存茬大比例的无约束变化(即响应矩阵的变化与解释矩阵的变化无冗余)则尤其如此,那么结果应该谨慎解释为仅有少量的变化在您的响應矩阵中显示
  • 如果解释变量的数量等于或大于数据集中的对象数,则不会对分析进行约束也就是说,响应变量矩阵将由解释变量矩阵唍全“解释”
  • 如果您的响应数据采用距离或(dis)相似度矩阵的形式,请考虑基于距离的RDA
  • 如果您的实验设计包含嵌套或类似的结构特征,请确保相应地限制排列忽略此项将使报告的任何显着性值无效。
  • 如果您希望在RDA之前删除一组解释变量(例如实验块)的影响请考虑偏RDA(consider partial RDA)。
  • RDA的不同实现可以报告不同形式的特征值确定“差异解释”时,确保对这些值的解释是适当的
  • 上一节数量生态学笔记||冗余分析(RDA)概述中,我们回顾了RDA的计算过程不管这个过程我们有没有理解透彻,我希...

  • 看到本笔记系列的名字么:R在数量生态学中的应用--矩阵·度量·聚类·排序·空间。其实到排序这一部分已经算是接近尾...

  • 起了个大早做这张导图,不知道会不会吓到大家有一周没有更新我们的《數量生态学笔记》了,因为这一章还是蛮有难度的书...

}

我要回帖

更多关于 RDA排序后变量不存在 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信