From 2c8fade3d7da2ae934d06d55494a3896a0591f9b Mon Sep 17 00:00:00 2001 From: Han Fei Date: Mon, 19 Aug 2024 17:06:24 +0200 Subject: [PATCH] fix bug in mann whitney u test --- .../AggregateFunctionMannWhitney.cpp | 2 +- .../01561_mann_whitney_scipy.python | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/AggregateFunctions/AggregateFunctionMannWhitney.cpp b/src/AggregateFunctions/AggregateFunctionMannWhitney.cpp index fa90846650d..ecd848f5af3 100644 --- a/src/AggregateFunctions/AggregateFunctionMannWhitney.cpp +++ b/src/AggregateFunctions/AggregateFunctionMannWhitney.cpp @@ -114,7 +114,7 @@ private: { if (ind < first.size()) return first[ind]; - return second[ind % first.size()]; + return second[ind - first.size()]; } size_t size() const diff --git a/tests/queries/0_stateless/01561_mann_whitney_scipy.python b/tests/queries/0_stateless/01561_mann_whitney_scipy.python index 4713120287d..a15ab7a41d9 100644 --- a/tests/queries/0_stateless/01561_mann_whitney_scipy.python +++ b/tests/queries/0_stateless/01561_mann_whitney_scipy.python @@ -17,9 +17,20 @@ def test_and_check(name, a, b, t_stat, p_value): client.query( "CREATE TABLE mann_whitney (left Float64, right UInt8) ENGINE = Memory;" ) + #client.query( + # "INSERT INTO mann_whitney VALUES {};".format( + # ", ".join(["({},{}), ({},{})".format(i, 0, j, 1) for i, j in zip(a, b)]) + # ) + #) client.query( "INSERT INTO mann_whitney VALUES {};".format( - ", ".join(["({},{}), ({},{})".format(i, 0, j, 1) for i, j in zip(a, b)]) + ", ".join(["({},{})".format(i, 0) for i in a]) + ) + ) + + client.query( + "INSERT INTO mann_whitney VALUES {};".format( + ", ".join(["({},{})".format(i, 1) for i in b]) ) ) @@ -59,6 +70,15 @@ def test_mann_whitney(): test_and_check("mannWhitneyUTest('greater')", rvs1, rvs2, s, p) +def test_mann_whitney_skew(): + rvs1 = [1] + rvs2 = [0,2,4] + s, p = stats.mannwhitneyu(rvs1, rvs2, alternative="two-sided") + test_and_check("mannWhitneyUTest", rvs1, rvs2, s, p) + test_and_check("mannWhitneyUTest('two-sided')", rvs1, rvs2, s, p) + + if __name__ == "__main__": test_mann_whitney() + test_mann_whitney_skew() print("Ok.")