Skill Tracer
Skills › Scientific Agent Skills › pymc › distributions.md

distributions.md

379 lines · skills/pymc/references/distributions.md at 5f2bc03

Open on GitHub
1# PyMC Distributions Reference
2
3Targets PyMC 6.3.2, reviewed 2026-10-01. This reference provides a selected catalog of probability distributions available in PyMC, organized by category. Use this to select appropriate distributions for priors and likelihoods when building Bayesian models.
4

PyMC Distributions Reference

Targets PyMC 6.3.2, reviewed 2026-10-01. This reference provides a selected catalog of probability distributions available in PyMC, organized by category. Use this to select appropriate distributions for priors and likelihoods when building Bayesian models.

Raw lines 1 to 4
5## Continuous Distributions
6
7Continuous distributions define probability densities over real-valued domains.
8

Continuous Distributions

Continuous distributions define probability densities over real-valued domains.

Raw lines 5 to 8
9### Common Continuous Distributions
11**`pm.Normal(name, mu, sigma)`**
12- Normal (Gaussian) distribution
13- Parameters: `mu` (mean), `sigma` (standard deviation)
14- Support: (-∞, ∞)
15- Common uses: Default prior for unbounded parameters, likelihood for continuous data with additive noise
17**`pm.HalfNormal(name, sigma)`**
18- Half-normal distribution (positive half of normal)
19- Parameters: `sigma` (underlying Normal scale; not the half-normal standard deviation)
20- Support: [0, ∞)
21- Common uses: Prior for scale/standard deviation parameters
23**`pm.Uniform(name, lower, upper)`**
24- Uniform distribution
25- Parameters: `lower`, `upper` (bounds)
26- Support: [lower, upper]
27- Common uses: Weakly informative prior when parameter must be bounded
29**`pm.Beta(name, alpha, beta)`**
30- Beta distribution
31- Parameters: `alpha`, `beta` (shape parameters)
32- Support: [0, 1]
33- Common uses: Prior for probabilities and proportions
35**`pm.Gamma(name, alpha, beta)`**
36- Gamma distribution
37- Parameters: `alpha` (shape), `beta` (rate)
38- Support: (0, ∞)
39- Common uses: Prior for positive parameters, rate parameters
41**`pm.Exponential(name, lam)`**
42- Exponential distribution
43- Parameters: `lam` (rate parameter)
44- Support: [0, ∞)
45- Common uses: Prior for scale parameters, waiting times
47**`pm.LogNormal(name, mu, sigma)`**
48- Log-normal distribution
49- Parameters: `mu`, `sigma` (parameters of underlying normal)
50- Support: (0, ∞)
51- Common uses: Prior for positive parameters with multiplicative effects
53**`pm.StudentT(name, nu=nu, mu=mu, sigma=sigma)`**
54- Student's t-distribution
55- Parameters: `nu` (degrees of freedom), `mu` (location), `sigma` (scale)
56- Support: (-∞, ∞)
57- Common uses: Robust alternative to normal for outlier-resistant models
59**`pm.Cauchy(name, alpha, beta)`**
60- Cauchy distribution
61- Parameters: `alpha` (location), `beta` (scale)
62- Support: (-∞, ∞)
63- Common uses: Heavy-tailed alternative to normal
65**`pm.HalfStudentT(name, nu, sigma)`**
66- Positive half-Student-t distribution
67- Common uses: Heavy-tailed prior for scale parameters

Common Continuous Distributions

**pm.Normal(name, mu, sigma)**

  • Normal (Gaussian) distribution
  • Parameters: mu (mean), sigma (standard deviation)
  • Support: (-∞, ∞)
  • Common uses: Default prior for unbounded parameters, likelihood for continuous data with additive noise

**pm.HalfNormal(name, sigma)**

  • Half-normal distribution (positive half of normal)
  • Parameters: sigma (underlying Normal scale; not the half-normal standard deviation)
  • Support: [0, ∞)
  • Common uses: Prior for scale/standard deviation parameters

