|
35 | 35 | from aesara.tensor.math import tanh |
36 | 36 | from aesara.tensor.random.basic import ( |
37 | 37 | BetaRV, |
38 | | - cauchy, |
| 38 | + CauchyRV, |
| 39 | + HalfCauchyRV, |
| 40 | + HalfNormalRV, |
| 41 | + LogNormalRV, |
| 42 | + NormalRV, |
| 43 | + UniformRV, |
39 | 44 | chisquare, |
40 | 45 | exponential, |
41 | 46 | gamma, |
42 | 47 | gumbel, |
43 | | - halfcauchy, |
44 | | - halfnormal, |
45 | 48 | invgamma, |
46 | 49 | laplace, |
47 | 50 | logistic, |
48 | | - lognormal, |
49 | 51 | normal, |
50 | 52 | pareto, |
51 | 53 | triangular, |
52 | | - uniform, |
53 | 54 | vonmises, |
54 | 55 | ) |
55 | 56 | from aesara.tensor.random.op import RandomVariable |
@@ -252,6 +253,13 @@ def get_tau_sigma(tau=None, sigma=None): |
252 | 253 | return floatX(tau), floatX(sigma) |
253 | 254 |
|
254 | 255 |
|
| 256 | +class PyMCUniformRV(UniformRV): |
| 257 | + _print_name = ("Uniform", "\\operatorname{Uniform}") |
| 258 | + |
| 259 | + |
| 260 | +pymc_uniform = PyMCUniformRV() |
| 261 | + |
| 262 | + |
255 | 263 | class Uniform(BoundedContinuous): |
256 | 264 | r""" |
257 | 265 | Continuous uniform log-likelihood. |
@@ -295,7 +303,8 @@ class Uniform(BoundedContinuous): |
295 | 303 | upper : tensor_like of float, default 1 |
296 | 304 | Upper limit. |
297 | 305 | """ |
298 | | - rv_op = uniform |
| 306 | + rv_op = pymc_uniform |
| 307 | + rv_type = UniformRV |
299 | 308 | bound_args_indices = (3, 4) # Lower, Upper |
300 | 309 |
|
301 | 310 | @classmethod |
@@ -479,6 +488,13 @@ def logcdf(value): |
479 | 488 | return at.switch(at.lt(value, np.inf), -np.inf, at.switch(at.eq(value, np.inf), 0, -np.inf)) |
480 | 489 |
|
481 | 490 |
|
| 491 | +class PyMCNormalRV(NormalRV): |
| 492 | + _print_name = ("Normal", "\\operatorname{Normal}") |
| 493 | + |
| 494 | + |
| 495 | +pymc_normal = PyMCNormalRV() |
| 496 | + |
| 497 | + |
482 | 498 | class Normal(Continuous): |
483 | 499 | r""" |
484 | 500 | Univariate normal log-likelihood. |
@@ -544,7 +560,8 @@ class Normal(Continuous): |
544 | 560 | with pm.Model(): |
545 | 561 | x = pm.Normal('x', mu=0, tau=1/23) |
546 | 562 | """ |
547 | | - rv_op = normal |
| 563 | + rv_op = pymc_normal |
| 564 | + rv_type = NormalRV |
548 | 565 |
|
549 | 566 | @classmethod |
550 | 567 | def dist(cls, mu=0, sigma=None, tau=None, **kwargs): |
@@ -801,6 +818,13 @@ def truncated_normal_default_transform(op, rv): |
801 | 818 | return bounded_cont_transform(op, rv, TruncatedNormal.bound_args_indices) |
802 | 819 |
|
803 | 820 |
|
| 821 | +class PyMCHalfNormalRV(HalfNormalRV): |
| 822 | + _print_name = ("HalfNormal", "\\operatorname{HalfNormal}") |
| 823 | + |
| 824 | + |
| 825 | +pymc_halfnormal = PyMCHalfNormalRV() |
| 826 | + |
| 827 | + |
804 | 828 | class HalfNormal(PositiveContinuous): |
805 | 829 | r""" |
806 | 830 | Half-normal log-likelihood. |
@@ -867,7 +891,8 @@ class HalfNormal(PositiveContinuous): |
867 | 891 | with pm.Model(): |
868 | 892 | x = pm.HalfNormal('x', tau=1/15) |
869 | 893 | """ |
870 | | - rv_op = halfnormal |
| 894 | + rv_op = pymc_halfnormal |
| 895 | + rv_type = HalfNormalRV |
871 | 896 |
|
872 | 897 | @classmethod |
873 | 898 | def dist(cls, sigma=None, tau=None, *args, **kwargs): |
@@ -1690,6 +1715,13 @@ def logp(value, b, kappa, mu): |
1690 | 1715 | return check_parameters(res, 0 < b, 0 < kappa, msg="b > 0, kappa > 0") |
1691 | 1716 |
|
1692 | 1717 |
|
| 1718 | +class PyMCLogNormalRV(LogNormalRV): |
| 1719 | + _print_name = ("LogNormal", "\\operatorname{LogNormal}") |
| 1720 | + |
| 1721 | + |
| 1722 | +pymc_lognormal = PyMCLogNormalRV() |
| 1723 | + |
| 1724 | + |
1693 | 1725 | class LogNormal(PositiveContinuous): |
1694 | 1726 | r""" |
1695 | 1727 | Log-normal log-likelihood. |
@@ -1758,7 +1790,8 @@ class LogNormal(PositiveContinuous): |
1758 | 1790 | x = pm.LogNormal('x', mu=2, tau=1/100) |
1759 | 1791 | """ |
1760 | 1792 |
|
1761 | | - rv_op = lognormal |
| 1793 | + rv_op = pymc_lognormal |
| 1794 | + rv_type = LogNormalRV |
1762 | 1795 |
|
1763 | 1796 | @classmethod |
1764 | 1797 | def dist(cls, mu=0, sigma=None, tau=None, *args, **kwargs): |
@@ -2049,6 +2082,13 @@ def pareto_default_transform(op, rv): |
2049 | 2082 | return bounded_cont_transform(op, rv, Pareto.bound_args_indices) |
2050 | 2083 |
|
2051 | 2084 |
|
| 2085 | +class PyMCCauchyRV(CauchyRV): |
| 2086 | + _print_name = ("Cauchy", "\\operatorname{Cauchy}") |
| 2087 | + |
| 2088 | + |
| 2089 | +pymc_cauchy = PyMCCauchyRV() |
| 2090 | + |
| 2091 | + |
2052 | 2092 | class Cauchy(Continuous): |
2053 | 2093 | r""" |
2054 | 2094 | Cauchy log-likelihood. |
@@ -2095,7 +2135,8 @@ class Cauchy(Continuous): |
2095 | 2135 | beta : tensor_like of float |
2096 | 2136 | Scale parameter > 0. |
2097 | 2137 | """ |
2098 | | - rv_op = cauchy |
| 2138 | + rv_op = pymc_cauchy |
| 2139 | + rv_type = CauchyRV |
2099 | 2140 |
|
2100 | 2141 | @classmethod |
2101 | 2142 | def dist(cls, alpha, beta, *args, **kwargs): |
@@ -2133,6 +2174,13 @@ def logcdf(value, alpha, beta): |
2133 | 2174 | ) |
2134 | 2175 |
|
2135 | 2176 |
|
| 2177 | +class PyMCHalfCauchyRV(HalfCauchyRV): |
| 2178 | + _print_name = ("HalfCauchy", "\\operatorname{HalfCauchy}") |
| 2179 | + |
| 2180 | + |
| 2181 | +pymc_halfcauchy = PyMCHalfCauchyRV() |
| 2182 | + |
| 2183 | + |
2136 | 2184 | class HalfCauchy(PositiveContinuous): |
2137 | 2185 | r""" |
2138 | 2186 | Half-Cauchy log-likelihood. |
@@ -2172,7 +2220,8 @@ class HalfCauchy(PositiveContinuous): |
2172 | 2220 | beta : tensor_like of float |
2173 | 2221 | Scale parameter (beta > 0). |
2174 | 2222 | """ |
2175 | | - rv_op = halfcauchy |
| 2223 | + rv_op = pymc_halfcauchy |
| 2224 | + rv_type = HalfCauchyRV |
2176 | 2225 |
|
2177 | 2226 | @classmethod |
2178 | 2227 | def dist(cls, beta, *args, **kwargs): |
@@ -3942,7 +3991,7 @@ class PolyaGammaRV(RandomVariable): |
3942 | 3991 | ndim_supp = 0 |
3943 | 3992 | ndims_params = [0, 0] |
3944 | 3993 | dtype = "floatX" |
3945 | | - _print_name = ("PG", "\\operatorname{PG}") |
| 3994 | + _print_name = ("PolyaGamma", "\\operatorname{PolyaGamma}") |
3946 | 3995 |
|
3947 | 3996 | def __call__(self, h=1.0, z=0.0, size=None, **kwargs): |
3948 | 3997 | return super().__call__(h, z, size=size, **kwargs) |
|
0 commit comments