Пример #1
0
def compute_pref(mu1, mu2, sigma1_sq, sigma2_sq, margin):
    if mu1 < mu2:
        raise "mu1 must be greater than mu2"

    mu0 = mu1 - mu2
    sigma0_sq = sigma1_sq + sigma2_sq
    sigma0 = math.sqrt(sigma0_sq)

    N = Normal(mu0, sigma0)
    prob_win = N.probability(margin, oo).evalf()
    prob_lost = N.probability(-oo, 0).evalf()
    prob_draw = 1.- (prob_lost + prob_win)
    return prob_win, prob_draw, prob_lost
Пример #2
0
def compute_pref(mu1, mu2, sigma1_sq, sigma2_sq, margin):
    if mu1 < mu2:
        raise "mu1 must be greater than mu2"

    mu0 = mu1 - mu2
    sigma0_sq = sigma1_sq + sigma2_sq
    sigma0 = math.sqrt(sigma0_sq)

    N = Normal(mu0, sigma0)
    prob_win = N.probability(margin, oo).evalf()
    prob_lost = N.probability(-oo, 0).evalf()
    prob_draw = 1. - (prob_lost + prob_win)
    return prob_win, prob_draw, prob_lost
Пример #3
0
def test_normal():
    dps, mp.dps = mp.dps, 20

    N = Normal(0, 1)
    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 operator.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
Пример #4
0
def test_normal():
    dps, mp.dps = mp.dps, 20

    N = Normal(0, 1)
    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