示例#1
0
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]
示例#2
0
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)
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
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)
示例#9
0
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
示例#10
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]
示例#11
0
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
示例#12
0
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]