相关系数的聚合 (Spearman)

机器算法验证 t检验 斯皮尔曼罗 聚合
2022-04-13 20:04:26

在分析调查数据时,我必须处理多级/三维数据。现在,我需要汇总在个人级别(个人排名之间)找到的相关系数,然后比较这些系数。

原始数据如下所示:对于每个人,测量了 3 个系列 á 15 个项目(公共问题的议程)。对于一个人来说,这可能看起来像:

  i     A   B   C
  1     1   2   1
  2    15   7  12
  3     2  15   6
  4     3   1  11
  5     9   6   2
 ..        ...
 15     4   5   4

这些是等级,所以我可以在个人层面上计算等级相关性 A~B 和 B~C。这样做,我会得到每个案例/个人的一系列两个相关系数。

CASE    rAB     rBC
   1   .213   .114
   2   .951   .524
   3  -.101   .022
   4   .607    1.0
 ...
 999   .549  -.661

现在我需要比较这些系数来判断 A~B 是否大于 B~C(即,如果排序 A 在系统上与 B 更相似,而不是 B 与 C 更相似)。

当然,我可以对这两对做简单的 t 检验。然而,我怀疑相关系数是否以允许添加/平均它们的方式进行缩放?

  • 我已经阅读了有关相关系数的 Fisher 的 z 变换,但在这个数据集中,它可能在数据中存在 r=1 的单个案例 - 并且它们的 z 值将为 ∞(Fisher 的 z 值未定义为r=1),这使得平均毫无意义。

  • 我可以(不是真的)将相关系数平方以与解释的方差 r² 一起工作,但这显然会暗示一些个体相关性是正的,而其他相关性是负的。

RQ:议程 A 和 B 是否比议程 B 和 C 更相似(系统地超过 1000 人)?议程是每个人的一系列等级绝对值。

更新:相关系数的分布

正态分布的相关系数分布

2个回答

我很好奇,既然你有这些排名,你为什么要计算相关系数?我认为更好的方法是使用旨在处理等级的程序。

Mann Whitney U 检验(或 Wilcoxon 秩和检验,它们是同一件事)检验。该检验涉及 A 组中的观察值是否更可能大于 B 组中的观察值。在该检验中,原假设是 P(A > B) = P (B > A)(即每个群体的观察结果同样可能大于另一个群体)。如果测试拒绝,则更有可能一组比另一组具有更大的等级。

这似乎正是您的研究问题所在,因此我建议您进行此测试,而不是使用这些等级计算相关系数。这是一个众所周知的常用测试,因此您也不应该向任何人证明它的合理性。

如果您有任何问题,请告诉我。

Mhhhh,所以你想比较相关系数的分布?如何使用 Kolmogorov-Smirnov 检验?

correpl <- t(replicate(1000, {
    scores <- rnorm(15)
    a <- rank(scores, ties.method = "r")
    ### experiment with sd = x to give some weights closer or farther to a
    b <- rank(scores + rnorm(15, sd = 5), ties.method = "r")
    c <- rank(scores + rnorm(15, sd = 6), ties.method = "r")
    return(c(cor(a,b), cor(b, c)))
  }))

c1 <- correpl[,1]
c2 <- correpl[,2]

curve(ecdf(c1)(x), from = -1, to = 1)
curve(ecdf(c2)(x), from = -1, to = 1, col = "red", add = T)
ks.test(c1, c2)

它足够敏感(对我的口味来说太敏感了),可以发现最细微的差异,而且它是非参数的尝试尝试alternative设置。