我正在使用R计算两个间隔数据集(即波高和北大西洋涛动指数)之间的Spearman相关性。
第一个问题:我是说R将我的区间数据转换为排名数据,然后进行相关性对吗?
第二个问题:我收到以下警告:
In cor.test.default(hs, df$V1, method = "spearman") : Cannot compute exact p-value with ties
那么我应该使用Kendall相关性而不是Spearman?还是R中有Spearman相关性选项可以处理联系?首先使用Spearman的原因是它不采用分布形状。
非常感谢!
答案 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值几乎相同。