【问题标题】:Why are R and Python Mann Whitney different?为什么 R 和 Python Mann Whitney 不同?
【发布时间】:2014-10-11 19:58:27
【问题描述】:

我想知道为什么在 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 看起来更像是单面测试。

【问题讨论】:

标签: python r statistics


【解决方案1】:

scipy 版本被记录为返回一个单边的 p 值。 (文档站点目前对我来说已关闭,因此我无法提供链接,但如果您查看 mannwhitneyu 函数的帮助,您可以看到它。)R 函数是 documented 允许您指定面数,默认为双面。

【讨论】:

  • scipy[docs.scipy.org/doc/scipy/reference/generated/… 版本可以参数化以返回两侧值。但是,我得到的 U 统计结果在 R(统计 = 200)和 Python(统计 = 1400)中是不同的。知道为什么吗?
  • @MrT77:请提供一个最小代码示例的单独问题。
  • @MrT77:你刚刚链接回同一个问题。
【解决方案2】:

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

从下面的链接

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

" 备注

仅当每个样本中的观察次数 > 20 并且您有 2 个独立的秩样本时才使用。如果获得的 u 小于或等于 U 的临界值,Mann-Whitney U 是显着的。

此测试会校正关系,默认情况下会使用连续性校正。 "

【讨论】:

  • 虽然这可能会回答问题,但您应该 edit 您的回答,以在答案本身提供的链接中包含最重要和相关的信息。如果链接停止工作或内容发生重大变化,这有助于防止您的答案变得无效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多