Fix stdev.
authorScott Gasch <[email protected]>
Thu, 17 Nov 2022 18:48:11 +0000 (10:48 -0800)
committerScott Gasch <[email protected]>
Thu, 17 Nov 2022 18:48:11 +0000 (10:48 -0800)
src/pyutils/math_utils.py
src/pyutils/types/histogram.py

index 40c6df982c6013afe767d0ff1cff6006337e749c..2a56b634d063cc966a6569bd3dd9b4bb8700d076 100644 (file)
@@ -40,7 +40,7 @@ class NumericPopulation(object):
     >>> pop.get_mean()
     5.2
     >>> round(pop.get_stdev(), 1)
-    1.4
+    3.1
     >>> pop.get_percentile(20)
     3
     >>> pop.get_percentile(60)
@@ -138,7 +138,7 @@ class NumericPopulation(object):
         for n in self.highers:
             variance += (n - mean) ** 2
         count = len(self.lowers) + len(self.highers)
-        return math.sqrt(variance) / count
+        return math.sqrt(variance / count)
 
     def _create_sorted_copy_if_needed(self, count: int):
         """Internal helper."""
@@ -314,7 +314,7 @@ def is_prime(n: int) -> bool:
     return True
 
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     import doctest
 
     doctest.testmod()
index ca77cc06e37b340768799fb27ae5751f5489bded..55abd69588a66906091f452cb44b696b2698c85a 100644 (file)
@@ -8,30 +8,28 @@ This is a text-based histogram class.  It creates output like this:
 
 A Histogram helper class.  Creates outputs like this::
 
-      [4..5): ▏                                                     ( 0.16% n=1)
-      [5..6): ██▍                                                   ( 0.64% n=4)
-      [6..7): ██████▏                                               ( 1.60% n=10)
-      [7..8): ████████████▍                                         ( 3.20% n=20)
-      [8..9): █████████████████████▊                                ( 5.60% n=35)
-     [9..10): ████████████████████████████████▍                     ( 8.32% n=52)
-    [10..11): ██████████████████████████████████████████▍           (10.88% n=68)
-    [11..12): █████████████████████████████████████████████████▉    (12.80% n=80)
-    [12..13): ████████████████████████████████████████████████████▉ (13.60% n=85)
-    [13..14): █████████████████████████████████████████████████▉    (12.80% n=80)
-    [14..15): ██████████████████████████████████████████▍           (10.88% n=68)
-    [15..16): ████████████████████████████████▍                     ( 8.32% n=52)
-    [16..17): █████████████████████▊                                ( 5.60% n=35)
-    [17..18): ████████████▍                                         ( 3.20% n=20)
-    [18..19): ██████▏                                               ( 1.60% n=10)
-    [19..20): ██▍                                                   ( 0.64% n=4)
-    [20..21): ▏                                                     ( 0.16% n=1)
+      [5..6): ▏                                                     ( 0.10% n=1)
+      [6..7): █▋                                                    ( 0.49% n=5)
+      [7..8): █████▏                                                ( 1.46% n=15)
+      [8..9): ███████████▉                                          ( 3.42% n=35)
+     [9..10): ██████████████████████▏                               ( 6.35% n=65)
+    [10..11): ██████████████████████████████████▌                   ( 9.86% n=101)
+    [11..12): ██████████████████████████████████████████████▏       (13.18% n=135)
+    [12..13): ████████████████████████████████████████████████████▉ (15.14% n=155)
+    [13..14): ████████████████████████████████████████████████████▉ (15.14% n=155)
+    [14..15): ██████████████████████████████████████████████▏       (13.18% n=135)
+    [15..16): ██████████████████████████████████▌                   ( 9.86% n=101)
+    [16..17): ██████████████████████▏                               ( 6.35% n=65)
+    [17..18): ███████████▉                                          ( 3.42% n=35)
+    [18..19): █████▏                                                ( 1.46% n=15)
+    [19..20): █▋                                                    ( 0.49% n=5)
+    [20..21): ▏                                                     ( 0.10% n=1)
     --------------------------------------------------------------------------------
-     [4..21):                                                         pop(Σn)=625
-                                                                      mean(μ)=12.000
+     [5..21):                                                         pop(Σn)=1024
+                                                                      mean(μ)=12.500
                                                                   median(p50)=12.000
                                                                      mode(Mo)=12.000
-                                                                     stdev(σ)=0.113
-
+                                                                     stdev(σ)=2.500
 """
 
 import math