**pm.Uniform(name, lower, upper)**

  • Uniform distribution
  • Parameters: lower, upper (bounds)
  • Support: [lower, upper]
  • Common uses: Weakly informative prior when parameter must be bounded

**pm.Beta(name, alpha, beta)**

  • Beta distribution
  • Parameters: alpha, beta (shape parameters)
  • Support: [0, 1]
  • Common uses: Prior for probabilities and proportions

**pm.Gamma(name, alpha, beta)**

  • Gamma distribution
  • Parameters: alpha (shape), beta (rate)
  • Support: (0, ∞)
  • Common uses: Prior for positive parameters, rate parameters

**pm.Exponential(name, lam)**

  • Exponential distribution
  • Parameters: lam (rate parameter)
  • Support: [0, ∞)
  • Common uses: Prior for scale parameters, waiting times

**pm.LogNormal(name, mu, sigma)**

  • Log-normal distribution
  • Parameters: mu, sigma (parameters of underlying normal)
  • Support: (0, ∞)
  • Common uses: Prior for positive parameters with multiplicative effects

**pm.StudentT(name, nu=nu, mu=mu, sigma=sigma)**

  • Student's t-distribution
  • Parameters: nu (degrees of freedom), mu (location), sigma (scale)
  • Support: (-∞, ∞)
  • Common uses: Robust alternative to normal for outlier-resistant models

**pm.Cauchy(name, alpha, beta)**

  • Cauchy distribution
  • Parameters: alpha (location), beta (scale)
  • Support: (-∞, ∞)
  • Common uses: Heavy-tailed alternative to normal

**pm.HalfStudentT(name, nu, sigma)**

  • Positive half-Student-t distribution
  • Common uses: Heavy-tailed prior for scale parameters
Raw lines 9 to 68
69### Specialized Continuous Distributions
71**`pm.Laplace(name, mu, b)`** - Laplace (double exponential) distribution
73**`pm.AsymmetricLaplace(name, kappa, mu, b)`** - Asymmetric Laplace distribution
75**`pm.InverseGamma(name, alpha, beta)`** - Inverse gamma distribution
77**`pm.Weibull(name, alpha, beta)`** - Weibull distribution for reliability analysis
79**`pm.Logistic(name, mu, s)`** - Logistic distribution
81**`pm.LogitNormal(name, mu, sigma)`** - Logit-normal distribution for (0,1) support
83**`pm.Pareto(name, alpha, m)`** - Pareto distribution for power-law phenomena
85**`pm.ChiSquared(name, nu)`** - Chi-squared distribution
87**`pm.ExGaussian(name, mu=mu, sigma=sigma, nu=nu)`** - Exponentially modified Gaussian
89**`pm.VonMises(name, mu, kappa)`** - Von Mises (circular normal) distribution
91**`pm.SkewNormal(name, mu=mu, sigma=sigma, alpha=alpha)`** - Skew-normal distribution
93**`pm.Triangular(name, lower=lower, c=c, upper=upper)`** - Triangular distribution
95**`pm.Gumbel(name, mu, beta)`** - Gumbel distribution for extreme values
97**`pm.PolyaGamma(name, h, z)`** - Polya-gamma distribution for data augmentation patterns
99**`pm.Rice(name, nu, sigma)`** - Rice (Rician) distribution
101**`pm.Moyal(name, mu, sigma)`** - Moyal distribution
103**`pm.Kumaraswamy(name, a, b)`** - Kumaraswamy distribution (Beta alternative)
105**`pm.Wald(name, mu, lam)`** - Wald / inverse Gaussian distribution
107**`pm.Interpolated(name, x_points, pdf_points)`** - Custom distribution from interpolation

Specialized Continuous Distributions

**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=mu, sigma=sigma, nu=nu)** - Exponentially modified Gaussian

