コード例 #1
0
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}))
コード例 #2
0
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)}))
コード例 #3
0
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
            }))
コード例 #4
0
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
コード例 #5
0
ファイル: test_finite_rv.py プロジェクト: sudhanshura-i/sympy
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
コード例 #6
0
ファイル: test_finite_rv.py プロジェクト: hastebrot/sympy
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]])
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
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
コード例 #10
0
def test_issue_11934():
    density = {0: .5, 1: .5}
    X = FiniteRV('X', density)
    assert E(X) == 0.5
    assert P( X>= 2) == 0