#!/usr/bin/env python
# (C) 2000 Huaiyu Zhu <hzhu@users.sourceforge.net>. Licence: GPL
# $Id: test_probs.py,v 1.7 2000/08/06 07:21:17 hzhu Exp $
"""
Statistical distributions
"""
from MatPy.Stats.utils import histplot
if __name__ == "__main__": waittime = None
else: waittime = 1
i = 0
def test(g, dist, x, __name__):
"For dist: generate rand, draw pdf, cdf and cdfc on points x"
global i
print dist.__doc__
print dist.rand((2,5))
g.title("The %s distribution" % dist.__class__.__name__)
n = 400
y = dist.rand((n,1))
histplot(y, x=30, waittime=1, g=g, scaled=1)
g.holdon
curves = [dist.pdf(x), dist.cdf(x), dist.cdfc(x)]
g.plot(curves, xs=[x]*3, names=["pdf", "cdf", "cdfc"])
g.hardcopy("probs_%s.ps" %i)
i = i + 1
g.holdoff
wait(waittime)
#------------------------------------------------------------------
from MatPy.gplot import Gplot, wait
g = Gplot()
from MatPy.Stats.distribs import binomial, negbinomial, poisson
from MatPy.Stats.distribs import beta, gamma, normal, chi2, t, F
from MatPy.Matrix import r_range
x = r_range(100)/10.
#------------------------------------------------------------------
print "-"*30, "Testing distributions in [-Inf, Inf]"
for dist in [normal(), t(2)]:
test(g, dist, x-5, __name__)
print "-"*30, "Testing distributions in [0, Inf]"
for dist in [gamma(2,1), chi2(4), F(5,9)]:
test(g, dist, x+1e-100, __name__)
"""
binomial,
negbinomial,
poisson,
beta,
gamma,
normal,
chi2,
t,
F,
"""
Result obtained with
>>> from MatPy.tests import test_probs
------------------------------ Testing distributions in [-Inf, Inf]
Normal distribution:
pdf = 1/(b*sqrt(pi)) * exp(-((x-a)/b)^2 / 2)
[-0.946 1.57 1.06 0.253 0.351
-0.219 -1.43 1.07 0.582 1.73 ]
<MatPy.gplot.Gplot instance at 0x8199e04>
Student t distribution (n>0):
pdf = gam((n+1)/2) / (sqrt(n*pi)* gam(n/2)) * (1+x^2/n)^(-(n+1)/2)
[-8.9 -0.61 0.397 -0.263 -1
-0.851 -0.223 0.0603 1.71 -0.419 ]
<MatPy.gplot.Gplot instance at 0x8199e04>
------------------------------ Testing distributions in [0, Inf]
Gamma distribution (a>0, b>0):
pdf = b/gamma(a) * (b*x)^(a-1) * exp(-b*x)
[ 0.948 1.42 0.311 3.95 2.33
1.04 0.762 1.99 2.3 2.09 ]
<MatPy.gplot.Gplot instance at 0x8199e04>
Chi square distribution with n degrees of freedom (n>0):
pdf_t = 1/(2* gam(n/2)) * (t/2)^(n/2-1) * exp(-t/2)
= pdfg(x, n/2, 1/2)
[ 5.01 5.46 2.91 2.99 4.75
1.29 1.22 1.74 13 5.41 ]
<MatPy.gplot.Gplot instance at 0x8199e04>
F distribution (n1>0, n2>0):
(also known as Snedcor's density or the variance ratio density)
pdf = density of (u1/n1)/(u2/n2),
where u1 and u2 are Chi variates with n1 and n2 degrees of freedom.
[ 2.28 0.158 0.474 0.718 1.42
0.421 3.45 1.76 0.627 1.52 ]
<MatPy.gplot.Gplot instance at 0x8199e04>