r - wilcox_test 为 MWU 返回错误的 U 值

标签 r statistics

当我使用 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/

相关文章:

删除ggplot2 geom_polygon中的连接线

r - R中这个函数的逻辑有什么问题?

r - 在R中将字符列转换为具有混合数字和日期的日期

python - 任意数序列的回归测试

algorithm - 评价餐厅的抗偏算法

python - 有效地找到多列的低中位数

r - 为 RODBC 安装 Cloudera Impala ODBC 驱动程序

r - r 中与引用某些对象相关的 data.table 错误

algorithm - 高效的节点流量分配

python - 通过子类化 scipy.stats.rv_continuous 创建偏斜正态分布的问题