31

我在小组配对排名上计算 Spearman 的 rho。斯皮尔曼以不正确处理领带而闻名。例如,取 2 组 8 的排名,即使两组中有 6 次是并列,相关性仍然很高:

> cor.test(c(1,2,3,4,5,6,7,8), c(0,0,0,0,0,0,7,8), method="spearman")

    Spearman's rank correlation rho

S = 19.8439, p-value = 0.0274

sample estimates:
      rho 
0.7637626 

Warning message:
 Cannot compute exact p-values with ties

对于该数据,p 值 <.05 似乎具有相当高的统计意义。R中是否有Spearman的平局校正版本?迄今为止,用很多关系计算它的最佳公式是什么?

4

7 回答 7

37

好吧,Kendall tau 等级相关性也是对两个序数(或等级转换)变量之间统计相关性的非参数检验——如 Spearman 的,但与 Spearman 的不同,可以处理 tie

更具体地说,有三个Kendall tau 统计数据——tau-a、tau-b 和 tau-c。tau-b 特别适用于处理关系。

tau-b 统计量通过一个除数项处理关系(即,对的两个成员具有相同的序数值),该除数表示未绑定在 x 上的对数与未绑定在 y 上的数之间的几何平均值。

Kendall 的 tau 不是 Spearman 的——它们不一样,但也非常相似。您必须根据上下文决定两者是否足够相似,这样一个可以替代另一个。

例如,tau-b

Kendall_tau_b = (P - Q) / ( (P + Q + Y0)*(P + Q + X0) )^0.5

P一致对的数量(“一致”是指数据点对中每个成员的行列一致)

Q :不一致对的数量

X0 : 未绑定在 x 上的对数

Y0 : 未绑定在 y 上的对数

事实上,Spearman 的 rho 有一个变体,它明确地解释了关系。在我需要非参数秩相关统计的情况下,我总是选择 tau 而不是 rho。原因是rho 对平方误差求和,而tau 对绝对差异求和。鉴于 tau 和 rho 都是有能力的统计数据,我们可以选择,对差异 (tau) 的线性惩罚在我看来一直是一种更自然的表达等级相关性的方式。这不是建议,您的上下文可能完全不同,并且另有规定。

于 2012-05-22T23:37:57.170 回答
17

我认为exact=FALSE可以解决问题。

cor.test(c(1,2,3,4,5,6,7,8), c(0,0,0,0,0,0,7,8), method="spearman", exact=FALSE)

    Spearman's rank correlation rho

data:  c(1, 2, 3, 4, 5, 6, 7, 8) and c(0, 0, 0, 0, 0, 0, 7, 8)
S = 19.8439, p-value = 0.0274
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.7637626 
于 2014-06-29T23:27:01.747 回答
7

cor.test with method="spearman" 实际上计算了针对平局校正的 Spearman 系数。我已经通过“手动”从 Zar 1984,生物统计分析中的方程式计算平局校正和平局未纠正的 Spearman 系数来检查它。这是代码 - 只需替换您自己的变量名称即可自行检查:

ym <- data.frame(lousy, dors) ## my data

## ranking variables
ym$l <- rank(ym$lousy)
ym$d <- rank(ym$dors)


## calculating squared differences between ranks
ym$d2d <- (ym$l-ym$d)^2



## calculating variables for equations 19.35 and 19.37 in Zar 1984

lice <- as.data.frame(table(ym$lousy))

lice$t <- lice$Freq^3-lice$Freq

dorsal <- as.data.frame(table(ym$dors))

dorsal$t <- dorsal$Freq^3-dorsal$Freq

n <- nrow(ym)
sum.d2 <- sum(ym$d2d)
Tx <- sum(lice$t)/12
Ty <-sum(dorsal$t)/12


## calculating the coefficients

rs1 <- 1 - (6*sum.d2/(n^3-n))  ## "standard" Spearman cor. coeff. (uncorrected for ties) - eq. 19.35

rs2 <- ((n^3-n)/6 - sum.d2 - Tx - Ty)/sqrt(((n^3-n)/6 - 2*Tx)*((n^3-n)/6 - 2*Ty)) ## Spearman cor.coeff. corrected for ties - eq.19.37


##comparing with cor.test function
cor.test(ym$lousy,ym$dors, method="spearman") ## cor.test gives tie-corrected coefficient!
于 2014-07-05T12:27:46.047 回答
6
  • 平局校正的斯皮尔曼

    使用method="spearman"为您提供了平局校正的 Spearman。根据定义,Spearman 的 rho 只是针对样本数据等级计算的Pearson 样本相关系数。所以它在存在和不存在关系的情况下都有效。您可以看到,将原始数据替换为他们的等级(平局的中等级)并使用后,您将得到相同的结果:method="pearson"

    > cor.test(rank(c(1,2,3,4,5,6,7,8)), rank(c(0,0,0,0,0,0,7,8)), method="pearson")
    
    Pearson's product-moment correlation
    
    data:  rank(c(1, 2, 3, 4, 5, 6, 7, 8)) and rank(c(0, 0, 0, 0, 0, 0, 7, 8))
    t = 2.8983, df = 6, p-value = 0.0274
    alternative hypothesis: true correlation is not equal to 0
    95 percent confidence interval:
     0.1279559 0.9546436
    sample estimates:
      cor 
    0.7637626 
    

    注意,有一个简化的no-ties Spearman 版本,实际上是cor.test()在没有 ties 的情况下用于实现,但它相当于上面的定义。

  • P值

    如果数据存在关联,则既不会为 Spearman 也不会为 Kendall 度量(在实施中)计算精确的 p 值cor.test(),因此会发出警告。正如 Eduardo 的帖子中提到的,为了不收到警告,您应该设置exact=FALSE

于 2015-12-18T14:21:24.533 回答
4

论文“A new rank correlation coefficient with application to the consensus ranking problem”旨在解决带平局问题的排名问题。它还提到不应将 Tau-b 用作衡量弱排序之间一致性的排名相关性度量。

Emond, EJ 和 Mason, DW (2002),一种新的等级相关系数,适用于共识等级问题。J. Multi-Crit。决定。肛门,11:17-28。doi:10.1002/mcda.313

于 2018-10-23T22:07:16.343 回答
3

我遇到了类似的问题,通过阅读此处的答案和 RI 上的帮助文件看到,当你有联系时,你必须将参数exact = FALSE) 添加到cor.test()函数中。通过添加这个,它不会尝试计算精确的 P 值,而是“测试统计量是缩放到零均值和单位方差的估计值,并且近似正态分布”。就我而言,结果完全一样,但没有关于关系的警告。

cor.test(x, y, method = "spearm", exact = FALSE)
于 2015-04-11T17:27:29.787 回答
2

R 包ConsRank包含 Edmon 和 Mason 的 Tau_X 的实现。这似乎是(数学上)目前最知名的处理关系的方法。

请参阅文档,其中的用法为

Tau_X(X, Y=NULL)

whereX可以是一个矩阵。

正如@wibeasley 所指出的,Emond 和 Mason (2002) 提出了 Tau_X,这是一种似乎优于 Kendal 的 Tau-b 的新等级相关系数。NelsonGon 担心这篇论文是 2002 年的,比这个问题早了几年,但似乎忽略了 Spearman 的相关性可以追溯到 1904 年,而 Kendall 的 Tau 是 1938 年。

于 2019-07-19T14:25:11.283 回答