在R中,硬币:: wilcox_test与wilcox.test相对应

时间:2014-05-03 21:55:13

标签: r

在试图找出哪一个更好用时,我遇到了两个问题。

1)wilcox.test给出的W统计量与coin :: wilcox_test的统计量不同。这是我的输出:

wilcox_test:

Exact Wilcoxon Mann-Whitney Rank Sum Test

data:  data$variableX by data$group (yes, no) 
Z = -0.7636, p-value = 0.4489
alternative hypothesis: true mu is not equal to 0 

wilcox.test:

Wilcoxon rank sum test with continuity correction

data:  data$variable by data$group
W = 677.5, p-value = 0.448
alternative hypothesis: true location shift is not equal to 0 

我知道W实际上有两个值,通常会报告较小的值。当wilcox.test与逗号而不是“〜”一起使用时,我可以得到另一个值,但是这个值为W = 834.5。根据我的理解,coin :: statistic()可以使用(“linear”,“standarized”和“test”)返回三种不同的统计数据,其中“linear”是正常W,“standard”就是W转换为a z分数。这些都不符合我从wilcox.test获得的W(线性= 1055.5,标准化= 0.7636288,测试= -0.7636288)。有什么想法正在发生什么?

2)我喜欢wilcox_test中关于“distribution”和“ties.method”的选项,但似乎你不能像wilcox.test那样应用连续性校正。我是对的吗?

2 个答案:

答案 0 :(得分:3)

我尝试应用Wendt公式来计算使用coin包的效果大小时遇到​​了同样的问题,并且由于线性这一事实而获得了异常的 r wilcox_test()输出的统计信息未经调整。

已经给出了一个很好的解释here,因此我将简单介绍如何使用wilcox_test()函数获取调整后的U统计量。我们使用以下数据框:

d <- data.frame( x = c(rnorm(n = 60, mean = 10, sd = 5), rnorm(n = 30, mean = 16, sd = 5)), 
                 g = c(rep("a",times = 60), rep("b",times = 30)) )

我们可以使用wilcox.test()wilcox_test()执行相同的测试:

 w1 <- wilcox.test( formula = x ~ g, data = d ) 
 w2 <- wilcox_test( formula = x ~ g, data = d )

将输出两个不同的统计数据:

> w1$statistic
   W 
 321 

> w2@statistic@linearstatistic
[1] 2151

这些值确实完全不同(虽然测试是等效的)。

要获得与wilcox.test()相同的U统计量,您需要将wilcox_test()的输出统计值减去参考样本等级总和的最小值可以,n_1(n_1+1)/2

两个命令都将分组变量g的因子中的第一个级别作为参考(默认情况下按字母顺序排列)。

然后,您可以计算参考样本可能的最小总和:

n1  <- table(w2@statistic@x)[1]

并且

w2@statistic@linearstatistic-  n1*(n1+1)/2 == w1$statistic

应该返回TRUE

瞧。

答案 1 :(得分:1)

似乎是一个正在执行Mann-Whitney的U和另一个Wilcoxon等级测试,这在文学中以许多不同的方式定义。它们非常相同,只需看一下p值即可。如果你想在wilcox.test中进行连续性校正,只需使用参数correct=T

检查https://stats.stackexchange.com/questions/79843/is-the-w-statistic-outputted-by-wilcox-test-in-r-the-same-as-the-u-statistic