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