**pm.VonMises(name, mu, kappa)** - Von Mises (circular normal) distribution

**pm.SkewNormal(name, mu=mu, sigma=sigma, alpha=alpha)** - Skew-normal distribution

**pm.Triangular(name, lower=lower, c=c, upper=upper)** - Triangular distribution

**pm.Gumbel(name, mu, beta)** - Gumbel distribution for extreme values

**pm.PolyaGamma(name, h, z)** - Polya-gamma distribution for data augmentation patterns

**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.Wald(name, mu, lam)** - Wald / inverse Gaussian distribution

**pm.Interpolated(name, x_points, pdf_points)** - Custom distribution from interpolation

Raw lines 69 to 108
109## Discrete Distributions
111Discrete distributions define probabilities over integer-valued domains.

Discrete Distributions

Discrete distributions define probabilities over integer-valued domains.

Raw lines 109 to 112
113### Common Discrete Distributions
115**`pm.Bernoulli(name, p)`**
116- Bernoulli distribution (binary outcome)
117- Parameters: `p` (success probability)
118- Support: {0, 1}
119- Common uses: Binary classification, coin flips
121**`pm.Binomial(name, n, p)`**
122- Binomial distribution
123- Parameters: `n` (number of trials), `p` (success probability)
124- Support: {0, 1, ..., n}
125- Common uses: Number of successes in fixed trials
127**`pm.Poisson(name, mu)`**
128- Poisson distribution
129- Parameters: `mu` (rate parameter)
130- Support: {0, 1, 2, ...}
131- Common uses: Count data, rates, occurrences
133**`pm.Categorical(name, p)`**
134- Categorical distribution
135- Parameters: `p` (probability vector)
136- Support: {0, 1, ..., K-1}
137- Common uses: Multi-class classification
139**`pm.DiscreteUniform(name, lower, upper)`**
140- Discrete uniform distribution
141- Parameters: `lower`, `upper` (bounds)
142- Support: {lower, ..., upper}
143- Common uses: Uniform prior over finite integers
145**`pm.NegativeBinomial(name, mu, alpha)`**
146- Negative binomial distribution
147- Parameters: `mu` (mean), `alpha` (dispersion)
148- Support: {0, 1, 2, ...}
149- Common uses: Overdispersed count data
151**`pm.Geometric(name, p)`**
152- Geometric distribution
153- Parameters: `p` (success probability)
154- Support: {1, 2, 3, ...}
155- Common uses: Trial count through the first success (includes that success)

Common Discrete Distributions

**pm.Bernoulli(name, p)**

  • Bernoulli distribution (binary outcome)
  • Parameters: p (success probability)
  • Support: {0, 1}
  • Common uses: Binary classification, coin flips

**pm.Binomial(name, n, p)**

  • Binomial distribution
  • Parameters: n (number of trials), p (success probability)
  • Support: {0, 1, ..., n}
  • Common uses: Number of successes in fixed trials

**pm.Poisson(name, mu)**

  • Poisson distribution
  • Parameters: mu (rate parameter)
  • Support: {0, 1, 2, ...}
  • Common uses: Count data, rates, occurrences

**pm.Categorical(name, p)**

  • Categorical distribution
  • Parameters: p (probability vector)
  • Support: {0, 1, ..., K-1}
  • Common uses: Multi-class classification

**pm.DiscreteUniform(name, lower, upper)**

  • Discrete uniform distribution
  • Parameters: lower, upper (bounds)
  • Support: {lower, ..., upper}
  • Common uses: Uniform prior over finite integers

**pm.NegativeBinomial(name, mu, alpha)**

  • Negative binomial distribution
  • Parameters: mu (mean), alpha (dispersion)
  • Support: {0, 1, 2, ...}
  • Common uses: Overdispersed count data

**pm.Geometric(name, p)**

  • Geometric distribution
  • Parameters: p (success probability)
  • Support: {1, 2, 3, ...}
  • Common uses: Trial count through the first success (includes that success)
