R中矩阵之间的相关性

机器算法验证 r 相关性
2022-03-11 23:34:48

我在使用cor()andcor.test()函数时遇到问题。

我只有两个矩阵(只有数值,并且行数和列数相同),我想要相关数和相应的 p 值。

当我使用时,cor(matrix1, matrix2)我得到所有单元格的相关系数。我只想要一个数字作为cor的结果。

此外,当我这样做时,cor.test(matrix1, matrix2)我收到以下错误

Error in cor.test.default(matrix1, matrix2) : 'x' must be a numeric vector

如何获得矩阵的 p 值?

您可以在这里找到我想要关联的简单表格:

http://dl.dropbox.com/u/3288659/table_exp1_offline_MEANS.csv

http://dl.dropbox.com/u/3288659/table_exp2_offline_MEANS.csv

3个回答

如果您只是想计算两组值之间的相关性,而忽略矩阵结构,您可以使用 将矩阵转换为向量c()然后您的相关性由 计算cor(c(matrix1), c(matrix2))

你没有说你的数据实际上是什么。尽管如此...

假设您的矩阵有代表两组(不同)变量的列和代表案例的(相同数量)行。

典型相关分析

在这种情况下,一个可能有趣的更结构化的相关分析是找到典型相关matrix1这假设您要根据列的线性组合和列的线性组合之间的相关性来总结两组变量之间的关系matrix2列。如果您怀疑存在一个小维空间(甚至可能是 1),那么您会想要这样做,这将揭示案例之间的潜在相关结构,而这些结构在当前变量定义的坐标系中被实现所掩盖。因此,这种(典型)相关性的值在某种意义上将概括两个矩阵之间的多元线性关系。事实上,虽然 CCA 适用于具有不同数量变量的矩阵,但当每个“矩阵”只是一列时,它会降低为 Pearson 相关性。

执行

大多数多元分析文本中都描述了典型相关分析,如果您对矩阵代数到特征分析感到满意,这可能是最有帮助的。cancor在基本 R 中以及在此处描述的CCA包中实现

如果您将相关性大致解释为平均相似性,则可以使用基于内积的定义,例如:

cAB=A,BA||B其中A,Btr(ABT)x||x,x1/2

根据您的数据,这将产生 0.996672。

如果矩阵结构不重要,另一种方法是简单地将矩阵展平为向量并使用您选择的相关性度量。由于我不知道您的数据分布,我使用点积得到 0.976。

无论哪种方式,您的数据似乎都是高度相关的。