CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-pymc3

Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Theano

68

0.94x
Overview
Eval results
Files

distributions.mddocs/

Probability Distributions

PyMC3's comprehensive library of 60+ probability distributions provides the building blocks for Bayesian models. All distributions support automatic broadcasting, shape inference, parameter transformations, and efficient computation through Theano integration.

Capabilities

Continuous Distributions

Univariate continuous distributions for modeling real-valued random variables with support on continuous intervals.

class Normal:
    """
    Univariate normal (Gaussian) distribution.
    
    Parameters:
    - mu: float or array, mean
    - sigma: float or array, standard deviation (> 0)  
    - sd: float or array, alias for sigma (standard deviation, > 0)
    - tau: float or array, precision (1/sigma^2, > 0)
    """

class Beta:
    """
    Beta distribution for variables bounded between 0 and 1.
    
    Parameters:
    - alpha: float or array, shape parameter (> 0)
    - beta: float or array, shape parameter (> 0)
    """

class Gamma:
    """
    Gamma distribution for positive continuous variables.
    
    Parameters:
    - alpha: float or array, shape parameter (> 0)
    - beta: float or array, rate parameter (> 0)
    - mu: float or array, mean (alternative parameterization)
    - sigma: float or array, standard deviation (alternative parameterization)
    """

class Exponential:
    """
    Exponential distribution for positive continuous variables.
    
    Parameters:
    - lam: float or array, rate parameter (> 0)
    """

class StudentT:
    """
    Student's t-distribution for robust modeling.
    
    Parameters:
    - nu: float or array, degrees of freedom (> 0)
    - mu: float or array, location parameter
    - sigma: float or array, scale parameter (> 0)
    """

class Uniform:
    """
    Uniform distribution over continuous interval.
    
    Parameters:
    - lower: float or array, lower bound
    - upper: float or array, upper bound (> lower)
    """

class Lognormal:
    """
    Log-normal distribution for positive variables.
    
    Parameters:
    - mu: float or array, mean of underlying normal
    - sigma: float or array, standard deviation of underlying normal (> 0)
    """

class Cauchy:
    """
    Cauchy distribution with heavy tails.
    
    Parameters:
    - alpha: float or array, location parameter
    - beta: float or array, scale parameter (> 0)
    """

class Laplace:
    """
    Laplace (double exponential) distribution.
    
    Parameters:
    - mu: float or array, location parameter
    - b: float or array, scale parameter (> 0)
    """

class AsymmetricLaplace:
    """
    Asymmetric Laplace distribution.
    
    Parameters:
    - b: float or array, scale parameter (> 0)
    - kappa: float or array, asymmetry parameter (> 0)
    - mu: float or array, location parameter
    """

class Logistic:
    """
    Logistic distribution.
    
    Parameters:
    - mu: float or array, location parameter
    - s: float or array, scale parameter (> 0)
    """

class LogitNormal:
    """
    Logit-normal distribution for variables in (0,1).
    
    Parameters:
    - mu: float or array, mean of underlying normal
    - sigma: float or array, standard deviation of underlying normal (> 0)
    """

class Weibull:
    """
    Weibull distribution for survival analysis.
    
    Parameters:
    - alpha: float or array, shape parameter (> 0)
    - beta: float or array, scale parameter (> 0)
    """

class Pareto:
    """
    Pareto distribution for power-law phenomena.
    
    Parameters:
    - alpha: float or array, shape parameter (> 0)
    - m: float or array, scale parameter (> 0)
    """

class ChiSquared:
    """
    Chi-squared distribution.
    
    Parameters:
    - nu: float or array, degrees of freedom (> 0)
    """

class InverseGamma:
    """
    Inverse gamma distribution.
    
    Parameters:
    - alpha: float or array, shape parameter (> 0)
    - beta: float or array, scale parameter (> 0)
    """

class Gumbel:
    """
    Gumbel distribution for extreme value modeling.
    
    Parameters:
    - mu: float or array, location parameter
    - beta: float or array, scale parameter (> 0)
    """

