R 斯皮尔曼关联与联系

R 斯皮尔曼关联与联系,r,correlation,R,Correlation,我在计算斯皮尔曼的rho,这是基于成对排名的小集合。 斯皮尔曼因处理领带不当而闻名。例如,以两组共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

我在计算斯皮尔曼的rho,这是基于成对排名的小集合。 斯皮尔曼因处理领带不当而闻名。例如,以两组共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值好的,Kendall tau秩相关也是两个有序(或秩转换)变量之间统计相关性的非参数检验——与Spearman的一样,但与Spearman的不同,可以处理关系

更具体地说,有三种Kendall tau统计数据——tau-a、tau-b和tau-ctau-b专门用于处理领带。

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

肯德尔的头不是斯皮尔曼的——它们不一样,但也很相似。你必须根据上下文来决定两者是否足够相似,这样一个就可以替代另一个

例如,tau-b

Kendall_tau_b = (P - Q) / ( (P + Q + Y0)*(P + Q + X0) )^0.5
p:一致对的数量(“一致”表示数据点对中每个成员的等级一致)

Q:不协调对的数量

X0:未绑定到x上的对数

Y0:y上未绑定的对数

事实上,斯皮尔曼的rho有一个变体,明确解释了关系。在需要非参数秩相关统计的情况下,我总是选择tau而不是rho。原因是rho求和平方误差,而tau求和绝对误差
差异。考虑到tau和rho都是有能力的统计数据,我们可以选择,对差异的线性惩罚(tau)在我看来总是一种更自然的表达等级相关性的方式。这不是一个建议,您的上下文可能会完全不同,并以其他方式指示。

我认为
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 
cor.test with method=“spearman”实际计算了针对领带校正的spearman系数。 我已经通过“手动”计算扎尔1984年《生物统计分析》中方程中校正的和未校正的斯皮尔曼系数对其进行了检查。以下是代码-只需替换您自己的变量名即可自行检查:

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!

ym我遇到了一个类似的问题,通过阅读这里的答案和R上的帮助文件,我发现,当您有联系时,您必须将参数
exact=FALSE
)添加到
cor.test()
函数中。通过添加这一点,它不会试图计算精确的P值,而是“测试统计是缩放到零均值和单位方差的估计,近似正态分布”。 结果,在我的情况下,是完全相同的,但没有关于领带的警告

cor.test(x, y, method = "spearm", exact = FALSE)
  • 斯皮尔曼

    使用
    method=“spearman”
    可以为您提供修正后的spearman。根据定义,斯皮尔曼的rho只是为样本数据的等级计算的皮尔逊样本相关系数。因此,它在有联系和没有联系的情况下都能起作用。 您可以看到,在将原始数据替换为其列组(中间列组表示领带)并使用
    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 
    
    请注意,存在一个简化的无领带Spearman版本,该版本实际上在没有领带的情况下用于
    cor.test()
    实现,但它与上面的定义相同

  • p值

    如果数据中存在关联,则Spearman和Kendall测量值(在
    cor.test()
    implementation内)均未计算准确的p值,因此发出警告。正如Eduardo在文章中提到的,为了不得到警告,你应该设置
    exact=FALSE

本文旨在解决平局排名问题。它还提到,Tau-b不应用作衡量弱排序之间一致性的排名相关度量

Emond,E.J.和Mason,D.W.(2002),一个新的秩相关系数及其在一致性排序问题中的应用。J.多重标准。十分。《分析报》,11:17-28。doi:10.1002/mcda.313

R包包含Edmon和Mason's Tau_X的实现。这似乎是(数学上)目前最为人所知的处理领带的方法

请参阅,其中给出了如下用法:

Tau_X(X, Y=NULL)
其中
X
可以是矩阵


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

PS:事实上,文献中提到了一个“领带修正的斯皮尔曼”:另一个例子是领带修正的斯皮尔曼@Mulone我在我的原始答案中没有提到修正的斯皮尔曼(尽管我刚刚编辑了它),因为读了你的Q之后,我觉得你知道这个修正的统计数据。无论如何,我的答案都是一样的(tau的pref),但我在编辑中特别提到了/纠正了rho。感谢您的澄清。我需要一个校正后的Spearman,主要是为了将一项研究与只报告校正后的Spearman而不报告tau的现有研究进行比较。顺便说一句,我认为你是对的,没有绝对的规则来选择其中一个。这似乎是在Kendall和Spearman之间选择相关性估计的一个很好的答案,但它没有解决在存在联系的情况下计算p值的问题,这就是错误标记的内容。如果数据不是正态分布,这仍然有效吗?这是一个原因