pal.distributions module

Distributions Module.

This module contains classes for simulating statistical distributions. The implementations follow conventions similar to Klugman. Random number generation and GPU support are managed via configuration settings.

It’s expected that you construct distributions of distributions ie. a distribution can be created and passed to another distribution as a parameter.

Note on Type Signatures: Distributions accept and return only primitives (int, float) or StochasticScalar. The DistributionParameter type alias is Union[int, float, StochasticScalar]. Internally, scipy.special functions may operate on arrays extracted from StochasticScalar.values, but the public API never exposes raw numpy arrays.

Type Definitions: - DistributionParameter: Union[int, float, StochasticScalar] - ReturnType: Union[int, float, StochasticScalar]

class pal.distributions.DistributionBase(**params)[source]

Bases: object

Abstract base class for statistical distributions.

__init__(**params)[source]

Initialize distribution with parameters.

cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)[source]

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.DiscreteDistributionBase(**params)[source]

Bases: DistributionBase, ABC

Abstract base class for discrete distributions.

__init__(**params)

Initialize distribution with parameters.

cdf(x)

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

invcdf(u)

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

class pal.distributions.Poisson(mean)[source]

Bases: DiscreteDistributionBase

Poisson Distribution.

The probability mass function (PMF) is:

\[P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0, 1, 2, \ldots\]

where \(\lambda > 0\) is the mean (and variance) of the distribution.

The cumulative distribution function is:

\[F(k) = e^{-\lambda} \sum_{i=0}^{\lfloor k \rfloor} \frac{\lambda^i}{i!}\]
Parameters:

mean (Union[int, float, StochasticScalar]) – Mean number of events \(\lambda\).

__init__(mean)[source]

Initialize Poisson distribution with mean parameter.

cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.NegBinomial(n, p)[source]

Bases: DiscreteDistributionBase

Negative Binomial Distribution.

The probability mass function (PMF) is:

\[P(X = k) = \binom{k + r - 1}{k} p^r (1-p)^k, \quad k = 0, 1, 2, \ldots\]

where \(r > 0\) is the number of failures until stop and \(0 < p < 1\) is the probability of success.

Often used to model overdispersed count data.

__init__(n, p)[source]

Initialize negative binomial distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Binomial(n, p)[source]

Bases: DiscreteDistributionBase

Binomial Distribution.

The probability mass function (PMF) is:

\[P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}, \quad k = 0, 1, \ldots, n\]

where \(n\) is the number of trials and \(0 \leq p \leq 1\) is the probability of success on each trial.

Models the number of successes in a fixed number of independent Bernoulli trials.

__init__(n, p)[source]

Initialize binomial distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.HyperGeometric(ngood, nbad, n_draws)[source]

Bases: DiscreteDistributionBase

Hypergeometric Distribution.

The probability mass function (PMF) is:

\[P(X = k) = \frac{\binom{K}{k}\binom{N-K}{n-k}}{\binom{N}{n}}\]

where \(N\) is the population size, \(K\) is the number of success states in the population, \(n\) is the number of draws, and \(k\) is the number of observed successes.

Models the number of successes in draws without replacement from a finite population.

Parameters:
  • ngood (int) – Number of good items \(K\).

  • nbad (int) – Number of bad items \(N-K\).

  • n_draws (int) – Number of items drawn \(n\).

__init__(ngood, nbad, n_draws)[source]

Initialize hypergeometric distribution.

Parameters:
  • ngood (int) – Number of good items.

  • nbad (int) – Number of bad items.

  • n_draws (int) – Number of items drawn.

cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Bernoulli(p)[source]

Bases: Binomial

Bernoulli Distribution.

The probability mass function (PMF) is:

\[P(X = k) = p^k (1-p)^{1-k}, \quad k = 0, 1\]

where \(0 \leq p \leq 1\) is the probability of success.

Models a single trial with two possible outcomes: success (1) or failure (0).

__init__(p)[source]

Initialize Bernoulli distribution.

