You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by al...@apache.org on 2021/05/18 00:28:14 UTC
[datasketches-cpp] branch kolmogorov_smirnov updated: more tests
This is an automated email from the ASF dual-hosted git repository.
alsay pushed a commit to branch kolmogorov_smirnov
in repository https://gitbox.apache.org/repos/asf/datasketches-cpp.git
The following commit(s) were added to refs/heads/kolmogorov_smirnov by this push:
new ea8ea8a more tests
ea8ea8a is described below
commit ea8ea8a8e977a9ae0187d1c986bef4f0ff66a8f7
Author: AlexanderSaydakov <Al...@users.noreply.github.com>
AuthorDate: Mon May 17 17:28:05 2021 -0700
more tests
---
kll/test/kolmogorov_smirnov_test.cpp | 34 +++++++++++++++++++++++++++++-----
1 file changed, 29 insertions(+), 5 deletions(-)
diff --git a/kll/test/kolmogorov_smirnov_test.cpp b/kll/test/kolmogorov_smirnov_test.cpp
index 34f8430..4c1d7b2 100644
--- a/kll/test/kolmogorov_smirnov_test.cpp
+++ b/kll/test/kolmogorov_smirnov_test.cpp
@@ -27,14 +27,15 @@
namespace datasketches {
TEST_CASE("kolmogorov-smirnov empty", "[kll_sketch]") {
- const uint16_t k = 256;
+ const uint16_t k = 200;
kll_sketch<double> sketch1(k);
kll_sketch<double> sketch2(k);
REQUIRE(kolmogorov_smirnov::delta(sketch1, sketch2) == 0);
+ REQUIRE_FALSE(kolmogorov_smirnov::test(sketch1, sketch2, 0.01));
}
TEST_CASE("kolmogorov-smirnov same distribution", "[kll_sketch]") {
- const uint16_t k = 256;
+ const uint16_t k = 200;
kll_sketch<double> sketch1(k);
kll_sketch<double> sketch2(k);
std::default_random_engine rand;
@@ -46,10 +47,11 @@ TEST_CASE("kolmogorov-smirnov same distribution", "[kll_sketch]") {
sketch2.update(x);
}
REQUIRE(kolmogorov_smirnov::delta(sketch1, sketch2) == Approx(0).margin(0.01));
+ REQUIRE_FALSE(kolmogorov_smirnov::test(sketch1, sketch2, 0.01));
}
TEST_CASE("kolmogorov-smirnov very different distributions", "[kll_sketch]") {
- const uint16_t k = 256;
+ const uint16_t k = 200;
kll_sketch<double> sketch1(k);
kll_sketch<double> sketch2(k);
std::default_random_engine rand;
@@ -63,10 +65,11 @@ TEST_CASE("kolmogorov-smirnov very different distributions", "[kll_sketch]") {
const auto delta = kolmogorov_smirnov::delta(sketch1, sketch2);
REQUIRE(delta == Approx(1.0).margin(1e-6));
REQUIRE(delta <= 1);
+ REQUIRE(kolmogorov_smirnov::test(sketch1, sketch2, 0.05));
}
TEST_CASE("kolmogorov-smirnov slightly different distributions", "[kll_sketch]") {
- const uint16_t k = 256;
+ const uint16_t k = 2000;
kll_sketch<double> sketch1(k);
kll_sketch<double> sketch2(k);
std::default_random_engine rand;
@@ -78,10 +81,31 @@ TEST_CASE("kolmogorov-smirnov slightly different distributions", "[kll_sketch]")
sketch2.update(x);
}
const double delta = kolmogorov_smirnov::delta(sketch1, sketch2);
- REQUIRE(delta == Approx(0.03).margin(0.01));
+ REQUIRE(delta == Approx(0.02).margin(0.01));
const double threshold = kolmogorov_smirnov::threshold(sketch1, sketch2, 0.05);
+ //std::cout << "delta=" << delta << ", threshold=" << threshold << "\n";
REQUIRE_FALSE(delta > threshold);
REQUIRE_FALSE(kolmogorov_smirnov::test(sketch1, sketch2, 0.05));
}
+TEST_CASE("kolmogorov-smirnov slightly different distributions high resolution", "[kll_sketch]") {
+ const uint16_t k = 8000;
+ kll_sketch<double> sketch1(k);
+ kll_sketch<double> sketch2(k);
+ std::default_random_engine rand;
+ std::normal_distribution<double> distr;
+ const int n = k * 3 - 1;
+ for (int i = 0; i < n; ++i) {
+ const double x = distr(rand);
+ sketch1.update(x + 0.05);
+ sketch2.update(x);
+ }
+ const double delta = kolmogorov_smirnov::delta(sketch1, sketch2);
+ REQUIRE(delta == Approx(0.02).margin(0.01));
+ const double threshold = kolmogorov_smirnov::threshold(sketch1, sketch2, 0.05);
+ //std::cout << "delta=" << delta << ", threshold=" << threshold << "\n";
+ REQUIRE(delta > threshold);
+ REQUIRE(kolmogorov_smirnov::test(sketch1, sketch2, 0.05));
+}
+
} /* namespace datasketches */
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org