def test_alpha_symmetry(alpha, dists): """ Tests the alpha -> -alpha symmetry for the alpha divergence, and a similar symmetry for the Hellinger and Renyi divergences. """ for dist1, dist2 in product(dists, repeat=2): assert alpha_divergence(dist1, dist2, alpha) == pytest.approx( alpha_divergence(dist2, dist1, -alpha)) assert (1. - alpha) * hellinger_divergence( dist1, dist2, alpha) == pytest.approx( alpha * hellinger_divergence(dist2, dist1, 1. - alpha)) assert (1. - alpha) * renyi_divergence( dist1, dist2, alpha) == pytest.approx( alpha * renyi_divergence(dist2, dist1, 1. - alpha))
def test_alpha_symmetry(alpha, dists): """ Tests the alpha -> -alpha symmetry for the alpha divergence, and a similar symmetry for the Hellinger and Renyi divergences. """ for dist1, dist2 in product(dists, repeat=2): assert alpha_divergence(dist1, dist2, alpha) == pytest.approx(alpha_divergence(dist2, dist1, -alpha)) assert (1.-alpha)*hellinger_divergence(dist1, dist2, alpha) == pytest.approx(alpha*hellinger_divergence(dist2, dist1, 1.-alpha)) assert (1.-alpha)*renyi_divergence(dist1, dist2, alpha) == pytest.approx(alpha*renyi_divergence(dist2, dist1, 1.-alpha))
def test_alpha_symmetry(): """ Tests the alpha -> -alpha symmetry for the alpha divergence, and a similar symmetry for the Hellinger and Renyi divergences. """ alphas = [-1, 0, 0.5, 1, 2] test_dists = [get_dists_2(), get_dists_3()] for alpha in alphas: for dists in test_dists: for dist1 in dists: for dist2 in dists: assert_almost_equal(alpha_divergence(dist1, dist2, alpha), alpha_divergence(dist2, dist1, -alpha)) assert_almost_equal( (1. - alpha) * hellinger_divergence(dist1, dist2, alpha), alpha * hellinger_divergence(dist2, dist1, 1. - alpha)) assert_almost_equal( (1. - alpha) * renyi_divergence(dist1, dist2, alpha), alpha * renyi_divergence(dist2, dist1, 1. - alpha))
def test_alpha_symmetry(): """ Tests the alpha -> -alpha symmetry for the alpha divergence, and a similar symmetry for the Hellinger divergence. """ alphas = [-1, 0, 0.5, 1, 2] test_dists = [get_dists_2(), get_dists_3()] for alpha in alphas: for dists in test_dists: for dist1 in dists: for dist2 in dists: assert_almost_equal(alpha_divergence(dist1, dist2, alpha), alpha_divergence(dist2, dist1, -alpha)) assert_almost_equal((1.-alpha)*hellinger_divergence(dist1, dist2, alpha), alpha*hellinger_divergence(dist2, dist1, 1.-alpha))