Parameters:

p (Union[int, float, StochasticScalar]) – Probability of success.

cdf(x)

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

invcdf(u)

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

class pal.distributions.GPD(shape, scale, loc)[source]

Bases: DistributionBase

Generalized Pareto Distribution.

The cumulative distribution function (CDF) is:

\[\begin{split}F(x) = \begin{cases} 1 - \left(1 + \frac{\xi(x-\mu)}{\sigma}\right)^{-1/\xi} & \text{for } \xi \neq 0 \\ 1 - \exp\left(-\frac{x-\mu}{\sigma}\right) & \text{for } \xi = 0 \end{cases}\end{split}\]

where \(\xi\) is the shape parameter, \(\sigma\) is the scale parameter, and \(\mu\) is the location parameter.

__init__(shape, scale, loc)[source]

Initialize GPD distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Burr(power, shape, scale, loc)[source]

Bases: DistributionBase

Burr Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = 1 - \left[1 + \left(\frac{x-\mu}{\sigma}\right)^c\right]^{-k}, \quad x > \mu\]

where \(c\) is the power parameter, \(k\) is the shape parameter, \(\sigma\) is the scale parameter, and \(\mu\) is the location parameter.

Parameters:
__init__(power, shape, scale, loc)[source]

Initialize Burr distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Beta(alpha, beta, scale=1.0, loc=0.0)[source]

Bases: DistributionBase

Beta Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = I_{(x-\mu)/\sigma}(\alpha, \beta) = \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)} \int_0^{(x-\mu)/\sigma} t^{\alpha-1}(1-t)^{\beta-1} dt\]

where \(I_x(\alpha, \beta)\) is the regularized incomplete beta function, \(\Gamma\) is the gamma function, \(\alpha\) and \(\beta\) are shape parameters, \(\sigma\) is the scale parameter, and \(\mu\) is the location parameter.

Parameters:
__init__(alpha, beta, scale=1.0, loc=0.0)[source]

Initialize beta distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.LogLogistic(shape, scale, loc=0.0)[source]

Bases: DistributionBase

Log-Logistic Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \frac{y}{1 + y}, \quad \text{where } y = \left(\frac{x-\mu}{\sigma}\right)^\alpha, \quad x > \mu\]

where \(\alpha\) is the shape parameter, \(\sigma\) is the scale parameter, and \(\mu\) is the location parameter.

Parameters:
__init__(shape, scale, loc=0.0)[source]

Initialize log-logistic distribution.

Parameters:
cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Normal(mu, sigma)[source]

Bases: DistributionBase

Normal (Gaussian) Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \Phi\left(\frac{x - \mu}{\sigma}\right) = \frac{1}{2}\left[1 + \text{erf}\left( \frac{x - \mu}{\sigma\sqrt{2}}\right)\right]\]

where \(\Phi\) is the standard normal CDF, \(\mu\) is the mean, and \(\sigma > 0\) is the standard deviation.

The probability density function is:

\[f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\]
__init__(mu, sigma)[source]

Initialize normal distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Logistic(mu, sigma)[source]

Bases: DistributionBase

Logistic Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \frac{1}{1 + e^{-(x-\mu)/\sigma}}\]

where \(\mu\) is the location parameter and \(\sigma > 0\) is the scale parameter.

The logistic distribution has heavier tails than the normal distribution.

__init__(mu, sigma)[source]

Initialize logistic distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.LogNormal(mu, sigma)[source]

Bases: DistributionBase

Log-Normal Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \Phi\left(\frac{\ln(x) - \mu}{\sigma}\right)\]

where \(\Phi\) is the standard normal CDF, \(\mu\) is the mean of the logarithm of the variable, and \(\sigma > 0\) is the standard deviation of the logarithm.

If \(Y = \ln(X)\) is normally distributed with mean \(\mu\) and standard deviation \(\sigma\), then \(X\) follows a log-normal distribution.

__init__(mu, sigma)[source]