Raw lines 113 to 156
157### Specialized Discrete Distributions
159**`pm.BetaBinomial(name, alpha, beta, n)`** - Beta-binomial (overdispersed binomial)
161**`pm.HyperGeometric(name, N, k, n)`** - Hypergeometric distribution
163**`pm.DiscreteWeibull(name, q, beta)`** - Discrete Weibull distribution
165**`pm.OrderedLogistic(name, eta, cutpoints)`** - Ordered logistic for ordinal data
167**`pm.OrderedProbit(name, eta, cutpoints)`** - Ordered probit for ordinal data

Specialized Discrete Distributions

**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

Raw lines 157 to 168
169## Multivariate Distributions
171Multivariate distributions define joint probability distributions over vector-valued random variables.

Multivariate Distributions

Multivariate distributions define joint probability distributions over vector-valued random variables.

Raw lines 169 to 172
173### Common Multivariate Distributions
175**`pm.MvNormal(name, mu, cov)`**
176- Multivariate normal distribution
177- Parameters: `mu` (mean vector), `cov` (covariance matrix)
178- Common uses: Correlated continuous variables, Gaussian processes
180**`pm.Dirichlet(name, a)`**
181- Dirichlet distribution
182- Parameters: `a` (concentration parameters)
183- Support: Simplex (sums to 1)
184- Common uses: Prior for probability vectors, topic modeling
186**`pm.Multinomial(name, n, p)`**
187- Multinomial distribution
188- Parameters: `n` (number of trials), `p` (probability vector)
189- Common uses: Count data across multiple categories
191**`pm.DirichletMultinomial(name, n, a)`**
192- Dirichlet-multinomial distribution
193- Common uses: Overdispersed categorical counts
195**`pm.MvStudentT(name, nu=nu, mu=mu, scale=scale)`**
196- Multivariate Student's t-distribution
197- Parameters: `nu` (degrees of freedom), `mu` (location), `scale` (scale matrix; covariance is nu/(nu-2) times this matrix for nu > 2)
198- Common uses: Robust multivariate modeling

Common Multivariate Distributions

**pm.MvNormal(name, mu, cov)**

  • Multivariate normal distribution
  • Parameters: mu (mean vector), cov (covariance matrix)
  • Common uses: Correlated continuous variables, Gaussian processes

**pm.Dirichlet(name, a)**

  • Dirichlet distribution
  • Parameters: a (concentration parameters)
  • Support: Simplex (sums to 1)
  • Common uses: Prior for probability vectors, topic modeling

**pm.Multinomial(name, n, p)**

  • Multinomial distribution
  • Parameters: n (number of trials), p (probability vector)
  • Common uses: Count data across multiple categories

**pm.DirichletMultinomial(name, n, a)**

  • Dirichlet-multinomial distribution
  • Common uses: Overdispersed categorical counts

**pm.MvStudentT(name, nu=nu, mu=mu, scale=scale)**

  • Multivariate Student's t-distribution
  • Parameters: nu (degrees of freedom), mu (location), scale (scale matrix; covariance is nu/(nu-2) times this matrix for nu > 2)
  • Common uses: Robust multivariate modeling
