查看原文
其他

协惯量分析(CoIA)及其在R中的实现

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-05-08
协惯量分析(CoIA)及其在R中的实现
协惯量分析(co-intertia anaysisCoIA)是一种对称融合排序方法,用于衡量两组数据集之间的一致性(Dolédec and Chessel, 1994)。

 

CoIA概述


CoIA过程可概括如下。

分别在变量矩阵X和Y(X、Y数据集中的对象需一致)的多维空间中,分解总惯量获得一组正交轴(特征向量),它们各自代表了正交方向上的最大化惯量方向。总惯量是数据变异程度的整体度量,如果通过PCA执行特征向量的分解,则过程中的总惯量等于总方差。

协惯量则是对X和Y空间中对象共同结构的全局度量,当X和Y中的变量具有较高的某种相关程度时,协惯量高,当X和Y中的变量趋于独立时,协惯量低。CoIA的目的是确定X和Y空间中具有最大协惯量的两组特征向量,并通过它们计算获得一组协惯量轴,代表正交方向上最大化协惯量的方向,各轴承载的协惯量之和即总协惯量。

上述X和Y在特征分解过程中是各自独立的过程。如果将上述两步统一起来,则也可以这样理解:CoIA中计算了X和Y内变量交叉的协方差矩阵,协方差矩阵的平方和即为总协惯量,协惯量轴则代表了对协方差矩阵的特征分解。

最后将X和Y中的原始对象和变量投影至协惯量轴中,据此判断它们之间的关系。并可结合置换检验,确定CoIA在评估X和Y结构相似程度的有效性。


(图片来源:Dolédec and Chessel, 1994)

在分解X和Y总惯量的过程中,根据实际情况存在多种备选方法,例如PCACA等,并且允许使用不同的方法分别对各数据集分析。因此CoIA可对应多种融合类型,例如PCA-PCA融合的CoIA、CA-PCA融合的CoIA等。除常规的定量数据外,还可通过与多重对应分析(MCA)、模糊主成分分析(FPCA)等的结合,实现对定性数据、模糊数据等的分析,充分体现了CoIA的灵活性。

但是CoIA要求在分别对X和Y执行特征分解后,行的权重必须相等才可将两个分离的排序过程融合在一起,因此可能限制了基于加权回归的CA在CoIA中的应用。

 

常见的约束排序如冗余分析(RDA)、典范对应分析(CCA)涉及了多元回归过程,对于解释变量而言,如果不相关(即正交)变量很少,则多元回归步骤近似于单变量回归的扩展,此时RDA、CCA都是相对有效的方法。但若解释变量较多,它们通常之间会存在更多的相关性,此时RDA和CCA将变得不稳定。因此对于RDA、CCA,通常要求解释变量的数量一般不能很多,例如在物种-环境的约束排序分析中,尽可能减少环境变量(解释变量)的数量以提升约束模型精度。相比之下,CoIA与偏最小二乘回归相关联,在数据维数随变量数量迅速增加时通常表现较好,因此对于上述这类物种-环境关系的确立,CoIA无需考虑对环境变量数量的限制,是经典回归的可靠替代方法。尽管如此,CoIA由于其属于对称分析范畴,分析的两数据集之间无解释变量与响应变量之分,二者无解释与被解释关系。如果期望使用环境对物种建模(即变量间存在因果关系),RDA、CCA等仍是首选,并通过变量选择去除不重要且存在强相关的解释变量。

在另一常见的对称分析类型典范相关分析(CCorA)中,通常要求变量的数量少于对象的数量,且数据集需是服从多元正态分布的定量变量。与CCorA相比,CoIA不存在这些限制,故其适用范围更广。

 

总体来讲,CoIA广泛应用于多元分析。在生物学领域的多组学研究中,经常可以见到CoIA。

例如在微生物组研究中,除了上述提到的物种-环境的交互外(微生物群落),其它方面,例如使用CoIA确定两组环境变量的相关性或者物种间的共变(微生物群落),或者物种组成(如16S、18S、ITS测序)与功能(如宏基因组)的关系,以及群落功能的一致性(如宏基因组、宏转录组、代谢组)等。再例如转录组中,使用CoIA分析微阵列与RNA-seq的基因表达谱一致性等。

 

R语言执行CoIA


本篇简介R语言执行CoIA的方法。

在R中,可用于执行CoIA的方法有很多,例如ade4包的coinertia(),made4包的cia()等。

 

示例数据集概要

made4的内置数据集“NCI60”为60种人类肿瘤细胞系的基因表达谱,这些细胞系来源于白血病、黑色素瘤、肺癌、结肠癌、中枢神经癌、卵巢癌、肾癌、乳腺癌和前列腺癌等。“NCI60”是一个列表结构,包含了基因表达矩阵“Affy”和“Ross”,分别为使用Affymetrix和spotted cDNA微阵列技术对这60种细胞系进行表达谱分析的子集,两组微阵列涉及的样本(对象)相同,但基因(变量)不同,且两组数据集中的基因表达谱已经过标准化处理。

#bioconductor 安装 made4 包
#BiocManager::install('made4')
#加载 made4 包,made4 以 ade4 为基础(调用 ade4 的函数),所以它也会自动加载 ade4 包
library(made4)

#数据集
#详情 http://www.bioinf.ucd.ie/people/aedin/R/pages/made4/html/NCI60.html
data(NCI60)
names(NCI60)

head(NCI60$Ross[1:6])  #spotted cDNA 微阵列
head(NCI60$Affy[1:6])  #Affymetrix 微阵列
head(NCI60$classes)      #细胞系的癌细胞类型


