def test_fit(): import random random.seed(1234) n = Normal.fit(Uniform.fit(Normal(2, 1.5).random(1000))) #print n.mean #print n.stddev assert abs(n.mean - 2) < 0.3 assert abs(n.stddev - 1.5) < 0.3 n = Normal.fit([1, 2, 3, 4, 5]) assert n.mean == 3 assert n.stddev == sqrt(2) n = Uniform.fit([1, 2, 3, 4, 5]) assert n.mean == 3 assert n.stddev == sqrt(2)
def test_RandomDomain(): from sympy.stats import Normal, Die, Exponential, pspace, where X = Normal('x1', 0, 1) assert str(where(X > 0)) == "Domain: 0 < x1" D = Die('d1', 6) assert str(where(D > 4)) == "Domain: Or(d1 == 5, d1 == 6)" A = Exponential('a', 1) B = Exponential('b', 1) assert str(pspace(Tuple(A, B)).domain) == "Domain: And(0 <= a, 0 <= b)"
def test_RandomDomain(): from sympy.stats import Normal, Die, Exponential, pspace, Where X = Normal(0, 1, symbol=Symbol('x1')) assert str(Where(X > 0)) == "Domain: 0 < x1" D = Die(6, symbol=Symbol('d1')) assert str(Where(D > 4)) == "Domain: Or(d1 == 5, d1 == 6)" A = Exponential(1, symbol=Symbol('a')) B = Exponential(1, symbol=Symbol('b')) assert str(pspace(Tuple(A, B)).domain) == "Domain: And(0 <= a, 0 <= b)"
def test_printing(): assert str(Normal(x + y, z)) == "Normal(x + y, z)" assert str(Sample([x, y, 1])) in [ "Sample([x, y, 1])", "Sample([y, 1, x])", "Sample([1, x, y])", "Sample([y, x, 1])", "Sample([x, 1, y])", "Sample([1, y, x])", ] assert str(Uniform(x, y)) == "Uniform(x, y)" assert str(Uniform(x + y, y)) == "Uniform(x + y, y)"
def test_Normal(): assert str(Normal(x + y, z)) == "Normal(x + y, z)"
def test_statistics(): x = Symbol("x") y = Symbol("y") for c in (ContinuousProbability, ContinuousProbability(), Normal, Normal(x, y), Sample, Sample([1, 3, 4]), Uniform, Uniform(x, y)): check(c)
def test_normal(): dps, mp.dps = mp.dps, 20 N = Normal(0, 1) assert N.random() assert N.mean == 0 assert N.variance == 1 assert N.probability(-1, 1) == erf(1/sqrt(2)) assert N.probability(-1, 0) == erf(1/sqrt(2))/2 N = Normal(2, 4) assert N.mean == 2 assert N.variance == 16 assert N.confidence(1) == (-oo, oo) assert N.probability(1, 3) == erf(1/sqrt(32)) assert N.pdf(1).evalf() == (exp(Rational(-1, 32)) / (4*sqrt(2*pi))).evalf() for p in [0.1, 0.3, 0.7, 0.9, 0.995]: a, b = N.confidence(p) assert abs(float(N.probability(a, b).evalf()) - p) < 1e-10 N = Normal(0, 2/sqrt(2*pi)) assert N.pdf(0) == Rational(1, 2) mp.dps = dps
def test_normal(): dps, mp.dps = mp.dps, 20 N = Normal(0, 1) assert N.random() assert N.mean == 0 assert N.variance == 1 assert N.probability(-1, 1) == erf(1 / sqrt(2)) assert N.probability(-1, 0) == erf(1 / sqrt(2)) / 2 N = Normal(2, 4) assert N.mean == 2 assert N.variance == 16 assert N.confidence(1) == (-oo, oo) assert N.probability(1, 3) == erf(1 / sqrt(32)) assert N.pdf(1).evalf() == (exp(Rational(-1, 32)) / (4 * sqrt(2 * pi))).evalf() for p in [0.1, 0.3, 0.7, 0.9, 0.995]: a, b = N.confidence(p) assert abs(float(N.probability(a, b).evalf()) - p) < 1e-10 N = Normal(0, 2 / sqrt(2 * pi)) assert N.pdf(0) == Rational(1, 2) mp.dps = dps
def test_pickling(): for c in (ContinuousProbability, ContinuousProbability(), Normal, Normal(x, y), Sample, Sample([1, 3, 4]), Uniform, Uniform(x, y)): check(c)