stats::cor() 使用哪个 Kendall 的 tau 蛋白?

Which Kendall's tau does stats::cor() use?

stats:cor() 提供 "kendall" 作为计算相关系数的方法。 Kendall 的 Tau 实际上排在 three variants a(排名平局没有调整),b (针对排名关系进行了调整)和 *c**(适用于矩形而不是方形表格)。

stats:cor()用的是哪一个?

(奖励:是否有允许所有这三种选择的软件包?Kendall 似乎没有提供这些选择。)

cor(x, y, method="kendall") 计算 Kendall 的 tau-b(针对平局进行调整)。

大多数可用的软件包(例如 cor()、Kendall())都会计算 Kendall 的 tau-b。 Kendall 的 tau-a 和 tau-b 之间的区别本质上是分母。具体来说,对于Kendall's tau-a,分母D=n*(n-1)/2,是固定的,而对于Kendall's tau-b,分母D=sqrt(No. pairs of Var1 excluding tied pairs)*sqrt (不包括并列对的 Var2 对数)。 tua-b 的值通常大于 tau-a。我觉得Kendall的tau-c很少用

我没有看到 Kendall 的 tau-a 的任何包,但在 R 中实现起来并不难。

有点晚了,但这里有一个比较:

> set.seed(1)
> n <- 20
> x1 <- sample(1:4, n, replace = T)
> x2 <- sample(1:4, n, replace = T)
> 
> abc <- c(DescTools::KendallTauA(x1,x2),
+          DescTools::KendallTauB(x1,x2),
+          DescTools::StuartTauC(x1,x2)) 
> names(abc) <- c('tau-a','tau-b','tau-c')
> abc
      tau-a       tau-b       tau-c 
-0.08947368 -0.11486749 -0.11333333 
> 
> cor(x1,x2, method = 'kendall')
[1] -0.1148675
> pcaPP::cor.fk(x1,x2)
[1] -0.1148675

所以看起来 stats:cor 函数和 method='kendall' 计算了 tau-b 系数。