Initialize log-normal distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Gamma(alpha, theta, loc=0.0)[source]

Bases: DistributionBase

Gamma Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \frac{1}{\Gamma(\alpha)} \gamma\left(\alpha, \frac{x-\mu}{\theta}\right), \quad x > \mu\]

where \(\Gamma(\alpha)\) is the gamma function, \(\gamma(\alpha, z)\) is the lower incomplete gamma function, \(\alpha\) is the shape parameter, \(\theta\) is the scale parameter, and \(\mu\) is the location parameter.

__init__(alpha, theta, loc=0.0)[source]

Initialize gamma distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.InverseGamma(alpha, theta, loc=0.0)[source]

Bases: DistributionBase

Inverse Gamma Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = 1 - \frac{1}{\Gamma(\alpha)} \gamma\left(\alpha, \frac{\theta}{x-\mu}\right), \quad x > \mu\]

where \(\Gamma(\alpha)\) is the gamma function, \(\gamma(\alpha, z)\) is the lower incomplete gamma function, \(\alpha > 0\) is the shape parameter, \(\theta > 0\) is the scale parameter, and \(\mu\) is the location parameter.

__init__(alpha, theta, loc=0.0)[source]

Initialize inverse gamma distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Pareto(shape, scale)[source]

Bases: DistributionBase

Pareto Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = 1 - \left(\frac{x_m}{x}\right)^\alpha, \quad x \geq x_m\]

where \(\alpha > 0\) is the shape parameter (tail index) and \(x_m > 0\) is the scale parameter (minimum value).

The Pareto distribution is a power-law probability distribution often used to model heavy-tailed phenomena in actuarial science and economics.

__init__(shape, scale)[source]

Initialize Pareto distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Paralogistic(shape, scale, loc=0.0)[source]

Bases: DistributionBase

ParaLogistic Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = 1 - \left[1 + \left(\frac{x-\mu}{\sigma}\right)^\alpha\right]^{-\alpha}, \quad x > \mu\]

where \(\alpha > 0\) is the shape parameter, \(\sigma > 0\) is the scale parameter, and \(\mu\) is the location parameter.

Parameters:
__init__(shape, scale, loc=0.0)[source]

Initialize paralogistic distribution.

Parameters:
cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.InverseBurr(power, shape, scale, loc)[source]

Bases: DistributionBase

Inverse Burr Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \left[\frac{\left(\frac{x-\mu}{\sigma}\right)^\tau} {1 + \left(\frac{x-\mu}{\sigma}\right)^\tau}\right]^\alpha\]

where \(\tau > 0\) is the power parameter, \(\alpha > 0\) is the shape parameter, \(\sigma > 0\) is the scale parameter, and \(\mu\) is the location parameter.

Parameters:
__init__(power, shape, scale, loc)[source]

Initialize inverse Burr distribution.

Parameters:
cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.InverseParalogistic(shape, scale, loc=0.0)[source]

Bases: DistributionBase

Inverse ParaLogistic Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \left[\frac{\left(\frac{x-\mu}{\sigma}\right)^\alpha} {1 + \left(\frac{x-\mu}{\sigma}\right)^\alpha}\right]^\alpha, \quad x > \mu\]

where \(\alpha > 0\) is the shape parameter, \(\sigma > 0\) is the scale parameter, and \(\mu\) is the location parameter.

__init__(shape, scale, loc=0.0)[source]

Initialize inverse paralogistic distribution.

Parameters:
cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Weibull(shape, scale, loc=0)[source]

Bases: DistributionBase

Weibull Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = 1 - \exp\left[-\left(\frac{x-\mu}{\sigma}\right)^\alpha\right], \quad x > \mu\]

where \(\alpha > 0\) is the shape parameter, \(\sigma > 0\) is the scale parameter, and \(\mu\) is the location parameter.

The Weibull distribution is widely used in reliability engineering and failure analysis.

__init__(shape, scale, loc=0)[source]

Initialize Weibull distribution.