class SkewNormal:
    """
    Skew-normal distribution.
    
    Parameters:
    - mu: float or array, location parameter
    - sigma: float or array, scale parameter (> 0)
    - alpha: float or array, shape parameter
    """

class Triangular:
    """
    Triangular distribution.
    
    Parameters:
    - lower: float or array, lower bound
    - upper: float or array, upper bound
    - c: float or array, mode
    """

class ExGaussian:
    """
    Exponentially modified Gaussian distribution.
    
    Parameters:
    - mu: float or array, mean of Gaussian component
    - sigma: float or array, standard deviation of Gaussian component (> 0)
    - nu: float or array, rate parameter of exponential component (> 0)
    """

class VonMises:
    """
    Von Mises distribution for circular data.
    
    Parameters:
    - mu: float or array, mean direction
    - kappa: float or array, concentration parameter (≥ 0)
    """

class Wald:
    """
    Wald (inverse Gaussian) distribution.
    
    Parameters:
    - mu: float or array, mean (> 0)
    - lam: float or array, shape parameter (> 0)
    """

class Kumaraswamy:
    """
    Kumaraswamy distribution for variables in (0,1).
    
    Parameters:
    - a: float or array, shape parameter (> 0)
    - b: float or array, shape parameter (> 0)
    """

class Rice:
    """
    Rice distribution.
    
    Parameters:
    - nu: float or array, non-centrality parameter (≥ 0)
    - sigma: float or array, scale parameter (> 0)
    """

class Moyal:
    """
    Moyal distribution.
    
    Parameters:
    - mu: float or array, location parameter
    - sigma: float or array, scale parameter (> 0)
    """

class TruncatedNormal:
    """
    Truncated normal distribution.
    
    Parameters:
    - mu: float or array, mean of untruncated normal
    - sigma: float or array, standard deviation of untruncated normal (> 0)
    - lower: float or array, lower bound
    - upper: float or array, upper bound
    """

Half Distributions

Half distributions for positive-constrained variables, useful for variance parameters and other positive quantities.

class HalfNormal:
    """
    Half-normal distribution (normal truncated at zero).
    
    Parameters:
    - sigma: float or array, scale parameter (> 0)
    """

class HalfCauchy:
    """
    Half-Cauchy distribution (Cauchy truncated at zero).
    
    Parameters:
    - beta: float or array, scale parameter (> 0)
    """

class HalfStudentT:
    """
    Half-Student's t distribution.
    
    Parameters:
    - nu: float or array, degrees of freedom (> 0)
    - sigma: float or array, scale parameter (> 0)
    """

class HalfFlat:
    """
    Half-flat (improper) prior for positive variables.
    """

Flat Distributions

Improper uniform priors for uninformative modeling.

class Flat:
    """
    Flat (improper uniform) prior over entire real line.
    """

Discrete Distributions

Discrete distributions for count data, categorical variables, and other integer-valued outcomes.

class Binomial:
    """
    Binomial distribution for number of successes.
    
    Parameters:
    - n: int or array, number of trials (≥ 0)
    - p: float or array, probability of success (0 ≤ p ≤ 1)
    """

class Poisson:
    """
    Poisson distribution for count data.
    
    Parameters:
    - mu: float or array, rate parameter (> 0)
    """

class NegativeBinomial:
    """
    Negative binomial distribution for overdispersed count data.
    
    Parameters:
    - mu: float or array, mean (> 0)
    - alpha: float or array, dispersion parameter (> 0)
    """

class Bernoulli:
    """
    Bernoulli distribution for binary outcomes.
    
    Parameters:
    - p: float or array, probability of success (0 ≤ p ≤ 1)
    """

class Categorical:
    """
    Categorical distribution for discrete choices.
    
    Parameters:
    - p: array, probabilities for each category (sums to 1)
    """

class Geometric:
    """
    Geometric distribution for number of trials until first success.
    
    Parameters:
    - p: float or array, probability of success (0 < p ≤ 1)
    """

