在试图找出哪一个更好用时,我遇到了两个问题。
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那样应用连续性校正。我是对的吗?
答案 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
。