|
47 | 47 | ZeroInflatedBinomial,
|
48 | 48 | ZeroInflatedPoisson,
|
49 | 49 | )
|
| 50 | +from pymc.distributions.multivariate import MvNormal |
50 | 51 | from pymc.distributions.shape_utils import rv_size_is_none
|
51 | 52 | from pymc.initial_point import make_initial_point_fn
|
52 | 53 | from pymc.model import Model
|
@@ -774,6 +775,40 @@ def test_categorical_moment(p, size, expected):
|
774 | 775 | assert_moment_is_expected(model, expected)
|
775 | 776 |
|
776 | 777 |
|
| 778 | +@pytest.mark.parametrize( |
| 779 | + "mu, cov, size, expected", |
| 780 | + [ |
| 781 | + (np.ones(1), np.identity(1), None, np.ones(1)), |
| 782 | + (np.ones(3), np.identity(3), None, np.ones(3)), |
| 783 | + (np.ones((2, 2)), np.identity(2), None, np.ones((2, 2))), |
| 784 | + (np.array([1, 0, 3.0]), np.identity(3), None, np.array([1, 0, 3.0])), |
| 785 | + (np.array([1, 0, 3.0]), np.identity(3), (4, 2), np.full((4, 2, 3), [1, 0, 3.0])), |
| 786 | + ( |
| 787 | + np.array([1, 3.0]), |
| 788 | + np.identity(2), |
| 789 | + 5, |
| 790 | + np.full((5, 2), [1, 3.0]), |
| 791 | + ), |
| 792 | + ( |
| 793 | + np.array([1, 3.0]), |
| 794 | + np.array([[1.0, 0.5], [0.5, 2]]), |
| 795 | + (4, 5), |
| 796 | + np.full((4, 5, 2), [1, 3.0]), |
| 797 | + ), |
| 798 | + ( |
| 799 | + np.array([[3.0, 5], [1, 4]]), |
| 800 | + np.identity(2), |
| 801 | + (4, 5), |
| 802 | + np.full((4, 5, 2, 2), [[3.0, 5], [1, 4]]), |
| 803 | + ), |
| 804 | + ], |
| 805 | +) |
| 806 | +def test_mv_normal_moment(mu, cov, size, expected): |
| 807 | + with Model() as model: |
| 808 | + MvNormal("x", mu=mu, cov=cov, size=size) |
| 809 | + assert_moment_is_expected(model, expected) |
| 810 | + |
| 811 | + |
777 | 812 | @pytest.mark.parametrize(
|
778 | 813 | "mu, sigma, size, expected",
|
779 | 814 | [
|
|
0 commit comments