class HyperGeometric:
    """
    Hypergeometric distribution for sampling without replacement.
    
    Parameters:
    - N: int, population size
    - K: int, number of success states in population
    - n: int, number of draws
    """

class DiscreteUniform:
    """
    Discrete uniform distribution.
    
    Parameters:
    - lower: int or array, lower bound
    - upper: int or array, upper bound
    """

class DiscreteWeibull:
    """
    Discrete Weibull distribution.
    
    Parameters:
    - q: float or array, shape parameter (0 < q < 1)
    - beta: float or array, shape parameter (> 0)
    """

class BetaBinomial:
    """
    Beta-binomial distribution for overdispersed binomial data.
    
    Parameters:
    - alpha: float or array, shape parameter (> 0)
    - beta: float or array, shape parameter (> 0)
    - n: int or array, number of trials
    """

class Constant:
    """
    Constant distribution (degenerate at single value).
    
    Parameters:
    - c: float or array, constant value
    """

Zero-Inflated Distributions

Mixture distributions for count data with excess zeros.

class ZeroInflatedPoisson:
    """
    Zero-inflated Poisson distribution.
    
    Parameters:
    - theta: float or array, probability of zero inflation (0 ≤ theta ≤ 1)
    - mu: float or array, Poisson rate parameter (> 0)
    """

class ZeroInflatedBinomial:
    """
    Zero-inflated binomial distribution.
    
    Parameters:
    - theta: float or array, probability of zero inflation (0 ≤ theta ≤ 1)
    - n: int or array, number of trials
    - p: float or array, probability of success (0 ≤ p ≤ 1)
    """

class ZeroInflatedNegativeBinomial:
    """
    Zero-inflated negative binomial distribution.
    
    Parameters:
    - theta: float or array, probability of zero inflation (0 ≤ theta ≤ 1)
    - mu: float or array, mean parameter (> 0)
    - alpha: float or array, dispersion parameter (> 0)
    """

Ordered Regression Distributions

Specialized distributions for ordinal regression models.

class OrderedLogistic:
    """
    Ordered logistic regression distribution.
    
    Parameters:
    - eta: float or array, linear predictor
    - cutpoints: array, ordered cutpoint parameters
    """

class OrderedProbit:
    """
    Ordered probit regression distribution.
    
    Parameters:
    - eta: float or array, linear predictor  
    - cutpoints: array, ordered cutpoint parameters
    """

Multivariate Distributions

Distributions for vector-valued random variables with dependence structure.

class MvNormal:
    """
    Multivariate normal distribution.
    
    Parameters:
    - mu: array, mean vector
    - cov: array, covariance matrix (positive definite)
    - tau: array, precision matrix (inverse covariance, positive definite)
    - chol: array, Cholesky decomposition of covariance
    """

class MvStudentT:
    """
    Multivariate Student's t distribution.
    
    Parameters:
    - nu: float, degrees of freedom (> 0)
    - mu: array, location vector
    - cov: array, scale matrix (positive definite)
    """

class Dirichlet:
    """
    Dirichlet distribution for probability vectors.
    
    Parameters:
    - a: array, concentration parameters (> 0)
    """

class Multinomial:
    """
    Multinomial distribution for count vectors.
    
    Parameters:
    - n: int or array, number of trials
    - p: array, probabilities for each category (sums to 1)
    """

class DirichletMultinomial:
    """
    Dirichlet-multinomial distribution for overdispersed multinomial data.
    
    Parameters:
    - n: int or array, number of trials
    - a: array, concentration parameters (> 0)
    """

class Wishart:
    """
    Wishart distribution for positive definite matrices.
    
    Parameters:
    - nu: float, degrees of freedom (> dim - 1)
    - V: array, scale matrix (positive definite)
    """

class WishartBartlett:
    """
    Wishart distribution using Bartlett decomposition.
    
    Parameters:
    - nu: float, degrees of freedom (> dim - 1)
    - S: array, scale matrix (positive definite)
    """

