From b7764dd09b9266006f24db021f1c4a8b825d7534 Mon Sep 17 00:00:00 2001 From: gokuld Date: Sun, 2 Apr 2023 00:07:28 +0530 Subject: [PATCH] Added ICDF for the continuous exponential distribution. (#6641) * Added ICDF for the continuous exponential distribution. * Removed redundant out of bounds parameter tests. --- pymc/distributions/continuous.py | 9 +++++++++ tests/distributions/test_continuous.py | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/pymc/distributions/continuous.py b/pymc/distributions/continuous.py index e2368db2ee..87d7e61c29 100644 --- a/pymc/distributions/continuous.py +++ b/pymc/distributions/continuous.py @@ -1363,6 +1363,15 @@ def logcdf(value, mu): msg="lam >= 0", ) + def icdf(value, mu): + res = -mu * pt.log(1 - value) + res = check_icdf_value(res, value) + return check_icdf_parameters( + res, + mu >= 0, + msg="mu >= 0", + ) + class Laplace(Continuous): r""" diff --git a/tests/distributions/test_continuous.py b/tests/distributions/test_continuous.py index 5c0ad13de3..3a91aaccf3 100644 --- a/tests/distributions/test_continuous.py +++ b/tests/distributions/test_continuous.py @@ -438,6 +438,11 @@ def test_exponential(self): {"lam": Rplus}, lambda value, lam: st.expon.logcdf(value, 0, 1 / lam), ) + check_icdf( + pm.Exponential, + {"lam": Rplus}, + lambda q, lam: st.expon.ppf(q, loc=0, scale=1 / lam), + ) def test_laplace(self): check_logp(