R中矩阵之间的相关性


9

我在使用cor()cor.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


4
尚不清楚您想要什么。当您说您只想要cor(matrix1,matrix2)的一个结果时,您是否要将(matrix1中的所有数字)与(matrix2中的所有数字)相关联?在这种情况下,您可以尝试cor(as.vector(matrix1),as.vector(matrix2))
Marius

准确显示出预期的p值是多少?(即,您正在检验什么假设?)
chl 2012年

不,我只想将两个矩阵关联起来,以了解它们的相似程度。我不想一个单元一个单元的比较。结果我只想要一个0到1的数字,就像每个皮尔逊相关性在输入中使用两个向量一样。有什么建议吗?我期望的p值必须告诉我相关性的重要性。
L_T 2012年

1
你的意思是cor(as.vector(matrix1), as.vector(matrix2))
whuber

Answers:


12

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


使用您的函数,我会收到此错误:“ cor(c(matrix1),c(matrix2))中的错误:'x'必须是数字”。但是,如果您快速浏览一下我的表,会发现它们只包含数字...我不明白
L_T 2012年

3
R发出read.csv您可能使用过的this :,返回a data.frame而不是a matrix。因此,您需要先将其转换为matrixwith,as.matrix然后再将其设为long矢量c()并将结果提供给cor。它在一行中:cor(c(as.matrix(matrix1)), c(as.matrix(matrix2)))
conjugateprior

5

您还没有说出数据的真实含义。不过...

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

典型相关分析

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

实作

典型的相关分析在大多数多变量分析文本中都有介绍,如果您对矩阵代数直至本征分析感到满意,这可能是最有用的。它是cancor在base R和此处描述的CCA包中实现的。


你好谢谢。我的数据是包含相同变量的简单两个矩阵。这两个矩阵的结构是相同的。每个单元格中的值是实验的结果,其中这些变量以9点李克特量表进行评估,并在参与者之间平均。在两个矩阵之间存在相关性时,找到哪种最佳策略?您可以在R中举例说明吗?
L_T 2012年

1
使用基数R就是cancor(matrix1, matrix2)
共轭木

但是也许您可以澄清一下。呼叫。那么什么?第个人对第个Likert项目的回应吗?当然不是。那么,超过平均水平的参与者进入哪里呢?matrix1 一个一个一世Ĵ一世Ĵ
共轭木

您好,有10位参与者,他们必须表达成对刺激之间的“连贯程度”(请注意,这不是相异性评级实验)。我做了2个实验。我想比较两种加速条件下的结果。每个单元格是每对刺激对10个参与者的评估平均值。那我还应该使用cancor吗?
L_T 2012年

我使用了cancor,但没有得到表示相关性的单个系数值,也没有得到表示其重要性的p值。请帮忙!
L_T 2012年

3

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

C一个=一个一个||其中和一个Ť[R一个ŤX||XX1个/2

根据您的数据,得出0.996672。

如果矩阵结构不重要,则另一种选择是将矩阵简单地平整为向量,然后使用您选择的相关度量。由于我不知道您数据的分布,因此我使用点积得出0.976。

以同样的方式,看来您的数据是高度相关的。


这似乎是rv系数,这是OP要求的:一个介于0和1之间的值,该值表明两个矩阵的相似程度。
llrs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.