为什么R和Python Mann Whitney不同?

时间:2014-08-18 20:04:11

标签: python r statistics

我想知道为什么我的答案在python和R中进行mann whitney u测试时是如此不同。在python中:

from scipy.stats import mannwhitneyu
t = [1,2,3]
g = [4,5,6,7,8,9]
mannwhitneyu(t,g)
(0.0, 0.014092901073953692)

在R:

t = c(1,2,3)
g = c(4,5,6,7,8,9)
wilcox.test(t,g, paired = FALSE)

   Wilcoxon rank sum test

data:  t and g
W = 0, p-value = 0.02381
alternative hypothesis: true location shift is not equal to 0

我想知道为什么python看起来更像是单侧测试。

2 个答案:

答案 0 :(得分:6)

记录scipy版本以返回单侧p值。 (目前,doc网站对我不利,所以我无法提供链接,但是如果查看mannwhitneyu函数的帮助,就可以看到它。)R函数是documented允许您指定侧面度,默认为双面。

答案 1 :(得分:0)

scipy中的MW测试不适用于小于20的样本量。请参见其文档中的注释。因此,您的python结果不准确。

从下面的链接

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html

” 笔记

仅在每个样本中的观察次数大于20并且您具有2个独立的等级样本时使用。如果获得的u小于或等于U的临界值,则Mann-Whitney U是有意义的。

此测试可校正平头,默认情况下使用连续性校正。 “