class LKJCorr:
    """
    LKJ correlation matrix distribution.
    
    Parameters:
    - eta: float, shape parameter (> 0)
    - n: int, dimension of correlation matrix
    """

class LKJCholeskyCov:
    """
    LKJ Cholesky covariance matrix distribution.
    
    Parameters:
    - eta: float, LKJ shape parameter (> 0)
    - n: int, dimension of covariance matrix
    - sd_dist: distribution for standard deviations
    """

class MatrixNormal:
    """
    Matrix normal distribution.
    
    Parameters:
    - mu: array, mean matrix
    - rowcov: array, row covariance matrix
    - colcov: array, column covariance matrix
    """

class KroneckerNormal:
    """
    Kronecker-structured normal distribution.
    
    Parameters:
    - mu: array, mean vector
    - covs: list of arrays, Kronecker factor covariance matrices
    """

Time Series Distributions

Distributions for temporal dependence and sequential data.

class GaussianRandomWalk:
    """
    Gaussian random walk process.
    
    Parameters:
    - mu: float or array, innovation mean
    - sigma: float or array, innovation standard deviation (> 0)
    - init: distribution for initial value
    """

class AR1:
    """
    First-order autoregressive process AR(1).
    
    Parameters:
    - k: float or array, constant term
    - tau_e: float or array, innovation precision (> 0)
    - phi: float or array, autoregressive coefficient (|phi| < 1 for stationarity)
    """

class AR:
    """
    Autoregressive process AR(p).
    
    Parameters:
    - rho: array, autoregressive coefficients
    - sigma: float or array, innovation standard deviation (> 0)
    - constant: bool, whether to include constant term
    - init: distribution for initial values
    """

class GARCH11:
    """
    GARCH(1,1) process for volatility modeling.
    
    Parameters:
    - omega: float, constant term (> 0)
    - alpha_1: float, ARCH coefficient (≥ 0)
    - beta_1: float, GARCH coefficient (≥ 0)
    - initial_vol: float, initial volatility (> 0)
    """

class MvGaussianRandomWalk:
    """
    Multivariate Gaussian random walk.
    
    Parameters:
    - mu: array, innovation mean vector
    - cov: array, innovation covariance matrix
    - init: distribution for initial values
    """

class MvStudentTRandomWalk:
    """
    Multivariate Student's t random walk.
    
    Parameters:
    - nu: float, degrees of freedom (> 0)
    - mu: array, innovation location vector
    - cov: array, innovation scale matrix
    - init: distribution for initial values
    """

Mixture Distributions

Finite mixture models for modeling heterogeneous populations.

class Mixture:
    """
    General finite mixture distribution.
    
    Parameters:
    - w: array, mixture weights (sums to 1)
    - comp_dists: list of distributions, mixture components
    """

class NormalMixture:
    """
    Mixture of normal distributions.
    
    Parameters:
    - w: array, mixture weights (sums to 1)  
    - mu: array, component means
    - sigma: array, component standard deviations (> 0)
    """

class MixtureSameFamily:
    """
    Mixture of distributions from same parametric family.
    
    Parameters:
    - w: array, mixture weights (sums to 1)
    - comp_dists: distribution, component distribution template
    """

Special Distributions

Advanced and specialized distributions for specific modeling needs.

class DensityDist:
    """
    Custom distribution defined by log-density function.
    
    Parameters:
    - logp: function, log-density function
    - shape: tuple, shape of distribution
    - dtype: data type
    """

class Bound:
    """
    Wrapper to add bounds to any distribution.
    
    Parameters:
    - dist: distribution to bound
    - lower: float or array, lower bound
    - upper: float or array, upper bound
    """

class Interpolated:
    """
    Interpolated univariate distribution from data.
    
    Parameters:
    - x_points: array, interpolation points
    - pdf_points: array, probability density values
    """

class Simulator:
    """
    Distribution for simulation-based inference.
    
    Parameters:
    - function: callable, simulator function
    - **params: parameters to pass to simulator
    """