Raw lines 173 to 199
200### Specialized Multivariate Distributions
202**`pm.LKJCorr(name, n, eta)`** - LKJ correlation matrix prior (for correlation matrices)
204**`pm.LKJCholeskyCov(name, n=n, eta=eta, sd_dist=sd_dist)`** - LKJ prior with Cholesky decomposition
206**`pm.OrderedMultinomial(name, eta, cutpoints, n)`** - Ordered multinomial outcomes
208**`pm.StickBreakingWeights(name, alpha, K)`** - Stick-breaking weights for mixture models
210**`pm.ZeroSumNormal(name, sigma)`** - Normal prior constrained to sum to zero
212**`pm.Wishart(name, nu, V)`** - Wishart distribution (for covariance matrices; prefer LKJ-based priors for most covariance models)
214There is no public `pm.InverseWishart` in PyMC 6.3.2. Prefer an explicit
215scientifically justified covariance model, usually LKJ with marginal scales.
217**`pm.WishartBartlett(name, S, nu)`** - Wishart with Bartlett decomposition
219**`pm.MatrixNormal(name, mu=mu, rowcov=rowcov, colcov=colcov)`** - Matrix normal distribution
221**`pm.KroneckerNormal(name, mu=mu, covs=covs, sigma=sigma)`** - Kronecker-structured normal
223**`pm.CAR(name, mu, W, alpha, tau)`** - Conditional autoregressive (spatial)
225**`pm.ICAR(name, W, sigma)`** - Intrinsic conditional autoregressive (spatial)

Specialized Multivariate Distributions

**pm.LKJCorr(name, n, eta)** - LKJ correlation matrix prior (for correlation matrices)

**pm.LKJCholeskyCov(name, n=n, eta=eta, sd_dist=sd_dist)** - LKJ prior with Cholesky decomposition

**pm.OrderedMultinomial(name, eta, cutpoints, n)** - Ordered multinomial outcomes

**pm.StickBreakingWeights(name, alpha, K)** - Stick-breaking weights for mixture models

**pm.ZeroSumNormal(name, sigma)** - Normal prior constrained to sum to zero

**pm.Wishart(name, nu, V)** - Wishart distribution (for covariance matrices; prefer LKJ-based priors for most covariance models)

There is no public pm.InverseWishart in PyMC 6.3.2. Prefer an explicit scientifically justified covariance model, usually LKJ with marginal scales.

**pm.WishartBartlett(name, S, nu)** - Wishart with Bartlett decomposition

**pm.MatrixNormal(name, mu=mu, rowcov=rowcov, colcov=colcov)** - Matrix normal distribution

**pm.KroneckerNormal(name, mu=mu, covs=covs, sigma=sigma)** - Kronecker-structured normal

**pm.CAR(name, mu, W, alpha, tau)** - Conditional autoregressive (spatial)

**pm.ICAR(name, W, sigma)** - Intrinsic conditional autoregressive (spatial)

Raw lines 200 to 226
227## Mixture Distributions
229Mixture distributions combine multiple component distributions.
231**`pm.Mixture(name, w, comp_dists)`**
232- General mixture distribution
233- Parameters: `w` (weights), `comp_dists` (component distributions)
234- Common uses: Clustering, multi-modal data
236**`pm.NormalMixture(name, w, mu, sigma)`**
237- Mixture of normal distributions
238- Common uses: Mixture of Gaussians clustering

Mixture Distributions

Mixture distributions combine multiple component distributions.

**pm.Mixture(name, w, comp_dists)**

  • General mixture distribution
  • Parameters: w (weights), comp_dists (component distributions)
  • Common uses: Clustering, multi-modal data

**pm.NormalMixture(name, w, mu, sigma)**

  • Mixture of normal distributions
  • Common uses: Mixture of Gaussians clustering
Raw lines 227 to 239
240### Zero-Inflated and Hurdle Models
242**`pm.ZeroInflatedPoisson(name, psi, mu)`** - Excess zeros in count data
244**`pm.ZeroInflatedBinomial(name, psi, n, p)`** - Zero-inflated binomial
246**`pm.ZeroInflatedNegativeBinomial(name, psi, mu, alpha)`** - Zero-inflated negative binomial
248**`pm.HurdlePoisson(name, psi, mu)`** - Hurdle Poisson (two-part model)
250**`pm.HurdleNegativeBinomial(name, psi, mu, alpha)`** - Hurdle negative binomial for overdispersed counts with structural zeros
252**`pm.HurdleGamma(name, psi, alpha, beta)`** - Hurdle gamma
254**`pm.HurdleLogNormal(name, psi, mu, sigma)`** - Hurdle log-normal

