斯皮尔曼相关与关系

Mul*_*one 25 r correlation

我在小型配对排名上计算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
Run Code Online (Sandbox Code Playgroud)

并且p值<.05,这对于这些数据来说似乎具有非常高的统计意义.在R中是否有一个关系纠正版的Spearman?迄今为止用很多关系来计算它的最佳公式是什么?

dou*_*oug 34

那么,Kendall tau秩相关也是两个序数(或秩变换)变量之间统计依赖性的非参数检验 - 像Spearman's,但不像Spearman's,可以处理关系.

更具体地说,有三个 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
Run Code Online (Sandbox Code Playgroud)

P:一致对的数量('一致'表示该对数据点的每个成员的等级一致)

:不一致对的数量

X0:未绑定在x上的对数

Y0:与y无关的对数

事实上,Spearman的rho的变体明确地说明了关系.在我需要非参数秩相关统计量的情况下,我总是选择tau而不是rho.原因是rho求平方误差,而tau求和绝对差值.鉴于tau和rho都是有能力的统计数据而且我们还有待选择,对我来说,差异性(tau)的线性惩罚似乎一直是表达等级相关性的更自然的方式.这不是一个推荐,你的背景可能会有很大不同,并且另有规定.


小智 15

我认为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 
Run Code Online (Sandbox Code Playgroud)

  • 这可能会抑制错误,但它没有解决这样做是否合理的问题.请注意,p值没有变化,这意味着仍在使用t分布假设,如?cor.test所示. (5认同)

小智 7

cor.test with method ="spearman"实际上计算了针对关系纠正的Spearman系数.我通过"手动"计算了Zar 1984,Biostatistical Analysis中的方程式中的平衡校正和未校正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!
Run Code Online (Sandbox Code Playgroud)


han*_*frc 5

  • 领带校正后的矛兵

    使用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 
    
    Run Code Online (Sandbox Code Playgroud)

    注意,存在一个简化的不带联系的Spearman版本,实际上是cor.test()在没有联系的实现中使用的,但是它等同于上面的定义。

  • P值

    如果存在数据联系,则既不会为Spearman度量也不为Kendall度量(在cor.test()实现内)计算确切的p值,因此发出警告。如爱德华多(Eduardo)的帖子所述,如果您不想设置警告,请设置exact=FALSE


Mon*_*iba 5

论文“一种新的排名相关系数应用于共识排名问题”旨在解决平局排名问题。它还提到 Tau-b 不应该用作衡量弱排序之间一致性的排序相关性度量。

\n\n

Emond, EJ 和 Mason, DW (2002),应用于共识排名问题的新排名相关系数。J. 多重\xe2\x80\x90Crit。决定。分析,11:17-28。doi:10.1002/mcda.313

\n

  • 我还没有找到任何最近的论文试图提出一种衡量并列/配对排名场景相关性的指标。如果您知道任何解决此问题的“未过时”工作,请告诉我。 (5认同)