- Notifications
You must be signed in to change notification settings - Fork 2.2k
Closed
Description
Describe the issue:
A Gamma distribution that is wrapped in Truncated has the wrong logp when beta is small. For beta = 1.0 the results are correct, but for beta = 0.01 the results are incorrect. The code below produces the following distributions.
plot_gamma_prob(1.0, 5.0) # beta = 1.0, truncated at 5.0plot_gamma_prob(0.01, 1000.0) # beta = 0.01, truncated at 1000.0Reproduceable code example:
import numpy as np import matplotlib.pyplot as plt import pymc as pm print(pm.__version__) def plot_gamma_prob(beta, x_max): x = np.linspace(0.0, 2.0 * x_max, 1000) gamma = pm.Gamma.dist(alpha=3.0, beta=beta) p_gamma = np.exp(pm.logp(gamma, x).eval()) trunc_gamma = pm.Truncated.dist(pm.Gamma.dist(alpha=3.0, beta=beta), upper=x_max) p_trunc_gamma = np.exp(pm.logp(trunc_gamma, x).eval()) fig, ax = plt.subplots() ax.plot(x, p_gamma, "k-", label="Gamma") ax.plot(x, p_trunc_gamma, "r-", label="Truncated Gamma") ax.set_xlabel("x") ax.set_ylabel("P(x)") ax.legend(loc="best") fig.tight_layout() fig.savefig(f"gamma_beta{beta}.png") plt.close(fig) plot_gamma_prob(1.0, 5.0) plot_gamma_prob(0.01, 1000.0)Error message:
No response
PyMC version information:
pymc v. 5.8.2
Context for the issue:
This seems like an important bug!

