def test_mmh_2d_joint_proposal(): target = Distributions.MultivariateNormal([0., 0.]).pdf proposal = Distributions.JointIndependent(marginals=[Distributions.Normal(scale=0.2), Distributions.Normal(scale=0.2)]) x = ModifiedMetropolisHastings(dimension=2, pdf_target=target, n_chains=1, proposal=proposal, random_state=123, nsamples=10) assert [round(float(x.samples[-1][0]), 3), round(float(x.samples[-1][1]), 3)] == [-0.783, -0.195]
def test_unconcatenate_chains_mcmc(): target = Distributions.Normal().pdf x = ModifiedMetropolisHastings(dimension=1, pdf_target=target, burn_length=10, jump=2, n_chains=2, save_log_pdf=True, random_state=123) x.run(nsamples=5) x.run(nsamples=5) assert (round(float(x.samples[-1]), 3) == -0.744)
def test_mmh_1d_burn_jump(): target = Distributions.Normal().pdf x = ModifiedMetropolisHastings(dimension=1, pdf_target=target, burn_length=10, jump=2, n_chains=1, random_state=123, nsamples=10) assert round(float(x.samples[-1]), 3) == 0.497
def test_mh_1d_asymmetric_proposal_pdf(): target = Distributions.Normal().pdf proposal = Distributions.Normal() x = MetropolisHastings(dimension=1, pdf_target=target, proposal=proposal, proposal_is_symmetric=False, n_chains=1, random_state=123, nsamples=10) assert round(float(x.samples[-1]), 3) == -1.291
def test_mh_1d_target_pdf(): target = Distributions.Normal().pdf x = MetropolisHastings(dimension=1, pdf_target=target, n_chains=1, random_state=123, nsamples=10) assert round(float(x.samples[-1]), 3) == -1.291
def test_mh_1d_acceptance_rate(): target = Distributions.Normal().pdf x = MetropolisHastings(dimension=1, pdf_target=target, n_chains=1, random_state=123, nsamples=100) assert round(float(x.acceptance_rate[0]), 3) == 0.707
def test_stretch_1d_burn_jump(): target = Distributions.Normal().pdf x = Stretch(pdf_target=target, burn_length=10, jump=2, dimension=1, n_chains=2, random_state=123, nsamples=10) assert round(float(x.samples[-1]), 3) == -0.961
def test_dream_1d_adapt_chains(): target = Distributions.Normal().pdf x = DREAM(pdf_target=target, burn_length=1000, jump=2, save_log_pdf=True, dimension=1, crossover_adaptation=(1000, 1), n_chains=20, random_state=123, nsamples=2000) assert (round(float(x.samples[-1]), 3) == -0.446)
def test_dream_1d_burn_jump(): target = Distributions.Normal().pdf x = DREAM(pdf_target=target, burn_length=10, jump=2, dimension=1, n_chains=10, random_state=123, nsamples=20) assert round(float(x.samples[-1]), 3) == 0.0
def test_mmh_2d_list_proposal_log_target(): target = [Distributions.Normal().log_pdf, Distributions.Normal().log_pdf] proposal = [Distributions.Normal(scale=0.2), Distributions.Normal(scale=0.2)] x = ModifiedMetropolisHastings(dimension=2, log_pdf_target=target, n_chains=1, proposal=proposal, random_state=123, nsamples=10) assert [round(float(x.samples[-1][0]), 3), round(float(x.samples[-1][1]), 3)] == [-0.783, -0.195]
def test_mh_1d_samples_per_chain(): target = Distributions.Normal().pdf x = MetropolisHastings(dimension=1, pdf_target=target, n_chains=2, random_state=123, nsamples_per_chain=5) assert round(float(x.samples[-1]), 3) == 0.474
def test_mmh_2d_list_target_log_pdf(): target = [Distributions.Normal().log_pdf, Distributions.Normal().log_pdf] x = ModifiedMetropolisHastings(dimension=2, log_pdf_target=target, n_chains=1, random_state=123, nsamples=10) assert [round(float(x.samples[-1][0]), 3), round(float(x.samples[-1][1]), 3)] == [-0.810, 0.173]