def test_bernoulli(): p, a, b, t = symbols("p a b t") X = Bernoulli("B", p, a, b) assert E(X) == a * p + b * (-p + 1) assert density(X)[a] == p assert density(X)[b] == 1 - p assert characteristic_function(X)( t) == p * exp(I * a * t) + (-p + 1) * exp(I * b * t) assert moment_generating_function(X)( t) == p * exp(a * t) + (-p + 1) * exp(b * t) X = Bernoulli("B", p, 1, 0) z = Symbol("z") assert E(X) == p assert simplify(variance(X)) == p * (1 - p) assert E(a * X + b) == a * E(X) + b assert simplify(variance(a * X + b)) == simplify(a**2 * variance(X)) assert quantile(X)(z) == Piecewise((nan, (z > 1) | (z < 0)), (0, z <= 1 - p), (1, z <= 1)) raises(ValueError, lambda: Bernoulli("B", 1.5)) raises(ValueError, lambda: Bernoulli("B", -0.5)) # issue 8248 assert X.pspace.compute_expectation(1) == 1
def test_bernoulli(): p, a, b = symbols('p a b') X = Bernoulli('B', p, a, b) assert E(X) == a * p + b * (-p + 1) assert density(X)[a] == p assert density(X)[b] == 1 - p X = Bernoulli('B', p, 1, 0) assert E(X) == p assert variance(X) == -p**2 + p E(a * X + b) == a * E(X) + b variance(a * X + b) == a**2 * variance(X)
def test_bernoulli(): p, a, b = symbols('p a b') X = Bernoulli('B', p, a, b) assert E(X) == a * p + b * (-p + 1) assert density(X)[a] == p assert density(X)[b] == 1 - p X = Bernoulli('B', p, 1, 0) assert E(X) == p assert simplify(variance(X)) == p * (1 - p) assert E(a * X + b) == a * E(X) + b assert simplify(variance(a * X + b)) == simplify(a**2 * variance(X))
def test_bernoulli(): p, a, b = symbols('p a b') X = Bernoulli(p, a, b, symbol='B') assert E(X) == a * p + b * (-p + 1) assert Density(X)[a] == p assert Density(X)[b] == 1 - p X = Bernoulli(p, 1, 0, symbol='B') assert E(X) == p assert Var(X) == -p**2 + p E(a * X + b) == a * E(X) + b Var(a * X + b) == a**2 * Var(X)
def test_sample_scipy(): distribs_scipy = [ FiniteRV('F', { 1: S.Half, 2: Rational(1, 4), 3: Rational(1, 4) }), DiscreteUniform("Y", list(range(5))), Die("D"), Bernoulli("Be", 0.3), Binomial("Bi", 5, 0.4), BetaBinomial("Bb", 2, 1, 1), Hypergeometric("H", 1, 1, 1), Rademacher("R") ] size = 3 scipy = import_module('scipy') if not scipy: skip('Scipy not installed. Abort tests for _sample_scipy.') else: for X in distribs_scipy: samps = sample(X, size=size) samps2 = sample(X, size=(2, 2)) for sam in samps: assert sam in X.pspace.domain.set for i in range(2): for j in range(2): assert samps2[i][j] in X.pspace.domain.set
def test_bernoulli(): p, a, b, t = symbols('p a b t') X = Bernoulli('B', p, a, b) assert E(X) == a * p + b * (-p + 1) assert density(X)[a] == p assert density(X)[b] == 1 - p assert characteristic_function(X)( t) == p * exp(I * a * t) + (-p + 1) * exp(I * b * t) X = Bernoulli('B', p, 1, 0) assert E(X) == p assert simplify(variance(X)) == p * (1 - p) assert E(a * X + b) == a * E(X) + b assert simplify(variance(a * X + b)) == simplify(a**2 * variance(X))
def test_sample_scipy(): distribs_scipy = [ FiniteRV('F', {1: S.Half, 2: Rational(1, 4), 3: Rational(1, 4)}), DiscreteUniform("Y", list(range(5))), Die("D"), Bernoulli("Be", 0.3), Binomial("Bi", 5, 0.4), BetaBinomial("Bb", 2, 1, 1), Hypergeometric("H", 1, 1, 1), Rademacher("R") ] size = 3 numsamples = 5 scipy = import_module('scipy') if not scipy: skip('Scipy not installed. Abort tests for _sample_scipy.') else: with ignore_warnings(UserWarning): ### TODO: Restore tests once warnings are removed h_sample = list(sample(Hypergeometric("H", 1, 1, 1), size=size, numsamples=numsamples)) assert len(h_sample) == numsamples for X in distribs_scipy: samps = next(sample(X, size=size)) samps2 = next(sample(X, size=(2, 2))) for sam in samps: assert sam in X.pspace.domain.set for i in range(2): for j in range(2): assert samps2[i][j] in X.pspace.domain.set
def test_bernoulli_CompoundDist(): X = Beta('X', 1, 2) Y = Bernoulli('Y', X) assert density(Y).dict == {0: S(2)/3, 1: S(1)/3} assert E(Y) == P(Eq(Y, 1)) == S(1)/3 assert variance(Y) == S(2)/9 assert cdf(Y) == {0: S(2)/3, 1: 1} # test issue 8128 a = Bernoulli('a', S(1)/2) b = Bernoulli('b', a) assert density(b).dict == {0: S(1)/2, 1: S(1)/2} assert P(b > 0.5) == S(1)/2 X = Uniform('X', 0, 1) Y = Bernoulli('Y', X) assert E(Y) == S(1)/2 assert P(Eq(Y, 1)) == E(Y)
def test_density_call(): x = Bernoulli('x', p) d = density(x) assert d(0) == 1 - p assert d(S.Zero) == 1 - p assert d(5) == 0 assert 0 in d assert 5 not in d assert d(S(0)) == d[S(0)]
def test_density_call(): from sympy.abc import p x = Bernoulli('x', p) d = density(x) assert d(0) == 1 - p assert d(S.Zero) == 1 - p assert d(5) == 0 assert 0 in d assert 5 not in d assert d(S.Zero) == d[S.Zero]
def test_bernoulli(): p, a, b, t = symbols('p a b t') X = Bernoulli('B', p, a, b) assert E(X) == a * p + b * (-p + 1) assert density(X)[a] == p assert density(X)[b] == 1 - p assert characteristic_function(X)( t) == p * exp(I * a * t) + (-p + 1) * exp(I * b * t) assert moment_generating_function(X)( t) == p * exp(a * t) + (-p + 1) * exp(b * t) X = Bernoulli('B', p, 1, 0) assert E(X) == p assert simplify(variance(X)) == p * (1 - p) assert E(a * X + b) == a * E(X) + b assert simplify(variance(a * X + b)) == simplify(a**2 * variance(X)) raises(ValueError, lambda: Bernoulli('B', 1.5)) raises(ValueError, lambda: Bernoulli('B', -0.5))
def test_symbolic_conditions(): B = Bernoulli('B', S(1) / 4) D = Die('D', 4) b, n = symbols('b, n') Y = P(Eq(B, b)) Z = E(D > n) assert Y == \ Piecewise((S(1)/4, Eq(b, 1)), (0, True)) + \ Piecewise((S(3)/4, Eq(b, 0)), (0, True)) assert Z == \ Piecewise((S(1)/4, n < 1), (0, True)) + Piecewise((S(1)/2, n < 2), (0, True)) + \ Piecewise((S(3)/4, n < 3), (0, True)) + Piecewise((S(1), n < 4), (0, True))
def test_symbolic_conditions(): B = Bernoulli('B', Rational(1, 4)) D = Die('D', 4) b, n = symbols('b, n') Y = P(Eq(B, b)) Z = E(D > n) assert Y == \ Piecewise((Rational(1, 4), Eq(b, 1)), (0, True)) + \ Piecewise((Rational(3, 4), Eq(b, 0)), (0, True)) assert Z == \ Piecewise((Rational(1, 4), n < 1), (0, True)) + Piecewise((S.Half, n < 2), (0, True)) + \ Piecewise((Rational(3, 4), n < 3), (0, True)) + Piecewise((S.One, n < 4), (0, True))
def test_sample_pymc3(): distribs_pymc3 = [Bernoulli('B', 0.2), Binomial('N', 5, 0.4)] size = 3 pymc3 = import_module('pymc3') if not pymc3: skip('PyMC3 is not installed. Abort tests for _sample_pymc3.') else: for X in distribs_pymc3: samps = sample(X, size=size, library='pymc3') for sam in samps: assert sam in X.pspace.domain.set raises(NotImplementedError, lambda: (sample(Die("D"), library='pymc3')))
def test_sample_pymc3(): distribs_pymc3 = [Bernoulli('B', 0.2), Binomial('N', 5, 0.4)] size = 3 pymc3 = import_module('pymc3') if not pymc3: skip('PyMC3 is not installed. Abort tests for _sample_pymc3.') else: with ignore_warnings( UserWarning ): ### TODO: Restore tests once warnings are removed for X in distribs_pymc3: samps = next(sample(X, size=size, library='pymc3')) for sam in samps: assert sam in X.pspace.domain.set raises(NotImplementedError, lambda: next(sample(Die("D"), library='pymc3')))
def test_bernoulli(): p, a, b, t = symbols('p a b t') X = Bernoulli('B', p, a, b) assert E(X) == a * p + b * (-p + 1) assert density(X)[a] == p assert density(X)[b] == 1 - p assert characteristic_function(X)( t) == p * exp(I * a * t) + (-p + 1) * exp(I * b * t) assert moment_generating_function(X)( t) == p * exp(a * t) + (-p + 1) * exp(b * t) X = Bernoulli('B', p, 1, 0) z = Symbol("z") assert E(X) == p assert simplify(variance(X)) == p * (1 - p) assert E(a * X + b) == a * E(X) + b assert simplify(variance(a * X + b)) == simplify(a**2 * variance(X)) assert quantile(X)(z) == Piecewise((nan, (z > 1) | (z < 0)), (0, z <= 1 - p), (1, z <= 1)) Y = Bernoulli('Y', Rational(1, 2)) assert median(Y) == FiniteSet(0, 1) Z = Bernoulli('Z', Rational(2, 3)) assert median(Z) == FiniteSet(1) raises(ValueError, lambda: Bernoulli('B', 1.5)) raises(ValueError, lambda: Bernoulli('B', -0.5)) #issue 8248 assert X.pspace.compute_expectation(1) == 1 p = Rational(1, 5) X = Binomial('X', 5, p) Y = Binomial('Y', 7, 2 * p) Z = Binomial('Z', 9, 3 * p) assert coskewness(Y + Z, X + Y, X + Z).simplify() == 0 assert coskewness(Y + 2*X + Z, X + 2*Y + Z, X + 2*Z + Y).simplify() == \ sqrt(1529)*Rational(12, 16819) assert coskewness(Y + 2*X + Z, X + 2*Y + Z, X + 2*Z + Y, X < 2).simplify() \ == -sqrt(357451121)*Rational(2812, 4646864573)
def test_density_call(): x = Bernoulli('x', p) d = density(x) assert d(0) == 1 - p
import numpy as np import pandas as pd from scipy.stats import bernoulli n, p = 1, .33 # n = coins flipped, p = prob of success s = np.random.binomial(3000, 0.50) from sympy.stats import Bernoulli, sample_iter list(sample_iter(Bernoulli('X', 0.8), numsamples=10)) # p = 0.8 and nsamples=10