summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_statistics.py
diff options
context:
space:
mode:
authorRaymond Hettinger <rhettinger@users.noreply.github.com>2024-05-05 17:29:23 (GMT)
committerGitHub <noreply@github.com>2024-05-05 17:29:23 (GMT)
commit5092ea238e28c7d099c662d416b2a96fdbea4790 (patch)
tree0266e5db030fd8f5544c5689949e1cb896ef88bb /Lib/test/test_statistics.py
parent9c13d9e37a194f574b8591da634bf98419786448 (diff)
downloadcpython-5092ea238e28c7d099c662d416b2a96fdbea4790.zip
cpython-5092ea238e28c7d099c662d416b2a96fdbea4790.tar.gz
cpython-5092ea238e28c7d099c662d416b2a96fdbea4790.tar.bz2
Fix negative bandwidth test and add online code path test. (gh-118600)
Diffstat (limited to 'Lib/test/test_statistics.py')
-rw-r--r--Lib/test/test_statistics.py28
1 files changed, 22 insertions, 6 deletions
diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py
index a60791e..4068075 100644
--- a/Lib/test/test_statistics.py
+++ b/Lib/test/test_statistics.py
@@ -2402,7 +2402,7 @@ class TestKDE(unittest.TestCase):
with self.assertRaises(StatisticsError):
kde(sample, h=0.0) # Zero bandwidth
with self.assertRaises(StatisticsError):
- kde(sample, h=0.0) # Negative bandwidth
+ kde(sample, h=-1.0) # Negative bandwidth
with self.assertRaises(TypeError):
kde(sample, h='str') # Wrong bandwidth type
with self.assertRaises(StatisticsError):
@@ -2426,6 +2426,14 @@ class TestKDE(unittest.TestCase):
self.assertEqual(f_hat(-1.0), 1/2)
self.assertEqual(f_hat(1.0), 1/2)
+ # Test online updates to data
+
+ data = [1, 2]
+ f_hat = kde(data, 5.0, 'triangular')
+ self.assertEqual(f_hat(100), 0.0)
+ data.append(100)
+ self.assertGreater(f_hat(100), 0.0)
+
def test_kde_kernel_invcdfs(self):
kernel_invcdfs = statistics._kernel_invcdfs
kde = statistics.kde
@@ -2462,7 +2470,7 @@ class TestKDE(unittest.TestCase):
with self.assertRaises(TypeError):
kde_random(iter(sample), 1.5) # Data is not a sequence
with self.assertRaises(StatisticsError):
- kde_random(sample, h=0.0) # Zero bandwidth
+ kde_random(sample, h=-1.0) # Zero bandwidth
with self.assertRaises(StatisticsError):
kde_random(sample, h=0.0) # Negative bandwidth
with self.assertRaises(TypeError):
@@ -2474,10 +2482,10 @@ class TestKDE(unittest.TestCase):
h = 1.5
kernel = 'cosine'
- prng = kde_random(sample, h, kernel)
- self.assertEqual(prng.__name__, 'rand')
- self.assertIn(kernel, prng.__doc__)
- self.assertIn(repr(h), prng.__doc__)
+ rand = kde_random(sample, h, kernel)
+ self.assertEqual(rand.__name__, 'rand')
+ self.assertIn(kernel, rand.__doc__)
+ self.assertIn(repr(h), rand.__doc__)
# Approximate distribution test: Compare a random sample to the expected distribution
@@ -2507,6 +2515,14 @@ class TestKDE(unittest.TestCase):
for x in xarr:
self.assertTrue(math.isclose(p_observed(x), p_expected(x), abs_tol=0.0005))
+ # Test online updates to data
+
+ data = [1, 2]
+ rand = kde_random(data, 5, 'triangular')
+ self.assertLess(max([rand() for i in range(5000)]), 10)
+ data.append(100)
+ self.assertGreater(max(rand() for i in range(5000)), 10)
+
class TestQuantiles(unittest.TestCase):