Zero-Inflated and Hurdle Models

**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.HurdleNegativeBinomial(name, psi, mu, alpha)** - Hurdle negative binomial for overdispersed counts with structural zeros

**pm.HurdleGamma(name, psi, alpha, beta)** - Hurdle gamma

**pm.HurdleLogNormal(name, psi, mu, sigma)** - Hurdle log-normal

Raw lines 240 to 255
256## Time Series Distributions
258Distributions designed for temporal data and sequential modeling.
260**`pm.AR(name, rho=rho, sigma=sigma, init_dist=init_dist)`**
261- Autoregressive process
262- Parameters: `rho` (AR coefficients), `sigma` (innovation std), `init_dist` (initial distribution)
263- Common uses: Time series modeling, sequential data
265**`pm.GaussianRandomWalk(name, mu=mu, sigma=sigma, init_dist=init_dist)`**
266- Gaussian random walk
267- Parameters: `mu` (drift), `sigma` (step size), `init_dist` (initial value)
268- Common uses: Cumulative processes, random walk priors
270**`pm.MvGaussianRandomWalk(name, mu=mu, cov=cov, init_dist=init_dist)`**
271- Multivariate Gaussian random walk
273**`pm.MvStudentTRandomWalk(name, nu=nu, mu=mu, scale=scale, init_dist=init_dist)`**
274- Heavy-tailed multivariate random walk
276**`pm.GARCH11(name, omega=omega, alpha_1=alpha_1, beta_1=beta_1, initial_vol=initial_vol)`**
277- GARCH(1,1) volatility model
278- Common uses: Financial time series, volatility modeling
280**`pm.EulerMaruyama(name, dt, sde_fn, sde_pars, init_dist=init_dist)`**
281- Stochastic differential equation via Euler-Maruyama discretization
282- Common uses: Continuous-time processes

Time Series Distributions

Distributions designed for temporal data and sequential modeling.

**pm.AR(name, rho=rho, sigma=sigma, init_dist=init_dist)**

  • Autoregressive process
  • Parameters: rho (AR coefficients), sigma (innovation std), init_dist (initial distribution)
  • Common uses: Time series modeling, sequential data

**pm.GaussianRandomWalk(name, mu=mu, sigma=sigma, init_dist=init_dist)**

  • Gaussian random walk
  • Parameters: mu (drift), sigma (step size), init_dist (initial value)
  • Common uses: Cumulative processes, random walk priors

**pm.MvGaussianRandomWalk(name, mu=mu, cov=cov, init_dist=init_dist)**

  • Multivariate Gaussian random walk

**pm.MvStudentTRandomWalk(name, nu=nu, mu=mu, scale=scale, init_dist=init_dist)**

  • Heavy-tailed multivariate random walk

**pm.GARCH11(name, omega=omega, alpha_1=alpha_1, beta_1=beta_1, initial_vol=initial_vol)**

  • GARCH(1,1) volatility model
  • Common uses: Financial time series, volatility modeling

**pm.EulerMaruyama(name, dt, sde_fn, sde_pars, init_dist=init_dist)**

  • Stochastic differential equation via Euler-Maruyama discretization
  • Common uses: Continuous-time processes
Raw lines 256 to 283
284## Special Distributions
286**`pm.Deterministic(name, var)`**
287- Deterministic transformation (not a random variable)
288- Use for computed quantities derived from other variables
290**`pm.Potential(name, logp)`**
291- Add arbitrary log-probability contribution; ignored by prior/posterior forward
292 sampling, so a Potential alone does not define a generative likelihood
293- Use for custom likelihood components or constraints
295**`pm.Flat(name)`**
296- Improper flat prior (constant density); cannot draw prior predictive samples
297- Use sparingly; can cause sampling issues
299**`pm.HalfFlat(name)`**
300- Improper flat prior on positive reals; cannot draw prior predictive samples
301- Use sparingly; can cause sampling issues

