我应该如何解释斯皮尔曼的等级相关性为零的意义?
我正在计算使用corr
两个向量之间的Spearman等级相关系数。
[rho, p] = corr(freq_type1, freq_type2, 'type', 'Spearman');
这些向量表示不同类型文档中术语的频率。 例如,type1可能是一个网页,type2可能是一篇报纸文章。 所以每个向量freq_type1
和freq_type2
是1乘n
,其中n
是我的词汇表中的词数。 我计算等级相关的原因是我想能够说出词汇在不同类型的文档中是否有不同的频率。 我对每个向量进行归一化处理,使得排名对应于每个词汇词汇出现在文档中的百分比。
上面的调用返回rho = .8879和p = 0
据我了解,当p很小时,相关性很重要,但这非常小,所以我很担心。
我的第一个想法是,也许该函数没有返回斯皮尔曼方法的p值。 为了测试该方法,我试着计算两个随机向量的相关性。
[rho, p] = corr(rand(5,1), rand(5,1), 'type', 'Spearman');
这返回rho = 0.80和p = 1.3,所以该函数似乎正在工作。
这就是我的数据分布在loglog图上的样子。
从corr
的Matlab文档中,使用置换分布计算Spearman的p值。
这是我对这种计算如何工作的理解,基于维基百科关于排列测试的文章。 最初相关系数计算为“测试统计的观测值T(obs)”。 然后将两个输入集合混合在一起,并对混合数据点的所有可能的重新采样进行相关系数测试。 测试的单侧p值计算为相关性大于或等于T(obs)的采样置换的比例。 测试的双侧p值是小于或等于T(obs)的比例。
因此,要得到一个零值的p值,我需要将采样置换的所有相关系数都大于或全部小于T(obs)。 这似乎极不可能,因为我的数据点并不完全在一条线上。
秩相关是否要求数据是以均值为中心还是其他约束?
这里是Dropbox数据的链接,如果你想看看你是否得到相同的结果。
您必须在其他地方寻找深入的统计建议,但我可以显示Octave(MATLAB克隆)代码在做什么(返回的结果与您观察到的结果完全相同)。 以下是与观察值相关的相关代码:
% --> from previous computations, R = 0.88786, NN=1540
% SIGNIFICANCE TEST
tmp = 1 - R.*R;
% --> tmp = 0.21171
t = R.*sqrt(max(NN-2,0)./tmp);
% --> t = 75.675
sig = tcdf(t,NN-2);
% --> sig = 1
sig = 2 * min(sig,1 - sig);
% --> sig = 0 (same as p which is reported)
再次,您可能想咨询一些熟悉统计数据的人以了解这些步骤,但是我的结论是,由于数据集规模庞大,无疑存在显着的(非零)相关性。
我同意p = 0很奇怪。 但对我来说,这是你的第二个例子,显示所有的都不好。 “p = 1.3”意味着它没有给出一个标准的p值,因为p是一个概率,所以它必须在0和1之间。你的p> 1!
我用
cor.test(datafr $ variable1,datafr $ variable2,method =“spearman”)
这将返回一个标准的rho和p:但我从来没有用你描述过的矢量(而不仅仅是一个数据集)来试验它。
链接地址: http://www.djcxy.com/p/57757.html上一篇: How should I interpret a Spearman's rank correlation significance of zero?