Parameters:
  • shape (float) – Shape parameter.

  • scale (float) – Scale parameter.

  • loc (float) – Location parameter.

cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.InverseWeibull(shape, scale, loc=0)[source]

Bases: DistributionBase

Inverse Weibull Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \exp\left[-\left(\frac{x-\mu}{\sigma}\right)^{-\alpha}\right], \quad x > \mu\]

where \(\alpha > 0\) is the shape parameter, \(\sigma > 0\) is the scale parameter, and \(\mu\) is the location parameter.

Also known as the Fréchet distribution.

Parameters:
  • shape (float) – Shape parameter \(\alpha\).

  • scale (float) – Scale parameter \(\sigma\).

  • loc (float) – Location parameter \(\mu\).

__init__(shape, scale, loc=0)[source]

Initialize inverse Weibull distribution.

Parameters:
  • shape (float) – Shape parameter.

  • scale (float) – Scale parameter.

  • loc (float) – Location parameter.

cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.GEV(shape, scale, loc=0.0)[source]

Bases: DistributionBase

Generalized Extreme Value Distribution.

The cumulative distribution function (CDF) is:

\[\begin{split}F(x) = \begin{cases} \exp\left[-\left(1 + \xi\frac{x-\mu}{\sigma}\right)^{-1/\xi}\right] & \text{for } \xi \neq 0 \\ \exp\left[-\exp\left(-\frac{x-\mu}{\sigma}\right)\right] & \text{for } \xi = 0 \end{cases}\end{split}\]

where \(\xi\) is the shape parameter, \(\sigma > 0\) is the scale parameter, and \(\mu\) is the location parameter.

The GEV distribution unifies the Gumbel (\(\xi = 0\)), Fréchet (\(\xi > 0\)), and Weibull (\(\xi < 0\)) families. Essential for extreme value analysis in catastrophe modeling.

Parameters:
__init__(shape, scale, loc=0.0)[source]

Initialize GEV distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.StudentsT(nu, mu=0.0, sigma=1.0)[source]

Bases: DistributionBase

Student’s t Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \frac{1}{2} + \frac{x\Gamma\left(\frac{\nu+1}{2}\right)} {\sqrt{\pi\nu}\Gamma\left(\frac{\nu}{2}\right)} \,_2F_1\left(\frac{1}{2}, \frac{\nu+1}{2}; \frac{3}{2}; -\frac{x^2}{\nu}\right)\]

where \(\nu > 0\) is the degrees of freedom parameter, \(\Gamma\) is the gamma function, and \(_2F_1\) is the hypergeometric function.

For the non-standardized version with location \(\mu\) and scale \(\sigma\), substitute \(x \to (x-\mu)/\sigma\).

The Student’s t distribution has heavier tails than the normal distribution, making it useful for modeling extreme events in financial and operational risk.

Parameters:
__init__(nu, mu=0.0, sigma=1.0)[source]

Initialize Student’s t distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.InverseGaussian(mu, lambda_)[source]

Bases: DistributionBase

Inverse Gaussian (Wald) Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \Phi\left(\sqrt{\frac{\lambda}{x}} \left(\frac{x}{\mu}-1\right)\right) + \exp\left(\frac{2\lambda}{\mu}\right) \Phi\left(-\sqrt{\frac{\lambda}{x}} \left(\frac{x}{\mu}+1\right)\right)\]

where \(\Phi\) is the standard normal CDF, \(\mu > 0\) is the mean parameter, and \(\lambda > 0\) is the shape parameter.

The inverse Gaussian distribution is widely used in operational risk modeling (Basel II) and for first passage time problems.

Parameters:
__init__(mu, lambda_)[source]

Initialize inverse Gaussian distribution.

Parameters:
cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Uses numerical root finding since there is no closed form.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Exponential(scale, loc=0.0)[source]

Bases: DistributionBase

Exponential Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = 1 - \exp\left(-\frac{x-\mu}{\sigma}\right), \quad x > \mu\]