class BART:
    """
    Bayesian Additive Regression Trees distribution.
    
    Parameters:
    - X: array, predictor matrix
    - Y: array, response vector  
    - m: int, number of trees
    - alpha: float, tree structure prior parameter
    - beta: float, tree structure prior parameter
    """

Distribution Base Classes and Utilities

Foundation classes and helper functions for distribution implementation.

class Distribution:
    """Base class for all PyMC3 distributions."""

class Continuous:
    """Base class for continuous distributions."""

class Discrete:
    """Base class for discrete distributions."""

class NoDistribution:
    """Placeholder for missing distributions."""

def draw_values(*params, point=None, size=None):
    """
    Draw values from distributions and constants.
    
    Parameters:
    - params: distributions or constants to draw from
    - point: dict, point in parameter space
    - size: int or tuple, shape of samples to draw
    
    Returns:
    - tuple: drawn values
    """

def generate_samples(generator, *args, **kwargs):
    """
    Generate samples from a distribution using custom generator.
    
    Parameters:
    - generator: function, sample generator
    - args, kwargs: arguments to pass to generator
    
    Returns:
    - array: generated samples
    """

def fast_sample_posterior_predictive(trace, samples=None, model=None, **kwargs):
    """
    Fast posterior predictive sampling for specific distribution types.
    
    Parameters:
    - trace: MultiTrace, posterior samples
    - samples: int, number of posterior predictive samples
    - model: Model, model context
    
    Returns:
    - dict: posterior predictive samples
    """

Usage Examples

Basic Distribution Usage

import pymc3 as pm
import numpy as np

# Sample from distributions
samples_normal = pm.Normal.dist(mu=0, sigma=1).random(size=1000)
samples_beta = pm.Beta.dist(alpha=2, beta=5).random(size=1000)

# Evaluate log-probability
x = np.array([0.0, 1.0, 2.0])
logp = pm.Normal.dist(mu=0, sigma=1).logp(x)

Model with Multiple Distribution Types

with pm.Model() as model:
    # Continuous priors
    alpha = pm.Normal('alpha', mu=0, sigma=10)
    beta = pm.Beta('beta', alpha=1, beta=1)
    sigma = pm.HalfNormal('sigma', sigma=5)
    
    # Discrete parameter
    k = pm.Poisson('k', mu=3)
    
    # Multivariate parameter
    theta = pm.Dirichlet('theta', a=np.ones(4))
    
    # Time series component
    walks = pm.GaussianRandomWalk('walks', mu=0, sigma=0.1, shape=100)
    
    # Mixture distribution
    mixture = pm.Mixture('mixture', 
                        w=theta, 
                        comp_dists=pm.Normal.dist(mu=[-2, 0, 2], sigma=1))

Custom Distributions

import theano.tensor as tt

# Custom distribution using DensityDist
def logp_custom(value, mu, sigma):
    return -0.5 * tt.sum(((value - mu) / sigma) ** 2)

with pm.Model() as model:
    mu = pm.Normal('mu', 0, 1)
    sigma = pm.HalfNormal('sigma', 1)
    
    custom = pm.DensityDist('custom', 
                           logp_custom,
                           observed=data,
                           mu=mu, 
                           sigma=sigma)

Zero-Inflated Models

with pm.Model() as zip_model:
    # Zero-inflation probability
    theta = pm.Beta('theta', alpha=1, beta=1)
    
    # Poisson rate parameter
    mu = pm.Exponential('mu', lam=1)
    
    # Zero-inflated Poisson likelihood
    y_obs = pm.ZeroInflatedPoisson('y_obs', 
                                   theta=theta, 
                                   mu=mu, 
                                   observed=count_data)

Install with Tessl CLI

npx tessl i tessl/pypi-pymc3

docs

data-handling.md

distributions.md

gaussian-processes.md

glm.md

index.md

math-functions.md

modeling.md

sampling.md

stats-plots.md

step-methods.md

variational.md

tile.json