这是使用 Apache Commons 进行的不正确的 Mann-Whitney U 统计吗?

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

使用 staology.com 网站,我用 Java 和 Python 进行了 Mann-Whitney 测试。然而,Java 版本似乎不正确,或者我做错了什么。 Python 逻辑与网站相符 (https://www.statology.org/mann-whitney-u-test/)。

这是Java代码:

import org.apache.commons.math3.stat.inference.MannWhitneyUTest;

 public static void main(String[] args)
    {
        // Creating two sample datasets
        double[] data1 = {3, 5, 1, 4, 3, 5};
        double[] data2 = {4, 8, 6, 2, 1, 9};

        // Compute and print ranks
        MannWhitneyUTest mannWhitneyUTest = new MannWhitneyUTest();
        double uStatistic = mannWhitneyUTest.mannWhitneyU(data1, data2);
        double pValue = mannWhitneyUTest.mannWhitneyUTest(data1, data2);

        // Printing U statistic
        System.out.println("U-statistic: " + uStatistic);

        // Printing P value
        System.out.println("P-value: " + pValue);
    }

此代码的输出与网站不符:

U-statistic: 23.0
P-value: 0.4233396415824435

另一方面,Python 逻辑确实与网站相符:

import numpy as np
from scipy.stats import mannwhitneyu

data1 = [3, 5, 1, 4, 3, 5]
data2 = [4, 8, 6, 2, 1, 9]

# Compute and print ranks
u_statistic, p_value = mannwhitneyu(data1, data2)

# Printing the ranks
print('U-statistic: ', u_statistic)

# Computing and printing p-value
print('P-value: ', p_value)

U-statistic:  13.0
P-value:  0.46804160590041655

我在Java版本中做错了什么吗?

如果是这样,我不明白它是什么。

提前非常感谢,

python java statistics
1个回答
0
投票

如果您转到这个在线工具,并输入数据,您会看到 U 值为 13。这可能是因为您使用的 Java Apache Commons Math Library 是版本 3,而当前版本是4.

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