where \(\sigma > 0\) is the scale parameter (mean) and \(\mu\) is the location parameter.

The exponential distribution is memoryless and commonly used to model waiting times.

Parameters:
__init__(scale, loc=0.0)[source]

Initialize exponential distribution.

Parameters:
cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.Uniform(a, b)[source]

Bases: DistributionBase

Uniform Distribution.

Defined by:

F(x) = (x - a) / (b - a), for a <= x <= b

Parameters:
  • a (float) – Lower bound.

  • b (float) – Upper bound.

__init__(a, b)[source]

Initialize uniform distribution.

Parameters:
  • a (float) – Lower bound.

  • b (float) – Upper bound.

cdf(x)[source]

Compute cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Compute inverse cumulative distribution function.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.InverseExponential(scale, loc=0)[source]

Bases: DistributionBase

Inverse Exponential Distribution.

The cumulative distribution function (CDF) is:

\[F(x) = \exp\left(-\frac{\sigma}{x-\mu}\right), \quad x > \mu\]

where \(\sigma > 0\) is the scale parameter and \(\mu\) is the location parameter.

Parameters:
  • scale (float) – Scale parameter.

  • loc (float) – Location parameter (default 0).

__init__(scale, loc=0)[source]

Initialize inverse exponential distribution.

Parameters:
  • scale (float) – Scale parameter.

  • loc (float) – Location parameter.

cdf(x)[source]

Compute the cumulative distribution function at x.

Parameters:

x (Union[int, float, StochasticScalar]) – Single value or sequence of values to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

CDF value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

invcdf(u)[source]

Compute the inverse cumulative distribution function at u.

Parameters:

u (Union[int, float, StochasticScalar]) – Single probability or sequence of probabilities to evaluate.

Return type:

Union[int, float, StochasticScalar]

Returns:

Quantile value(s) - same type as input (Numeric -> Numeric, Sequence -> Sequence).

generate(n_sims=None, rng=None)

Generate random samples from the distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator.

Returns:

Generated samples.

Return type:

StochasticScalar

class pal.distributions.DistributionGeneratorBase(distribution)[source]

Bases: object

Base class for parameterized distribution generators.

Wraps a DistributionBase instance.

__init__(distribution)[source]

Initialize distribution generator with a distribution instance.

Parameters:

distribution (DistributionBase) – The distribution to wrap.

cdf(x)[source]

Delegate to wrapped distribution.

Return type:

Union[int, float, StochasticScalar]

invcdf(u)[source]

Delegate to wrapped distribution.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)[source]

Delegate to wrapped distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator. Uses config.rng if None.

Return type:

StochasticScalar

class pal.distributions.DiscreteDistributionGenerator(distribution_name, parameters)[source]

Bases: DistributionGeneratorBase

Discrete distribution generator instantiated by name.

__init__(distribution_name, parameters)[source]

Initialize discrete distribution by name.

Parameters:
cdf(x)

Delegate to wrapped distribution.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Delegate to wrapped distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator. Uses config.rng if None.

Return type:

StochasticScalar

invcdf(u)

Delegate to wrapped distribution.

Return type:

Union[int, float, StochasticScalar]

class pal.distributions.ContinuousDistributionGenerator(distribution_name, parameters)[source]

Bases: DistributionGeneratorBase

Continuous distribution generator instantiated by name.

__init__(distribution_name, parameters)[source]

Initialize continuous distribution by name.

Parameters:
cdf(x)

Delegate to wrapped distribution.

Return type:

Union[int, float, StochasticScalar]

generate(n_sims=None, rng=None)

Delegate to wrapped distribution.

Parameters:
  • n_sims (int | None) – Number of simulations. Uses config.n_sims if None.

  • rng (Generator | None) – Random number generator. Uses config.rng if None.

Return type:

StochasticScalar

invcdf(u)

Delegate to wrapped distribution.

Return type:

Union[int, float, StochasticScalar]