diff --git a/pymc/distributions/continuous.py b/pymc/distributions/continuous.py index dc98ed3144..67124fa359 100644 --- a/pymc/distributions/continuous.py +++ b/pymc/distributions/continuous.py @@ -2531,6 +2531,16 @@ def logcdf(value, alpha, beta): msg="alpha > 0, beta > 0", ) + def icdf(value, alpha, beta): + res = 1 / Gamma.icdf(value=1 - value, alpha=alpha, scale=1 / beta) + res = check_icdf_value(res, value) + return check_icdf_parameters( + res, + alpha > 0, + beta > 0, + msg="alpha > 0, beta > 0", + ) + class ChiSquared: r""" diff --git a/tests/distributions/test_continuous.py b/tests/distributions/test_continuous.py index 7209382666..342b53eca0 100644 --- a/tests/distributions/test_continuous.py +++ b/tests/distributions/test_continuous.py @@ -705,6 +705,13 @@ def test_fun(value, mu, sigma): decimal=select_by_precision(float64=4, float32=3), ) + def test_inverse_gamma_icdf(self): + check_icdf( + pm.InverseGamma, + {"alpha": Rplusbig, "beta": Rplusbig}, + lambda q, alpha, beta: st.invgamma.ppf(q, alpha, scale=beta), + ) + def test_pareto(self): check_logp( pm.Pareto,