def test_FiniteRV(): F = FiniteRV('F', {1: S.Half, 2: S.One / 4, 3: S.One / 4}) p = Symbol("p", positive=True) assert dict(density(F).items()) == { S(1): S.Half, S(2): S.One / 4, S(3): S.One / 4 } assert P(F >= 2) == S.Half assert quantile(F)(p) == Piecewise((nan, p > S.One), (S.One, p <= S.Half),\ (S(2), p <= S(3)/4),(S(3), True)) assert pspace(F).domain.as_boolean() == Or( *[Eq(F.symbol, i) for i in [1, 2, 3]]) raises(ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: S.Half, 3: S.Half })) raises(ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: S(-1) / 2, 3: S.One })) raises(ValueError, lambda: FiniteRV('F', {1: S.One, 2: S(3)/2, 3: S.Zero,\ 4: S(-1)/2, 5: S(-3)/4, 6: S(-1)/4}))
def test_FiniteRV(): F = FiniteRV('F', {1: S.Half, 2: Rational(1, 4), 3: Rational(1, 4)}) p = Symbol("p", positive=True) assert dict(density(F).items()) == { S.One: S.Half, S(2): Rational(1, 4), S(3): Rational(1, 4) } assert P(F >= 2) == S.Half assert quantile(F)(p) == Piecewise((nan, p > S.One), (S.One, p <= S.Half),\ (S(2), p <= Rational(3, 4)),(S(3), True)) assert pspace(F).domain.as_boolean() == Or( *[Eq(F.symbol, i) for i in [1, 2, 3]]) assert F.pspace.domain.set == FiniteSet(1, 2, 3) raises(ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: S.Half, 3: S.Half })) raises(ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: Rational(-1, 2), 3: S.One })) raises(ValueError, lambda: FiniteRV('F', {1: S.One, 2: Rational(3, 2), 3: S.Zero,\ 4: Rational(-1, 2), 5: Rational(-3, 4), 6: Rational(-1, 4)}))
def test_FiniteRV(): F = FiniteRV('F', {1: S.Half, 2: S.One / 4, 3: S.One / 4}) assert dict(density(F).items()) == { S(1): S.Half, S(2): S.One / 4, S(3): S.One / 4 } assert P(F >= 2) == S.Half assert pspace(F).domain.as_boolean() == Or( *[Eq(F.symbol, i) for i in [1, 2, 3]]) raises(ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: S.Half, 3: S.Half })) raises(ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: S(-1) / 2, 3: S.One })) raises( ValueError, lambda: FiniteRV( 'F', { 1: S.One, 2: S(3) / 2, 3: S.Zero, 4: S(-1) / 2, 5: S(-3) / 4, 6: S(-1) / 4 }))
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_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_FiniteRV(): F = FiniteRV('F', {1: S.Half, 2: S.One / 4, 3: S.One / 4}) assert density(F) == {S(1): S.Half, S(2): S.One / 4, S(3): S.One / 4} assert P(F >= 2) == S.Half assert pspace(F).domain.as_boolean() == Or( *[Eq(F.symbol, i) for i in [1, 2, 3]])
def test_FiniteRV(): F = FiniteRV('F', { 1: S.Half, 2: Rational(1, 4), 3: Rational(1, 4) }, check=True) p = Symbol("p", positive=True) assert dict(density(F).items()) == { S.One: S.Half, S(2): Rational(1, 4), S(3): Rational(1, 4) } assert P(F >= 2) == S.Half assert quantile(F)(p) == Piecewise((nan, p > S.One), (S.One, p <= S.Half),\ (S(2), p <= Rational(3, 4)),(S(3), True)) assert pspace(F).domain.as_boolean() == Or( *[Eq(F.symbol, i) for i in [1, 2, 3]]) assert F.pspace.domain.set == FiniteSet(1, 2, 3) raises( ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: S.Half, 3: S.Half }, check=True)) raises( ValueError, lambda: FiniteRV('F', { 1: S.Half, 2: Rational(-1, 2), 3: S.One }, check=True)) raises(ValueError, lambda: FiniteRV('F', {1: S.One, 2: Rational(3, 2), 3: S.Zero,\ 4: Rational(-1, 2), 5: Rational(-3, 4), 6: Rational(-1, 4)}, check=True)) # purposeful invalid pmf but it should not raise since check=False # see test_drv_types.test_ContinuousRV for explanation X = FiniteRV('X', {1: 1, 2: 2}) assert E(X) == 5 assert P(X <= 2) + P(X > 2) != 1
def test_sample_seed(): F = FiniteRV('F', {1: S.Half, 2: Rational(1, 4), 3: Rational(1, 4)}) size = 10 libraries = ['scipy', 'numpy', 'pymc3'] for lib in libraries: try: imported_lib = import_module(lib) if imported_lib: s0 = sample(F, size=size, library=lib, seed=0) s1 = sample(F, size=size, library=lib, seed=0) s2 = sample(F, size=size, library=lib, seed=1) assert all(s0 == s1) assert not all(s1 == s2) except NotImplementedError: continue
def test_sample_seed(): F = FiniteRV('F', {1: S.Half, 2: Rational(1, 4), 3: Rational(1, 4)}) libraries = ['scipy', 'numpy', 'pymc3'] for lib in libraries: try: imported_lib = import_module(lib) if imported_lib: s0 = list(sample(F, numsamples=10, library=lib, seed=0)) s1 = list(sample(F, numsamples=10, library=lib, seed=0)) s2 = list(sample(F, numsamples=10, library=lib, seed=1)) assert s0 == s1 assert s1 != s2 except NotImplementedError: continue
def test_issue_11934(): density = {0: .5, 1: .5} X = FiniteRV('X', density) assert E(X) == 0.5 assert P( X>= 2) == 0