【发布时间】:2015-06-28 23:23:50
【问题描述】:
我正在使用corr 计算两个向量之间的 Spearman 等级相关系数。
[rho, p] = corr(freq_type1, freq_type2, 'type', 'Spearman');
这些向量表示不同类型文档中术语的频率。例如,type1 可能是网页,type2 可能是报纸文章。所以每个向量freq_type1 和freq_type2 是n 的1,其中n 是我词汇表中的术语数。我计算等级相关性的原因是我想能够说明不同类型文档之间词汇表的频率是否不同。我对每个向量进行归一化,以便排名对应于每个词汇术语出现在文档中的百分比。
上面的调用返回 rho = .8879 和 p = 0
据我了解,当 p 很小时,相关性很显着,但这非常小,我有点担心。
我的第一个想法是该函数可能没有为 Spearman 方法返回 p 值。为了测试该方法,我尝试计算两个随机向量的相关性。
[rho, p] = corr(rand(5,1), rand(5,1), 'type', 'Spearman');
这将返回 rho = 0.80 和 p = 1.3,因此该函数似乎正在运行。
这就是我的数据分布在 loglog 图上的样子。
从Matlab documentation for corr 开始,Spearman 的 p 值是使用置换分布计算的。
这是我对这个计算如何工作的理解,建立在关于 permutation testing 的维基百科文章的基础上。最初,相关系数计算为 “检验统计量的观察值,T(obs)”。 然后将两个输入集混合在一起,并测试混合数据点的所有可能重采样的相关系数。检验的单侧 p 值计算为相关性大于或等于 T(obs) 的采样排列的比例。检验的两侧 p 值是它小于或等于 T(obs) 的比例。
因此,要使 p 值为零,我需要使采样排列的所有相关系数都大于或小于 T(obs)。这似乎极不可能,因为我的数据点并不完全在一条线上。
排名相关性是否要求数据以均值为中心或其他约束?
这是一个link to the data on Dropbox,如果你想看看你是否得到相同的结果。
【问题讨论】:
-
我建议您在统计堆栈交换网站上发布一个问题/寻找答案 - 这个问题不是编程问题。此外,我建议您发布指向 matlab 函数文档的链接,以便人们查找。
-
@TryHard 问题中有一个指向文档的链接,但我可以将它放在问题的前面以便更清楚。我将研究这个问题是否适合统计堆栈交换。
-
我唯一的评论是(而且我对这个主题并不熟悉)这听起来很奇怪:“如果所有重采样的相关系数相同,则数据集没有关系。”你能提供更直接的链接来支持该声明?
-
@TryHard 我回去查看了我的来源,我肯定误解了 p 值计算。我已经更新了我的问题,以明确说明我在描述我对 p 值计算的理解,并更正了该描述。
-
我不得不同意你的结果很奇怪。有什么方法可以链接到数据?
标签: matlab correlation