def test_sample(self): initial_rng_state = np.random.get_state() with self.SMC_test: mtrace = pm.sample_smc(draws=self.samples, return_inferencedata=False) assert_random_state_equal(initial_rng_state, np.random.get_state()) x = mtrace["X"] mu1d = np.abs(x).mean(axis=0) np.testing.assert_allclose(self.muref, mu1d, rtol=0.0, atol=0.03)
def test_normal_model(self): data = st.norm(10, 0.5).rvs(1000, random_state=self.get_random_state()) initial_rng_state = np.random.get_state() with pm.Model() as m: mu = pm.Normal("mu", 0, 3) sigma = pm.HalfNormal("sigma", 1) y = pm.Normal("y", mu, sigma, observed=data) idata = pm.sample_smc(draws=2000, kernel=pm.smc.MH) assert_random_state_equal(initial_rng_state, np.random.get_state()) post = idata.posterior.stack(sample=("chain", "draw")) assert np.abs(post["mu"].mean() - 10) < 0.1 assert np.abs(post["sigma"].mean() - 0.5) < 0.05