bpo-37905: Improve docs for NormalDist (GH-15486) (GH-15487)

(cherry picked from commit 8371799e30)

Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2019-08-25 01:04:24 -07:00 committed by Raymond Hettinger
parent e266d062e0
commit 970548c00b
1 changed files with 7 additions and 20 deletions

View File

@ -667,12 +667,8 @@ of applications in statistics.
.. method:: NormalDist.overlap(other)
Compute the `overlapping coefficient (OVL)
<http://www.iceaaonline.com/ready/wp-content/uploads/2014/06/MM-9-Presentation-Meet-the-Overlapping-Coefficient-A-Measure-for-Elevator-Speeches.pdf>`_
between two normal distributions, giving a measure of agreement.
Returns a value between 0.0 and 1.0 giving `the overlapping area for
the two probability density functions
<https://www.rasch.org/rmt/rmt101r.htm>`_.
Returns a value between 0.0 and 1.0 giving the overlapping area for
the two probability density functions.
Instances of :class:`NormalDist` support addition, subtraction,
multiplication and division by a constant. These operations
@ -734,16 +730,6 @@ Find the `quartiles <https://en.wikipedia.org/wiki/Quartile>`_ and `deciles
>>> [round(sat.inv_cdf(p / 10)) for p in range(1, 10)]
[810, 896, 958, 1011, 1060, 1109, 1162, 1224, 1310]
What percentage of men and women will have the same height in `two normally
distributed populations with known means and standard deviations
<http://www.usablestats.com/lessons/normal>`_?
>>> men = NormalDist(70, 4)
>>> women = NormalDist(65, 3.5)
>>> ovl = men.overlap(women)
>>> round(ovl * 100.0, 1)
50.3
To estimate the distribution for a model than isn't easy to solve
analytically, :class:`NormalDist` can generate input samples for a `Monte
Carlo simulation <https://en.wikipedia.org/wiki/Monte_Carlo_method>`_:
@ -754,11 +740,12 @@ Carlo simulation <https://en.wikipedia.org/wiki/Monte_Carlo_method>`_:
... return (3*x + 7*x*y - 5*y) / (11 * z)
...
>>> n = 100_000
>>> X = NormalDist(10, 2.5).samples(n)
>>> Y = NormalDist(15, 1.75).samples(n)
>>> Z = NormalDist(5, 1.25).samples(n)
>>> seed = 86753099035768
>>> X = NormalDist(10, 2.5).samples(n, seed=seed)
>>> Y = NormalDist(15, 1.75).samples(n, seed=seed)
>>> Z = NormalDist(50, 1.25).samples(n, seed=seed)
>>> NormalDist.from_samples(map(model, X, Y, Z)) # doctest: +SKIP
NormalDist(mu=19.640137307085507, sigma=47.03273142191088)
NormalDist(mu=1.8661894803304777, sigma=0.65238717376862)
Normal distributions commonly arise in machine learning problems.