然后期望评估两个微阵列中的基因表达特征是否相似。由于两个微阵列涉及的基因(变量)不同,故无法根据共有基因的表达水平直接去观测,此时CoIA是个较好的替代方案。

 

R包ade4的CoIA

以下通过ade4中的方法执行CoIA。

抱歉,这里加载made4包,只是单纯地想使用它的数据集……至于为什么不继续使用made4中的方法执行CoIA,个人感觉它的处理效果不如ade4灵活;然后ade4中自带的数据集,也感觉不好使……

##ade4 执行 CoIA
#这里对于两组基因表达谱,可执行 PCA-PCA 融合的 CoIA
 
#首先执行数据集1(spotted cDNA 微阵列矩阵)的 PCA,详情 ?dudi.pca
dudi1 <- dudi.pca(NCI60$Ross, scale = FALSE, scan = FALSE, nf = 4)
 
#其次执行数据集2(Affymetrix 微阵列矩阵)的 PCA
dudi2 <- dudi.pca(NCI60$Affy, scale = FALSE, scan = FALSE, nf = 4)
 
#查看两步 PCA 的总方差由各轴的承载比,评估前几轴的代表性
summary(dudi1)
summary(dudi2)
 
#查看两步排序的行权重是否一致,为 TRUE 时才可用于融合
all.equal(dudi1$lw, dudi2$lw)

首先对两组数据集分别执行独立的PCA分析(特征分解),dudi.pca()函数中的scale参数用于标准化数据,这里由于两组数据集已经是标准化后的基因表达谱矩阵,所以scale=FALSE;nf参数可用于截取结果中的排序轴数量以便后续观测和分析数据(不影响计算过程),这里保留前4轴。

以下是两个PCA的结果概要。


两个PCA的前几轴贡献度可观,且两个PCA结果的行权重一致,满足CoIA的前提,然后将两个PCA结果提交coinertia()执行CoIA,结果中同样保留前4轴(这里的轴数选择要小于等于两个PCA中的最小轴数,同样地,轴数选择仅为方便观测数据,不影响计算结果)。

#PCA-PCA 融合的 CoIA,详情 ?coinertia
coin1 <- coinertia(dudi1, dudi2, scan = FALSE, nf = 2)
coin1
 
summary(coin1)

以下是CoIA融合两个PCA后的结果概要。

通过CoIA轴的协惯量承载比,评估CoIA轴的代表性;通过比较投影后惯量与原始惯量的比例,评估CoIA轴表征先前两组PCA轴的效率;通过RV值,评估两数据集的关联程度;等等。


 

通过随机置换,计算每次置换数据后的RV值(RV*),RV*大于初始观测RV值的概率即为p值,越小表明CoIA评估两组数据集结构相似程度的结果越可信。

#置换检验确定 CoIA 轴的显著性,显示显著
rand_test <- randtest(coin1, nrepet = 999)
rand_test
 
plot(rand_test)

 

以及对于一些结果的提取示例。

##提取主要结果,以融合后的结果为例
summary_coin1 <- summary(coin1)
names(coin1)
names(summary_coin1)
 
#各轴特征值
coin1$eig
#各轴特征值贡献度
coin1$eig / sum(coin1$eig)
#dudi1 对象坐标
coin1$co
#dudi2 对象坐标
coin1$li
 
#CoIA 分析协惯量矩阵特征根的分解情况
summary_coin1$EigDec

 

综上可知,CoIA前2轴具有较好的代表性,表明两个数据集(两个微阵列的基因表达)的大部分共同结构都可以通过CoIA的前两轴呈现出来。并且两个数据集之间具有显著的相关性,尽管相关程度不是特别高。

最后通过排序图观测数据集之间的关系。

#排序图,ade4 打包好的作图样式
plot(coin1)

通过左上两圈图,可知对于两组数据集,PCA的前两轴(Ax1、Ax2)与CoIA前两轴(背景圆圈的正交线)的重合性相对可观,表明CoIA能有效反映先前两个PCA中的结构。

通过左下的特征根柱形图,可知CoIA前两轴承载了绝大部分的协惯量,表明CoIA前两轴具有很好的代表性。

右上排序图展示了对象在CoIA前两轴中的排序位置,其中箭头起点代表了第1个数据集(本示例为spotted cDNA微阵列矩阵)对象的投影,箭头顶点代表了第2个数据集(本示例为Affymetrix微阵列矩阵)对象的投影,箭头越短表明两数据集的一致性越高。

右下方的图反映了两个数据集中的变量对排序空间的贡献,相关性搞的变量箭头方向趋于一致,箭头长度代表了变量对排序的贡献程度。


 

参考资料


Dolédec S, Chessel D. Co-inertia analysis: an alternative method for studying species–environment relationships. Freshwater Biology, 1994, 31(3):277-294.
Stéphane Dray, Thioulouse C J. Co-Inertia Analysis and the Linking of Ecological Data Tables. Ecology, 2003, 84(11):3078-3089.


链接

典范相关分析(CCorA)及其在R中的实现

R包vegan的主响应曲线(PRC)

简单总结一下常见的基于距离的差异检验方法

RDA、db-RDA(CAP)及CCA的变差分解

R包vegan的典范对应分析(CCA)

R包vegan的基于距离的冗余分析(db-RDA)

R包vegan的冗余分析(RDA)

R包vegan实现在物种多度的非约束排序中被动拟合环境变量

R包vegan的非度量多维标度(NMDS)分析

R包vegan的主坐标分析(PCoA)

R包vegan的群落去趋势对应分析(DCA)

R包vegan的群落PCA及tb-PCA分析



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存