def check_mv_normal(mu, sigma): p = MultivariateNormal(mu=mu, sigma=sigma) X = p.rvs(20000, random_state=0) assert np.mean(mu - X.mean(axis=0)) < 0.02 assert np.mean(sigma - np.cov(X.T)) < 0.02 assert p.ndim == len(mu)
def test_mv_mixture(): p1 = MultivariateNormal(mu=np.array([0.0, 0.0]), sigma=np.eye(2)) p2 = MultivariateNormal(mu=np.array([2.0, 2.0]), sigma=0.5 * np.eye(2)) m = Mixture(components=[p1, p2]) assert m.ndim == 2 X = m.rvs(100) assert X.shape == (100, 2) assert_raises(ValueError, Mixture, components=[p1, Normal()])
def test_linear_transform_2d(): p0 = MultivariateNormal(mu=np.array([0.0, 1.0]), sigma=np.eye(2)) pt = LinearTransform(p0, A=np.array([[1.0, 0], [0.0, 0.5]])) X0 = p0.rvs(10, random_state=0) Xt = pt.rvs(10, random_state=0) assert X0.shape == Xt.shape assert_array_equal(p0.pdf(X0), pt.pdf(Xt)) assert_array_equal(p0.nll(X0), pt.nll(Xt))
def test_linear_transform_2d(): p0 = MultivariateNormal(mu=np.array([0., 1.]), sigma=np.eye(2)) pt = LinearTransform(p0, A=np.array([[1.0, 0], [0., 0.5]])) X0 = p0.rvs(10, random_state=0) Xt = pt.rvs(10, random_state=0) assert X0.shape == Xt.shape assert_array_equal(p0.pdf(X0), pt.pdf(Xt)) assert_array_equal(p0.nll(X0), pt.nll(Xt))