|
40 | 40 | normal_lcdf,
|
41 | 41 | )
|
42 | 42 | from pymc3.distributions.distribution import Discrete
|
| 43 | +from pymc3.distributions.logp import _logcdf, _logp |
43 | 44 | from pymc3.math import log1mexp, logaddexp, logsumexp, sigmoid
|
44 | 45 |
|
45 | 46 | __all__ = [
|
@@ -1306,7 +1307,7 @@ def logp(value, psi, theta):
|
1306 | 1307 |
|
1307 | 1308 | logp_val = at.switch(
|
1308 | 1309 | at.gt(value, 0),
|
1309 |
| - at.log(psi) + Poisson.logp(value, theta), |
| 1310 | + at.log(psi) + _logp(poisson, value, {}, theta), |
1310 | 1311 | logaddexp(at.log1p(-psi), at.log(psi) - theta),
|
1311 | 1312 | )
|
1312 | 1313 |
|
@@ -1335,7 +1336,7 @@ def logcdf(value, psi, theta):
|
1335 | 1336 | """
|
1336 | 1337 |
|
1337 | 1338 | return bound(
|
1338 |
| - logaddexp(at.log1p(-psi), at.log(psi) + Poisson.logcdf(value, theta)), |
| 1339 | + logaddexp(at.log1p(-psi), at.log(psi) + _logcdf(poisson, value, {}, theta)), |
1339 | 1340 | 0 <= value,
|
1340 | 1341 | 0 <= psi,
|
1341 | 1342 | psi <= 1,
|
@@ -1436,7 +1437,7 @@ def logp(value, psi, n, p):
|
1436 | 1437 |
|
1437 | 1438 | logp_val = at.switch(
|
1438 | 1439 | at.gt(value, 0),
|
1439 |
| - at.log(psi) + Binomial.logp(value, n, p), |
| 1440 | + at.log(psi) + _logp(binomial, value, {}, n, p), |
1440 | 1441 | logaddexp(at.log1p(-psi), at.log(psi) + n * at.log1p(-p)),
|
1441 | 1442 | )
|
1442 | 1443 |
|
@@ -1472,7 +1473,7 @@ def logcdf(value, psi, n, p):
|
1472 | 1473 | )
|
1473 | 1474 |
|
1474 | 1475 | return bound(
|
1475 |
| - logaddexp(at.log1p(-psi), at.log(psi) + Binomial.logcdf(value, n, p)), |
| 1476 | + logaddexp(at.log1p(-psi), at.log(psi) + _logcdf(binomial, value, {}, n, p)), |
1476 | 1477 | 0 <= value,
|
1477 | 1478 | value <= n,
|
1478 | 1479 | 0 <= psi,
|
@@ -1594,7 +1595,7 @@ def logp(value, psi, n, p):
|
1594 | 1595 | return bound(
|
1595 | 1596 | at.switch(
|
1596 | 1597 | at.gt(value, 0),
|
1597 |
| - at.log(psi) + NegativeBinomial.logp(value, n, p), |
| 1598 | + at.log(psi) + _logp(nbinom, value, {}, n, p), |
1598 | 1599 | logaddexp(at.log1p(-psi), at.log(psi) + n * at.log(p)),
|
1599 | 1600 | ),
|
1600 | 1601 | 0 <= value,
|
@@ -1626,7 +1627,7 @@ def logcdf(value, psi, n, p):
|
1626 | 1627 | )
|
1627 | 1628 |
|
1628 | 1629 | return bound(
|
1629 |
| - logaddexp(at.log1p(-psi), at.log(psi) + NegativeBinomial.logcdf(value, n, p)), |
| 1630 | + logaddexp(at.log1p(-psi), at.log(psi) + _logcdf(nbinom, value, {}, n, p)), |
1630 | 1631 | 0 <= value,
|
1631 | 1632 | 0 <= psi,
|
1632 | 1633 | psi <= 1,
|
|
0 commit comments