如何可视化/总结具有行数的矩阵≫≫列数?

机器算法验证 r 数据可视化 遗传学
2022-03-15 11:51:58

我有一个介于 0 和 1 之间的正实数矩阵;行代表基因,列代表样本。行数比列数大一个数量级104. 我想知道如何在R. 我知道热图是做到这一点的方法之一,但还有其他想法。以下是我想在可视化中强调的几点:

数据:

  1. 行和列没有顺序(您可能已经意识到);特别是行和列是可交换的。
  2. 矩阵的条目是介于 0 和 1 之间的正实数。
  3. 一小部分数据(10% 的行或基因,大约 1000 个)实际上是“有趣的”。
  4. 该矩阵表示样本中基因更活跃的估计概率。

目标:

  1. 我想展示:哪些基因更活跃,在哪个样本中。该矩阵有很多行,其中列之间的概率非常相似。
  2. 我可以订购行(基因)以使模式更清晰。

我的想法:

目前我可以通过选择一个截止值来确定样本中的活性基因(比如95%) 并以这样的方式排列基因,第一组行是样本 1 中的活性基因,第二组行是样本 2 中的活性基因,...

我也在考虑可视化数据的一个子集,可能是通过采样行。但我没有任何成功。

我知道这些想法可能不是很优雅,但会以一种使模式更易于识别的方式重新排列我的数据。

我知道以前有人问过类似的问题,但我认为我的问题更具体一些,所以希望我能从这个论坛的成员那里得到更好的意见。

2个回答

使用您喜欢的任何相似性度量(例如相关性),为行和列(分别)找到一维多维缩放解决方案。根据 MDS 位置对行和列进行排序。这会将相似的基因和相似的样本聚集在一起。然后可以很容易地将整个事情可视化为一个数组图(例如,将值标准化为 0..255 范围并将其显示为灰度图像)。

以这种方式处理了 50 x 6 的标准正态变量数组(使用欧几里德距离作为邻近度度量):

阵列图

没什么可看的——毕竟这些数据是独立同分布的——但是看看重新排序的列和行的相关矩阵:

列相关性

行相关性

(红色 = 正极,蓝色 = 负极)。沿对角线的正相关集中和对角线外的负相关表明该方法已如宣传的那样有效。(对于原始数据,相关矩阵也是随机的,导致红色和蓝色单元格更均匀地散布在各处。)

根据我的经验,当行和/或列之间甚至存在细微的非零相关性时,这种方法在将它们带出原始数组图(灰度,上图)并提供沿两个维度的聚类的可视化显示方面做得非常好。沿相应相关矩阵图对角线的较大块有助于识别强聚集的行或列组。

我正要在@whuber 的回答中提出一些建议(我使用了这种重新排序技术,但在特征选择的背景下,所以我主要关注“变量视图”)。所以让我建议另外两个方向(但第一个接近已经提出的方向)。

热图而言,您可以在通过层次聚类(另一种基于(不)相似性度量的聚合方法)对行(样本)和/或列(基因)进行轻微重新排列后显示它们。有很多 R 包可以做到这一点,例如mixOmicscim()中的函数另一个可能感兴趣的包是MADE4它依赖于非常好的ade4包来进行多变量数据分析和可视化。

如果你关心相当多的变量,你也可以考虑一些减少基因聚类的方法。我听说过的一种是PCA 基因剃须(Hastie 等人,2000 年),这在 Izenman(2008 年)中有大量描述。本质上,这是一个两阶段的迭代过程,其中 (a) 对于特征选择,我们挑选出与第一个主成分的相关性低于基于分布的阈值的基因(例如,10% 的基因在每一步)和(b)对于聚类,我们寻求最大化R2测量(簇间/簇内方差)j连续的大小簇kj, 其中最优kj是通过置换技术和使用间隙统计量获得的(在前一个簇的影响已通过残差去除之后)。更详细的信息可以在下面引用的论文中找到,但总体思路是将基因聚集成小的且可能重叠的相关基因子集,这些子集在个体之间尽可能地变化

参考

  1. Hastie, T.、Tibshirani, R.、Eisen, MB、Alzadeh, A.、Levy, R.、Staudt, L.、Chan, WC、Botstein, D. 和 Brown, PO (2000)。“基因剃须”作为一种识别具有相似表达模式的不同基因组的方法基因组生物学,1(2)。
  2. 伊岑曼,AJ(2008 年)。现代多元统计技术施普林格。