Beispiel #1
0
def test_pinskers_inequality(dist1, dist2):
    """
    DKL(p||q) >= V(p||q)**2 / (2log(2))
    """
    dkl = relative_entropy(dist1, dist2)
    vd = variational_distance(dist1, dist2)
    assert dkl >= vd**2 / (2 * np.log(2)) - epsilon
Beispiel #2
0
def test_pinskers_inequality(dist1, dist2):
    """
    DKL(p||q) >= V(p||q)**2 / (2log(2))
    """
    dkl = relative_entropy(dist1, dist2)
    vd = variational_distance(dist1, dist2)
    assert dkl >= vd**2 / (2 * np.log(2)) - epsilon
Beispiel #3
0
def test_hellinger_variational(dist1, dist2):
    """
    H^2(p||q) <= V(p||q) <= sqrt(2)*H(p||q)
    """
    h = hellinger_distance(dist1, dist2)
    v = variational_distance(dist1, dist2)
    assert h**2 <= v + epsilon
    assert v <= np.sqrt(2) * h + epsilon
Beispiel #4
0
def test_hellinger_variational(dist1, dist2):
    """
    H^2(p||q) <= V(p||q) <= sqrt(2)*H(p||q)
    """
    h = hellinger_distance(dist1, dist2)
    v = variational_distance(dist1, dist2)
    assert h**2 <= v + epsilon
    assert v <= np.sqrt(2)*h + epsilon
Beispiel #5
0
def test_vd2():
    """
    Test against known value
    """
    d1 = Distribution(['0', '1'], [1 / 2, 1 / 2])
    d2 = Distribution(['1', '2'], [1 / 4, 3 / 4])
    v = variational_distance(d1, d2)
    assert v == pytest.approx(0.75)
def test_vd2():
    """
    Test against known value.
    """
    vd = variational_distance(d1, d3)
    assert vd == pytest.approx(0.75)
def test_vd2():
    """
    Test against known value.
    """
    vd = variational_distance(d1, d3)
    assert vd == pytest.approx(0.75)