|
2 | 2 | import pytest
|
3 | 3 |
|
4 | 4 | from pymc import Bernoulli, Flat, HalfFlat, Normal, TruncatedNormal, Uniform
|
5 |
| -from pymc.distributions import Beta, HalfNormal |
| 5 | +from pymc.distributions import ( |
| 6 | + Beta, |
| 7 | + Cauchy, |
| 8 | + Exponential, |
| 9 | + HalfNormal, |
| 10 | + Kumaraswamy, |
| 11 | + Laplace, |
| 12 | + StudentT, |
| 13 | +) |
6 | 14 | from pymc.distributions.shape_utils import rv_size_is_none
|
7 | 15 | from pymc.initial_point import make_initial_point_fn
|
8 | 16 | from pymc.model import Model
|
@@ -157,3 +165,79 @@ def test_beta_moment(alpha, beta, size, expected):
|
157 | 165 | with Model() as model:
|
158 | 166 | Beta("x", alpha=alpha, beta=beta, size=size)
|
159 | 167 | assert_moment_is_expected(model, expected)
|
| 168 | + |
| 169 | + |
| 170 | +@pytest.mark.parametrize( |
| 171 | + "lam, size, expected", |
| 172 | + [ |
| 173 | + (2, None, 0.5), |
| 174 | + (2, 5, np.full(5, 0.5)), |
| 175 | + (np.arange(1, 5), None, 1 / np.arange(1, 5)), |
| 176 | + (np.arange(1, 5), (2, 4), np.full((2, 4), 1 / np.arange(1, 5))), |
| 177 | + ], |
| 178 | +) |
| 179 | +def test_exponential_moment(lam, size, expected): |
| 180 | + with Model() as model: |
| 181 | + Exponential("x", lam=lam, size=size) |
| 182 | + assert_moment_is_expected(model, expected) |
| 183 | + |
| 184 | + |
| 185 | +@pytest.mark.parametrize( |
| 186 | + "mu, b, size, expected", |
| 187 | + [ |
| 188 | + (0, 1, None, 0), |
| 189 | + (0, np.ones(5), None, np.zeros(5)), |
| 190 | + (np.arange(5), 1, None, np.arange(5)), |
| 191 | + (np.arange(5), np.arange(1, 6), (2, 5), np.full((2, 5), np.arange(5))), |
| 192 | + ], |
| 193 | +) |
| 194 | +def test_laplace_moment(mu, b, size, expected): |
| 195 | + with Model() as model: |
| 196 | + Laplace("x", mu=mu, b=b, size=size) |
| 197 | + assert_moment_is_expected(model, expected) |
| 198 | + |
| 199 | + |
| 200 | +@pytest.mark.parametrize( |
| 201 | + "mu, nu, sigma, size, expected", |
| 202 | + [ |
| 203 | + (0, 1, 1, None, 0), |
| 204 | + (0, np.ones(5), 1, None, np.zeros(5)), |
| 205 | + (np.arange(5), 10, np.arange(1, 6), None, np.arange(5)), |
| 206 | + (np.arange(5), 10, np.arange(1, 6), (2, 5), np.full((2, 5), np.arange(5))), |
| 207 | + ], |
| 208 | +) |
| 209 | +def test_studentt_moment(mu, nu, sigma, size, expected): |
| 210 | + with Model() as model: |
| 211 | + StudentT("x", mu=mu, nu=nu, sigma=sigma, size=size) |
| 212 | + assert_moment_is_expected(model, expected) |
| 213 | + |
| 214 | + |
| 215 | +@pytest.mark.parametrize( |
| 216 | + "alpha, beta, size, expected", |
| 217 | + [ |
| 218 | + (0, 1, None, 0), |
| 219 | + (0, np.ones(5), None, np.zeros(5)), |
| 220 | + (np.arange(5), 1, None, np.arange(5)), |
| 221 | + (np.arange(5), np.arange(1, 6), (2, 5), np.full((2, 5), np.arange(5))), |
| 222 | + ], |
| 223 | +) |
| 224 | +def test_cauchy_moment(alpha, beta, size, expected): |
| 225 | + with Model() as model: |
| 226 | + Cauchy("x", alpha=alpha, beta=beta, size=size) |
| 227 | + assert_moment_is_expected(model, expected) |
| 228 | + |
| 229 | + |
| 230 | +@pytest.mark.parametrize( |
| 231 | + "a, b, size, expected", |
| 232 | + [ |
| 233 | + (1, 1, None, 0.5), |
| 234 | + (1, 1, 5, np.full(5, 0.5)), |
| 235 | + (1, np.arange(1, 6), None, 1 / np.arange(2, 7)), |
| 236 | + (np.arange(1, 6), 1, None, np.arange(1, 6) / np.arange(2, 7)), |
| 237 | + (1, np.arange(1, 6), (2, 5), np.full((2, 5), 1 / np.arange(2, 7))), |
| 238 | + ], |
| 239 | +) |
| 240 | +def test_kumaraswamy_moment(a, b, size, expected): |
| 241 | + with Model() as model: |
| 242 | + Kumaraswamy("x", a=a, b=b, size=size) |
| 243 | + assert_moment_is_expected(model, expected) |
0 commit comments