def test_geweke_iid_gaussian(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: bayeslite.bayesdb_register_metamodel(bdb, gauss.StdNormalMetamodel()) kl_est = geweke.geweke_kl(bdb, "std_normal", [['column', 'numerical']], ['column'], [(1,0), (2,0)], 2, 2, 2, 2) assert kl_est == (2, 0, 0)
def test_geweke_nig_normal(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: nig = normal.NIGNormalMetamodel(seed=1) bayeslite.bayesdb_register_metamodel(bdb, nig) (ct, kl, error) = geweke.geweke_kl(bdb, "nig_normal", [['column', 'numerical']], ['column'], [(1,0), (2,0)], 2, 2, 2, 2) assert ct == 2 assert 0 < kl and kl < 10 # KL should be positive assert 0 < error and error < 10 # KL error estimate too
def test_geweke_nig_normal(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: nig = normal.NIGNormalMetamodel(seed=1) bayeslite.bayesdb_register_metamodel(bdb, nig) (ct, kl, error) = geweke.geweke_kl(bdb, "nig_normal", [['column', 'numerical']], ['column'], [(1, 0), (2, 0)], 2, 2, 2, 2) assert ct == 2 assert 0 < kl and kl < 10 # KL should be positive assert 0 < error and error < 10 # KL error estimate too
def test_geweke_catches_nig_normal_bug__ci_slow(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: bayeslite.bayesdb_register_metamodel(bdb, DoctoredNIGNormal(seed=1)) cells = [(i,0) for i in range(4)] for chain_ct in (0, 1, 5): (ct, kl, error) = geweke.geweke_kl(bdb, "nig_normal", [['column', 'numerical']], ['column'], cells, 200, 200, chain_ct, 3000) if chain_ct == 0: assert ct == 3000 assert 0 < kl and kl < 0.1 assert 0 < error and error < 0.05 else: assert ct == 3000 assert kl > 5 assert 0 < error and error < 4
def test_geweke_catches_nig_normal_bug__ci_slow(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: bayeslite.bayesdb_register_metamodel(bdb, DoctoredNIGNormal(seed=1)) cells = [(i, 0) for i in range(4)] for chain_ct in (0, 1, 5): (ct, kl, error) = geweke.geweke_kl(bdb, "nig_normal", [['column', 'numerical']], ['column'], cells, 200, 200, chain_ct, 3000) if chain_ct == 0: assert ct == 3000 assert 0 < kl and kl < 0.1 assert 0 < error and error < 0.05 else: assert ct == 3000 assert kl > 5 assert 0 < error and error < 4
def test_geweke_nig_normal_seriously__ci_slow(): # Note: The actual assertions in this test and the next one were # dervied heuristically by inspecting a fuller (and costlier to # compute) tableau of values of geweke.geweke_kl and deciding the # aggregate impression was "probably no bug" (resp. "definitely # bug"). The assertions constitute an attempt to capture the most # salient features that give that impression. with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: nig = normal.NIGNormalMetamodel(seed=1) bayeslite.bayesdb_register_metamodel(bdb, nig) cells = [(i,0) for i in range(4)] for chain_ct in (0, 1, 5): (ct, kl, error) = geweke.geweke_kl(bdb, "nig_normal", [['column', 'numerical']], ['column'], cells, 200, 200, chain_ct, 3000) assert ct == 3000 assert 0 < kl and kl < 0.1 assert 0 < error and error < 0.05
def test_geweke_nig_normal_seriously__ci_slow(): # Note: The actual assertions in this test and the next one were # dervied heuristically by inspecting a fuller (and costlier to # compute) tableau of values of geweke.geweke_kl and deciding the # aggregate impression was "probably no bug" (resp. "definitely # bug"). The assertions constitute an attempt to capture the most # salient features that give that impression. with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: nig = normal.NIGNormalMetamodel(seed=1) bayeslite.bayesdb_register_metamodel(bdb, nig) cells = [(i, 0) for i in range(4)] for chain_ct in (0, 1, 5): (ct, kl, error) = geweke.geweke_kl(bdb, "nig_normal", [['column', 'numerical']], ['column'], cells, 200, 200, chain_ct, 3000) assert ct == 3000 assert 0 < kl and kl < 0.1 assert 0 < error and error < 0.05
def test_geweke_troll(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: bayeslite.bayesdb_register_metamodel(bdb, troll.TrollMetamodel()) kl_est = geweke.geweke_kl(bdb, "troll_rng", [['column', 'numerical']], ['column'], [(1,0)], 2, 2, 2, 2) assert kl_est == (2, 0, 0)
def test_geweke_iid_gaussian(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: bayeslite.bayesdb_register_metamodel(bdb, gauss.StdNormalMetamodel()) kl_est = geweke.geweke_kl(bdb, "std_normal", [['column', 'numerical']], ['column'], [(1, 0), (2, 0)], 2, 2, 2, 2) assert kl_est == (2, 0, 0)
def test_geweke_troll(): with bayeslite.bayesdb_open(builtin_metamodels=False) as bdb: bayeslite.bayesdb_register_metamodel(bdb, troll.TrollMetamodel()) kl_est = geweke.geweke_kl(bdb, "troll_rng", [['column', 'numerical']], ['column'], [(1, 0)], 2, 2, 2, 2) assert kl_est == (2, 0, 0)