Special Distributions

**pm.Deterministic(name, var)**

  • Deterministic transformation (not a random variable)
  • Use for computed quantities derived from other variables

**pm.Potential(name, logp)**

  • Add arbitrary log-probability contribution; ignored by prior/posterior forward sampling, so a Potential alone does not define a generative likelihood
  • Use for custom likelihood components or constraints

**pm.Flat(name)**

  • Improper flat prior (constant density); cannot draw prior predictive samples
  • Use sparingly; can cause sampling issues

**pm.HalfFlat(name)**

  • Improper flat prior on positive reals; cannot draw prior predictive samples
  • Use sparingly; can cause sampling issues
Raw lines 284 to 302
303## Distribution Modifiers
305**`pm.Truncated(name, dist, lower, upper)`**
306- Truncate a supported univariate `.dist()` distribution to specified bounds;
307 support and inverse-CDF/rejection-sampling limitations depend on the base distribution
309**`pm.Censored(name, dist, lower, upper)`**
310- Handle censored observations (observed bounds, not exact values)
312**`pm.CustomDist(name, ..., logp, random)`**
313- Define custom distributions with user-specified log-probability and random sampling functions
315**`pm.Simulator(name, fn, params, ...)`**
316- Custom distributions via simulation (for likelihood-free inference)

Distribution Modifiers

**pm.Truncated(name, dist, lower, upper)**

  • Truncate a supported univariate .dist() distribution to specified bounds; support and inverse-CDF/rejection-sampling limitations depend on the base distribution

**pm.Censored(name, dist, lower, upper)**

  • Handle censored observations (observed bounds, not exact values)

**pm.CustomDist(name, ..., logp, random)**

  • Define custom distributions with user-specified log-probability and random sampling functions

**pm.Simulator(name, fn, params, ...)**

  • Custom distributions via simulation (for likelihood-free inference)
Raw lines 303 to 317
318## Usage Tips
320### Choosing Priors
3221. **Scale parameters** (σ, τ): Use `HalfNormal`, `HalfCauchy`, `Exponential`, or `Gamma`
3232. **Probabilities**: Use `Beta` or `Uniform(0, 1)`
3243. **Unbounded parameters**: Use `Normal` or `StudentT` (for robustness)
3254. **Positive parameters**: Use `LogNormal`, `Gamma`, or `Exponential`
3265. **Correlation/covariance matrices**: Prefer `LKJCholeskyCov` for covariance models; use `LKJCorr` when only correlations are needed
3276. **Count data**: Use `Poisson` or `NegativeBinomial` (for overdispersion)

Choosing Priors

  1. Scale parameters (σ, τ): Use HalfNormal, HalfCauchy, Exponential, or Gamma
  2. Probabilities: Use Beta or Uniform(0, 1)
  3. Unbounded parameters: Use Normal or StudentT (for robustness)
  4. Positive parameters: Use LogNormal, Gamma, or Exponential
  5. Correlation/covariance matrices: Prefer LKJCholeskyCov for covariance models; use LKJCorr when only correlations are needed
  6. Count data: Use Poisson or NegativeBinomial (for overdispersion)
Raw lines 320 to 328
329### Shape Broadcasting
331PyMC distributions support NumPy-style broadcasting. Use the `shape` parameter to create vectors or arrays of random variables:
333```python
334# Vector of 5 independent normals
335beta = pm.Normal('beta', mu=0, sigma=1, shape=5)
337# 3x4 matrix of independent gammas
338tau = pm.Gamma('tau', alpha=2, beta=1, shape=(3, 4))
339```

Shape Broadcasting

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))
Raw lines 329 to 340
341### Using dims for Named Dimensions
343Instead of shape, use `dims` for more readable models:
345```python
346with pm.Model(coords={'predictors': ['age', 'income', 'education']}) as model:
347 beta = pm.Normal('beta', mu=0, sigma=1, dims='predictors')
348```

