]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Stronger tests for the statistics kernel formulas (gh-120506)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Fri, 14 Jun 2024 15:21:35 +0000 (10:21 -0500)
committerGitHub <noreply@github.com>
Fri, 14 Jun 2024 15:21:35 +0000 (10:21 -0500)
Lib/test/test_statistics.py

index 0b28459f03d86af2a8e1bae5f21f5e58b41924c4..c374c947e02a6bb12db4cf1a9fbe5d5345e3cbed 100644 (file)
@@ -2434,18 +2434,22 @@ class TestKDE(unittest.TestCase):
         data.append(100)
         self.assertGreater(f_hat(100), 0.0)
 
-    def test_kde_kernel_invcdfs(self):
+    def test_kde_kernel_specs(self):
+        # White-box test for the kernel formulas in isolation from
+        # their downstream use in kde() and kde_random()
         kernel_specs = statistics._kernel_specs
-        kde = statistics.kde
 
         # Verify that cdf / invcdf will round trip
         xarr = [i/100 for i in range(-100, 101)]
+        parr = [i/1000 + 5/10000 for i in range(1000)]
         for kernel, spec in kernel_specs.items():
+            cdf = spec['cdf']
             invcdf = spec['invcdf']
             with self.subTest(kernel=kernel):
-                cdf = kde([0.0], h=1.0, kernel=kernel, cumulative=True)
                 for x in xarr:
                     self.assertAlmostEqual(invcdf(cdf(x)), x, places=6)
+                for p in parr:
+                    self.assertAlmostEqual(cdf(invcdf(p)), p, places=11)
 
     @support.requires_resource('cpu')
     def test_kde_random(self):