在 Excel 中重现 Mann-Whitney U

问题描述 投票:0回答:1

我正在尝试在 Excel 中计算 Mann-Whitney 检验,但得到的结果与在 python 中得到的结果不完全相同。

例如我有以下数据:

  • 2015 年观测值:2,2,5,1,2,2,2,4,2,4,5,4,2,1,3,3,2,2,1,2,2,1,4 ,3,1,3,4,3,5,1

  • 2016 年观测值:2,1,2,5,5,1,5,3,2,1,2,5,5,2,4,4,3,1,2,2,1,3,3 ,1,2,5,1,4,3,5

我使用以下代码:

scipy.stats.mannwhitneyu([2,2,5,1,2,2,2,4,2,4,5,4,2,1,3,3,2,2,1,2,2,1,4,3,1,3,4,3,5,1], 
                         [2,1,2,5,5,1,5,3,2,1,2,5,5,2,4,4,3,1,2,2,1,3,3,1,2,5,1,4,3,5], 
                         use_continuity=False)

我得到了以下结果:

  • Python:统计=416.5,p值=0.3053664240420257
  • Excel:统计=416.5,p值=0,305366424042026

所以它们是相等的。

但是当我写 use_continuity=True 时,我得到以下结果:

  • Python:*统计=416.5,p值=0.30803418957886164
  • Excel:*统计=416.5,p值=0,302708955583188

当我输入 use_continuity=-1 时,我得到以下信息:

  • Python:统计=416.5,p值=0.30270895558318833
  • Excel:统计=416.5,p值=0,308034189578862

所以你可能会看到,我有 excel 和 python 的相反结果。根据这个解释 https://github.com/scipy/scipy/blob/v1.6.3/scipy/stats/stats.py#L7090-L7185 use_Continity 用于

  • 平均排名 = n1*n2/2.0 + 0.5 * use_连续性

有没有可能解释不正确,确实有

  • 平均排名 = n1*n2/2.0 - 0.5 * use_连续性 ?

或者也许你有任何其他想法为什么我会得到不正确的结果?

python excel p-value
1个回答
0
投票

SciPy 中的连续性校正实现正确,如

scipy/scipy#2118
中所述。 “应该”发生的是校正将检验统计量推向渐近分布的均值,稍微增加 p 值以补偿精确分布的离散性质。自从这个问题发布以来,mannwhitneyu已被重写,连续性校正的新实现已可用
here
另外,请注意

use_continuity=-1

绝不应该被允许;这是一个错误。

    

© www.soinside.com 2019 - 2024. All rights reserved.