当我使用 wilcox.test 运行 Mann Whitney U 非参数检验时,返回的 W 值是两个 U 值中较大的一个。这对我来说似乎很奇怪,因为 MWU 测试使用两个 U 值中较小的一个作为测试统计量,所以我希望看到该值来报告数据。下面是一个例子。如果我在 R 中运行代码,W 值列为 214。
wilcox.test(disp ~ am, data = mtcars)
但是如果我使用另一个程序或网站计算这个(我喜欢这个计算器:https://www.socscistatistics.com/tests/mannwhitney/),我得到两个 U 值是 33 和 214。然后我们使用 33 来检查临界值并报告值(value)。
是否有任何包可以以更用户友好的方式计算 MWU,将正确/较小的 U 值显示为测试统计量?我试过 rstatix 的版本,它做同样的事情。另外,有谁知道为什么这是默认行为?这似乎违反直觉。
最佳答案
如果您的数据采用宽格式,请使用双参数格式的 wilcox.test
,而不是公式格式。切换参数将提供两个 U
值。
将 mtcars
转为 wide:
library(dplyr)
library(magrittr)
mtcars_wide<- mtcars %>%
pivot_wider(names_from = "am", values_from = "disp", names_prefix = "am_")
使用wilcox.test
的双参数格式获取每个U
:
mtcars_wide %$% wilcox.test(am_0, am_1, data = .)$statistic # 214
mtcars_wide %$% wilcox.test(am_1, am_0, data = .)$statistic # 33
注意:如何将数据移动到宽格式并不重要 - 我使用 tidyverse 包,但它们不是必需的。关键是您可以在运行测试时通过交换列名来获取每个 U
。
关于r - wilcox_test 为 MWU 返回错误的 U 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64178167/