斯皮尔曼相关系数R

时间:2019-02-22 13:52:45

标签: r

我正在使用R计算两个间隔数据集(即波高和北大西洋涛动指数)之间的Spearman相关性。

第一个问题:我是说R将我的区间数据转换为排名数据,然后进行相关性对吗?

第二个问题:我收到以下警告:

In cor.test.default(hs, df$V1, method = "spearman") :
  Cannot compute exact p-value with ties

那么我应该使用Kendall相关性而不是Spearman?还是R中有Spearman相关性选项可以处理联系?首先使用Spearman的原因是它不采用分布形状。

非常感谢!

2 个答案:

答案 0 :(得分:0)

问题(如错误消息所说明的那样)是您的数据中存在联系。在这种情况下, Kendall tau-b 应该用于计算p值,因为它专门用于处理平局。

让我们考虑以下x和y:

x <- c(44.4, 41.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
y <- c( 2.6,  3.1,  3.1,  5.0,  3.6,  4.0,  5.2,  2.8,  3.8)

假设同时使用Kendall和Spearman统计信息进行相关性测试。

肯德尔

> cor.test(x, y, method = "kendall", alternative = "greater")

    Kendall's rank correlation tau

data:  x and y
z = 1.1593, p-value = 0.1232
alternative hypothesis: true tau is greater than 0
sample estimates:
      tau 
0.3142857 

Warning message:
In cor.test.default(x, y, method = "kendall", alternative = "greater") :
  Cannot compute exact p-value with ties

矛兵

> cor.test(x, y, method = "spearman", alternative = "greater")

    Spearman's rank correlation rho

data:  x and y
S = 62.521, p-value = 0.09602
alternative hypothesis: true rho is greater than 0
sample estimates:
      rho 
0.4789916 

Warning message:
In cor.test.default(x, y, method = "spearman", alternative = "greater") :
  Cannot compute exact p-value with ties

在这两种情况下,我们都会收到错误消息“无法计算带领带的精确p值”。

一种解决方法是在R中使用 Kendall 软件包。

> library(Kendall)
> 
> x <- c(44.4, 41.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
> y <- c( 2.6,  3.1,  3.1,  5.0,  3.6,  4.0,  5.2,  2.8,  3.8)
> summary(Kendall(x,y))
Score =  11 , Var(Score) = 90.02778
denominator =  35
tau = 0.314, 2-sided pvalue =0.29191

我们看到,在这种情况下,Kendall统计信息说明了我们的数据中存在联系并正在相应计算p值的事实。

答案 1 :(得分:0)

首先:Spearman等级相关系数是一种非参数方法,因为它对值进行排名并获得排名的相关系数值。我认为由于您自己对其进行了排名,因此排名不再是唯一的,因此无法计算出准确的p值。

第二:这只是警告。没有错误。根据我的社区,Kendall的tau与Spearman等级相关系数几乎相同。相关系数值可以略有不同,但p值几乎相同。