bpo-40855: Fix ignored mu and xbar parameters (GH-20835)
This commit is contained in:
parent
dea3223740
commit
d71ab4f738
|
@ -682,7 +682,9 @@ def _ss(data, c=None):
|
||||||
calculated from ``c`` as given. Use the second case with care, as it can
|
calculated from ``c`` as given. Use the second case with care, as it can
|
||||||
lead to garbage results.
|
lead to garbage results.
|
||||||
"""
|
"""
|
||||||
if c is None:
|
if c is not None:
|
||||||
|
T, total, count = _sum((x-c)**2 for x in data)
|
||||||
|
return (T, total)
|
||||||
c = mean(data)
|
c = mean(data)
|
||||||
T, total, count = _sum((x-c)**2 for x in data)
|
T, total, count = _sum((x-c)**2 for x in data)
|
||||||
# The following sum should mathematically equal zero, but due to rounding
|
# The following sum should mathematically equal zero, but due to rounding
|
||||||
|
|
|
@ -2089,6 +2089,10 @@ class TestVariance(VarianceStdevMixin, NumericTestCase, UnivariateTypeMixin):
|
||||||
self.assertEqual(result, exact)
|
self.assertEqual(result, exact)
|
||||||
self.assertIsInstance(result, Decimal)
|
self.assertIsInstance(result, Decimal)
|
||||||
|
|
||||||
|
def test_center_not_at_mean(self):
|
||||||
|
data = (1.0, 2.0)
|
||||||
|
self.assertEqual(self.func(data), 0.5)
|
||||||
|
self.assertEqual(self.func(data, xbar=2.0), 1.0)
|
||||||
|
|
||||||
class TestPStdev(VarianceStdevMixin, NumericTestCase):
|
class TestPStdev(VarianceStdevMixin, NumericTestCase):
|
||||||
# Tests for population standard deviation.
|
# Tests for population standard deviation.
|
||||||
|
@ -2101,6 +2105,11 @@ class TestPStdev(VarianceStdevMixin, NumericTestCase):
|
||||||
expected = math.sqrt(statistics.pvariance(data))
|
expected = math.sqrt(statistics.pvariance(data))
|
||||||
self.assertEqual(self.func(data), expected)
|
self.assertEqual(self.func(data), expected)
|
||||||
|
|
||||||
|
def test_center_not_at_mean(self):
|
||||||
|
# See issue: 40855
|
||||||
|
data = (3, 6, 7, 10)
|
||||||
|
self.assertEqual(self.func(data), 2.5)
|
||||||
|
self.assertEqual(self.func(data, mu=0.5), 6.5)
|
||||||
|
|
||||||
class TestStdev(VarianceStdevMixin, NumericTestCase):
|
class TestStdev(VarianceStdevMixin, NumericTestCase):
|
||||||
# Tests for sample standard deviation.
|
# Tests for sample standard deviation.
|
||||||
|
@ -2118,6 +2127,9 @@ class TestStdev(VarianceStdevMixin, NumericTestCase):
|
||||||
expected = math.sqrt(statistics.variance(data))
|
expected = math.sqrt(statistics.variance(data))
|
||||||
self.assertEqual(self.func(data), expected)
|
self.assertEqual(self.func(data), expected)
|
||||||
|
|
||||||
|
def test_center_not_at_mean(self):
|
||||||
|
data = (1.0, 2.0)
|
||||||
|
self.assertEqual(self.func(data, xbar=2.0), 1.0)
|
||||||
|
|
||||||
class TestGeometricMean(unittest.TestCase):
|
class TestGeometricMean(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
The standard deviation and variance functions in the statistics module were
|
||||||
|
ignoring their mu and xbar arguments.
|
Loading…
Reference in New Issue