|
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