R中的 wilcox.test 和 coin::wilcox_test 有什么区别?

机器算法验证 r 假设检验 p 值 wilcoxon-mann-whitney 检验
2022-03-20 19:13:28

这两个函数存在于 R 中,但我不知道它们的区别。似乎它们仅在wilcox.test使用correct=FALSEwilcox_test(在硬币包中)调用时返回相同的 p 值distribution="aymptotic"对于其他值,它们返回不同的 p 值。wilcox.test总是为我的数据集返回 W=0,与其参数的设置无关:

x = c(1, 1, 1, 3, 3, 3, 3)y = c(4, 4, 6, 7, 7, 8, 10)

此外,当我尝试使用 R 以外的其他工具(一些在线提供,其他作为 Excel 插件)时,有时它们会报告不同的 p 值。

那么我怎么知道哪个工具给出了“正确的”p值呢?

是否有“正确”的 p 值,或者如果一些工具给出的 p 值 < 0.05,我应该高兴吗?(有时这些工具不像 R 那样提供这么多的参数化可能性。)

我在这里想念什么?

1个回答

您的问题的关键在注释部分的 ?wilcox.test 中找到:

文献对 Wilcoxon 秩和和 Mann-Whitney 检验的定义并不一致。

所以这意味着有不止一种方法可以对两个样本之间的位置变化进行非参数测试。此外,给定每个定义,获得 ap 值的方法不止一种。“精确”意味着它是绝对正确的,而“近似”或“渐近”都是事实的近似。wilcox.test()这就是为什么and中有多个选项wilcox_test(),并且只有其中一些完全匹配 - 当您让两个函数执行完全相同的事情时。即使存在绑定值,它看起来wilcox_test()也可以获得精确的 p 值,而当存在绑定值时,它wilcox.test()会退回到渐近近似值。我不知道 Excel 插件在做什么统计和 p 值计算的组合,

您的下一个问题是为什么wilcox.test()总是返回 0。对于您创建的数据集,执行 wilcox.test(x,y) 时测试统计量的值为 0,但执行 wilcox.test(y,x) 时将为 49,尽管 p 值将是相同的。有关原因,请参阅维基百科页面。wilcox_test()返回由 返回的统计量的 Z 变换wilcox.test(),这就是为什么它们具有不同的检验统计量值。

有正确的 p 值吗?是的,但有时计算太难了,因此我们需要使用近似方法(参见 ?wilcox_test 以了解精确计算如何因内存不足而失败的描述)。除非两组位置的真实差异非常小,否则近似值和精确值之间的差异几乎无关紧要。