Using dims for Named Dimensions

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')
Raw lines 341 to 349
350## Parameterization and scientific caveats
352- Entries list important parameters, not exhaustive positional signatures. Prefer
353 keywords: several distributions have keyword-only parameters. Catalog names and
354 constructor signatures were checked against released source; specialized
355 distributions were not all fit or sampled in this review.
356- NegativeBinomial has variance `mu + mu**2 / alpha`. InverseGamma `beta` is a
357 scale, while Gamma `beta` is a rate. PolyaGamma needs the optional `polyagamma`
358 package for relevant numerical operations.
359- In zero-inflated models `psi` is the weight on the ordinary count component,
360 not the probability of a structural zero. In hurdle models it is the weight
361 on the positive component. HurdleGamma/HurdleLogNormal are intended as observed
362 likelihoods or forward-sampled RVs; ordinary MCMC does not correctly sample
363 their mixed point-mass/continuous latent support.
364- `LKJCholeskyCov(..., compute_corr=True)` returns `(chol, corr, stds)` by default.
365 `LKJCorr` ordinarily returns packed upper-triangle correlations, not a full
366 correlation matrix. `eta=1` is uniform over correlation matrices, not uniform
367 independent marginal correlations for arbitrary dimension.
368- `pm.Censored` is not `pm.Truncated`: censoring puts probability mass at recorded
369 limits; truncation conditions on being included inside limits. Selection and
370 measurement processes decide the correct likelihood.
371- A density definition without a `random`/generative implementation can support
372 fitting but not meaningful forward simulation. Check `CustomDist` event/batch
373 shapes, log-density normalization and gradient behavior independently.
374- Ordinary `dims` names annotate arrays; they do not align symbolic arithmetic.
375 Multivariate event dimensions and batch dimensions have different meanings.
377Sources: [distribution catalog](https://www.pymc.io/projects/docs/en/stable/api/distributions.html),
378[released distribution source](https://github.com/pymc-devs/pymc/tree/v6.3.2/pymc/distributions),
379[forward sampling source](https://www.pymc.io/projects/docs/en/stable/_modules/pymc/sampling/forward.html).

Parameterization and scientific caveats

  • Entries list important parameters, not exhaustive positional signatures. Prefer keywords: several distributions have keyword-only parameters. Catalog names and constructor signatures were checked against released source; specialized distributions were not all fit or sampled in this review.
  • NegativeBinomial has variance mu + mu**2 / alpha. InverseGamma beta is a scale, while Gamma beta is a rate. PolyaGamma needs the optional polyagamma package for relevant numerical operations.
  • In zero-inflated models psi is the weight on the ordinary count component, not the probability of a structural zero. In hurdle models it is the weight on the positive component. HurdleGamma/HurdleLogNormal are intended as observed likelihoods or forward-sampled RVs; ordinary MCMC does not correctly sample their mixed point-mass/continuous latent support.
  • LKJCholeskyCov(..., compute_corr=True) returns (chol, corr, stds) by default. LKJCorr ordinarily returns packed upper-triangle correlations, not a full correlation matrix. eta=1 is uniform over correlation matrices, not uniform independent marginal correlations for arbitrary dimension.
  • pm.Censored is not pm.Truncated: censoring puts probability mass at recorded limits; truncation conditions on being included inside limits. Selection and measurement processes decide the correct likelihood.
  • A density definition without a random/generative implementation can support fitting but not meaningful forward simulation. Check CustomDist event/batch shapes, log-density normalization and gradient behavior independently.
  • Ordinary dims names annotate arrays; they do not align symbolic arithmetic. Multivariate event dimensions and batch dimensions have different meanings.

Sources: distribution catalog, released distribution source, forward sampling source.

Raw lines 350 to 379