scientific-skills/pymc/references/distributions.md
This reference provides a comprehensive catalog of probability distributions available in PyMC, organized by category. Use this to select appropriate distributions for priors and likelihoods when building Bayesian models.
Continuous distributions define probability densities over real-valued domains.
pm.Normal(name, mu, sigma)
mu (mean), sigma (standard deviation)pm.HalfNormal(name, sigma)
sigma (standard deviation)pm.Uniform(name, lower, upper)
lower, upper (bounds)pm.Beta(name, alpha, beta)
alpha, beta (shape parameters)pm.Gamma(name, alpha, beta)
alpha (shape), beta (rate)pm.Exponential(name, lam)
lam (rate parameter)pm.LogNormal(name, mu, sigma)
mu, sigma (parameters of underlying normal)pm.StudentT(name, nu, mu, sigma)
nu (degrees of freedom), mu (location), sigma (scale)pm.Cauchy(name, alpha, beta)
alpha (location), beta (scale)pm.Laplace(name, mu, b) - Laplace (double exponential) distribution
pm.AsymmetricLaplace(name, kappa, mu, b) - Asymmetric Laplace distribution
pm.InverseGamma(name, alpha, beta) - Inverse gamma distribution
pm.Weibull(name, alpha, beta) - Weibull distribution for reliability analysis
pm.Logistic(name, mu, s) - Logistic distribution
pm.LogitNormal(name, mu, sigma) - Logit-normal distribution for (0,1) support
pm.Pareto(name, alpha, m) - Pareto distribution for power-law phenomena
pm.ChiSquared(name, nu) - Chi-squared distribution
pm.ExGaussian(name, mu, sigma, nu) - Exponentially modified Gaussian
pm.VonMises(name, mu, kappa) - Von Mises (circular normal) distribution
pm.SkewNormal(name, mu, sigma, alpha) - Skew-normal distribution
pm.Triangular(name, lower, c, upper) - Triangular distribution
pm.Gumbel(name, mu, beta) - Gumbel distribution for extreme values
pm.Rice(name, nu, sigma) - Rice (Rician) distribution
pm.Moyal(name, mu, sigma) - Moyal distribution
pm.Kumaraswamy(name, a, b) - Kumaraswamy distribution (Beta alternative)
pm.Interpolated(name, x_points, pdf_points) - Custom distribution from interpolation
Discrete distributions define probabilities over integer-valued domains.
pm.Bernoulli(name, p)
p (success probability)pm.Binomial(name, n, p)
n (number of trials), p (success probability)pm.Poisson(name, mu)
mu (rate parameter)pm.Categorical(name, p)
p (probability vector)pm.DiscreteUniform(name, lower, upper)
lower, upper (bounds)pm.NegativeBinomial(name, mu, alpha)
mu (mean), alpha (dispersion)pm.Geometric(name, p)
p (success probability)pm.BetaBinomial(name, alpha, beta, n) - Beta-binomial (overdispersed binomial)
pm.HyperGeometric(name, N, k, n) - Hypergeometric distribution
pm.DiscreteWeibull(name, q, beta) - Discrete Weibull distribution
pm.OrderedLogistic(name, eta, cutpoints) - Ordered logistic for ordinal data
pm.OrderedProbit(name, eta, cutpoints) - Ordered probit for ordinal data
Multivariate distributions define joint probability distributions over vector-valued random variables.
pm.MvNormal(name, mu, cov)
mu (mean vector), cov (covariance matrix)pm.Dirichlet(name, a)
a (concentration parameters)pm.Multinomial(name, n, p)
n (number of trials), p (probability vector)pm.MvStudentT(name, nu, mu, cov)
nu (degrees of freedom), mu (location), cov (scale matrix)pm.LKJCorr(name, n, eta) - LKJ correlation matrix prior (for correlation matrices)
pm.LKJCholeskyCov(name, n, eta, sd_dist) - LKJ prior with Cholesky decomposition
pm.Wishart(name, nu, V) - Wishart distribution (for covariance matrices)
pm.InverseWishart(name, nu, V) - Inverse Wishart distribution
pm.MatrixNormal(name, mu, rowcov, colcov) - Matrix normal distribution
pm.KroneckerNormal(name, mu, covs, sigma) - Kronecker-structured normal
pm.CAR(name, mu, W, alpha, tau) - Conditional autoregressive (spatial)
pm.ICAR(name, W, sigma) - Intrinsic conditional autoregressive (spatial)
Mixture distributions combine multiple component distributions.
pm.Mixture(name, w, comp_dists)
w (weights), comp_dists (component distributions)pm.NormalMixture(name, w, mu, sigma)
pm.ZeroInflatedPoisson(name, psi, mu) - Excess zeros in count data
pm.ZeroInflatedBinomial(name, psi, n, p) - Zero-inflated binomial
pm.ZeroInflatedNegativeBinomial(name, psi, mu, alpha) - Zero-inflated negative binomial
pm.HurdlePoisson(name, psi, mu) - Hurdle Poisson (two-part model)
pm.HurdleGamma(name, psi, alpha, beta) - Hurdle gamma
pm.HurdleLogNormal(name, psi, mu, sigma) - Hurdle log-normal
Distributions designed for temporal data and sequential modeling.
pm.AR(name, rho, sigma, init_dist)
rho (AR coefficients), sigma (innovation std), init_dist (initial distribution)pm.GaussianRandomWalk(name, mu, sigma, init_dist)
mu (drift), sigma (step size), init_dist (initial value)pm.MvGaussianRandomWalk(name, mu, cov, init_dist)
pm.GARCH11(name, omega, alpha_1, beta_1)
pm.EulerMaruyama(name, dt, sde_fn, sde_pars, init_dist)
pm.Deterministic(name, var)
pm.Potential(name, logp)
pm.Flat(name)
pm.HalfFlat(name)
pm.Truncated(name, dist, lower, upper)
pm.Censored(name, dist, lower, upper)
pm.CustomDist(name, ..., logp, random)
pm.Simulator(name, fn, params, ...)
HalfNormal, HalfCauchy, Exponential, or GammaBeta or Uniform(0, 1)Normal or StudentT (for robustness)LogNormal, Gamma, or ExponentialLKJCorrPoisson or NegativeBinomial (for overdispersion)PyMC distributions support NumPy-style broadcasting. Use the shape parameter to create vectors or arrays of random variables:
# Vector of 5 independent normals
beta = pm.Normal('beta', mu=0, sigma=1, shape=5)
# 3x4 matrix of independent gammas
tau = pm.Gamma('tau', alpha=2, beta=1, shape=(3, 4))
Instead of shape, use dims for more readable models:
with pm.Model(coords={'predictors': ['age', 'income', 'education']}) as model:
beta = pm.Normal('beta', mu=0, sigma=1, dims='predictors')