如何解决wilcox_test为MWU返回错误的U值
当我使用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来检查临界值,并且报告该值。
是否有任何软件包能够以更加用户友好的方式计算MWU,并显示正确/较小的U值作为测试统计信息?我尝试了rstatix的版本,并且做同样的事情。另外,有人知道为什么这是默认行为吗?似乎违反直觉。
解决方法
如果您的数据格式较宽,请使用wilcox.test
的两个参数格式,而不是公式格式。切换参数将提供两个U
值。
将mtcars
旋转到宽:
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
。
注意 stats软件包中的wilcox.test
函数未遵循与t.test
相同的约定,并根据分组差异的符号反转了测试统计的符号。它计算具有相同显着性水平的不同测试统计量估计值。 V 测试统计信息的符号始终为正,因为它是正符号秩的总和。
如果您想要其他数字mtcars示例,请考虑手动重新排列因子水平
wilcox.test(disp ~ am,data = mtcars)
#> Wilcoxon rank sum test with continuity correction
#>
#> data: disp by am
#> W = 214,p-value = 0.0005493
#> alternative hypothesis: true location shift is not equal to 0
mtcars$am <- factor(mtcars$am,levels = c(1,0))
wilcox.test(disp ~ am,data = mtcars)
#> Wilcoxon rank sum test with continuity correction
#>
#> data: disp by am
#> W = 33,p-value = 0.0005493
#> alternative hypothesis: true location shift is not equal to 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。