使用 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版本中做错了什么吗?
如果是这样,我不明白它是什么。
提前非常感谢,
如果您转到这个在线工具,并输入数据,您会看到 U 值为 13。这可能是因为您使用的 Java Apache Commons Math Library 是版本 3,而当前版本是4.