在试图找出哪一种更好时,我遇到了两个问题。
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,“standardized”只是W转换为a Z分数。但是这些都不符合我从wilcox.test获得的W(线性= 1055.5,标准化= 0.7636288,测试= -0.7636288)。有什么想法吗?
2)我喜欢wilcox_test中用于“distribution”和“ties.method”的选项,但是看来您不能像wilcox.test中那样应用连续性校正。我对吗?
最佳答案
尝试将Wendt公式应用于coin
包来计算效果大小时,我遇到了相同的问题,由于wilcox_test()
输出的线性统计数据未经调整,因此获得了异常的r值。
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
值确实完全不同(尽管测试是等效的)。
要获得与ojit_code相同的U统计量,您需要减去
wilcox.test()
的输出统计量,即引用样本的秩和之和可以取的最小值,即wilcox_test()
。这两个命令均以分组变量
n_1(n_1+1)/2
的因子中的第一级作为引用(默认情况下将按字母顺序排列)。然后,您可以计算引用样本可能的最小秩和:
n1 <- table(w2@statistic@x)[1]
和
w2@statistic@linearstatistic- n1*(n1+1)/2 == w1$statistic
应该返回
g
Voilà。
关于r - coin::wilcox_test与R中的wilcox.test,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23450221/