【发布时间】:2016-07-28 08:41:10
【问题描述】:
希望这篇文章不是重复的,但我花了相当长的时间搜索并没有找到答案。
我有两个矩阵,我试图在它们之间进行成对相关,看起来像这样。
Matrix 1
gene1 gene2 gene3
ID1 12 32 43
ID2 94 34 95
ID3 90 54 23
ID4 43 76 65
Matrix2
TE1 TE2 TE3
ID1 94 90 82
ID2 23 46 94
ID3 23 49 39
ID4 39 34 46
我可以使用基函数 cor() 获得一个 R^2 值表,它只在矩阵之间进行比较,以成对的方式。结果如下所示:
gene1 gene2 gene3
TE1 0.98 0.48 0.45
TE2 0.77 0.46 0.76
TE3 0.45 0.56 0.76
这太棒了!但问题是我也需要 p 值,所以我可以将矩阵缩减为只有 p 值小于某个截止值的矩阵(因为我的真实矩阵是 [30,800] 和 [30,1000],我需要一种方法来将数据减少到可以理解的程度)。
rcorr() 包在这方面做得很好,因为它产生了一个相关矩阵r,一个p 值矩阵P,以及一个观察次数的向量。但是,我还没有找到一种只比较矩阵之间的方法——它也比较矩阵之间。我得到的结果如下所示:
gene1 gene2 gene3 TE1 TE2 TE3
gene1 1.0 0.5 0.5 0.5 0.3 0.9
gene2 1.0 0.4 0.7 0.7 0.5
gene3 1.0 0.8 0.8 0.5
TE1 1.0 0.8 0.2
TE2 1.0 0.7
TE3 1.0
这是组成的数据,但它说明了这一点。这会产生两倍于我实际需要的数据,并减慢计算速度,并产生视觉上无意义的相关图。
所以我的问题是:有没有办法使用 Hmisc 包函数 rcorr() 仅在矩阵之间进行比较,而不是在矩阵内进行比较?
我还在矩阵列表上尝试了 cor.test:
cor.test(c(matrix1),c(matrix2), method="pearson")
但我收到一个错误,'x' and 'y' must have the same length。
接下来,我必须弄清楚如何根据具有高相关性和低 p 值的列表来实际对矩阵进行子集化,但我发现这里有一些有用的答案需要仔细检查。
【问题讨论】:
标签: r matrix correlation