distributions.Weibull

Weibull distribution implementation.

Usage

Source

distributions.Weibull()

A continuous probability distribution useful for modeling time-to-failure and similar phenomena. Characterized by shape (alpha) and scale (beta) parameters.

This implementation also includes a third parameter “location” (default=0) to shift the distribution if a lower bound is needed.

The probability density function (PDF) is: f(x) = (α/β) * ((x-location)/β)^(α-1) * exp(-((x-location)/β)^α) for x ≥ location, where α is the shape parameter and β is the scale parameter.

The samples are generated using: X = scale × (-ln(U))^(1/shape) + location where U is a uniform random number between 0 and 1.

The Weibull distribution reduces to: - Exponential distribution when shape=1 - Rayleigh distribution when shape=2 - Approximately Normal distribution when shape≈3.4

Attributes

Name Description
mean Return the theoretical mean of the Weibull distribution.
variance Return the theoretical variance of the Weibull distribution.

mean

Return the theoretical mean of the Weibull distribution.

mean: float

The formula is: location + scale * Γ(1 + 1/shape) where Γ is the gamma function.


variance

Return the theoretical variance of the Weibull distribution.

variance: float

The formula is: scale² * [Γ(1 + 2/shape) - (Γ(1 + 1/shape))²] where Γ is the gamma function.

Methods

Name Description
__init__() Initialize a three-parameter Weibull distribution.
sample() Generate random samples from the Weibull distribution.

__init__()

Initialize a three-parameter Weibull distribution.

Usage

Source

__init__(alpha, beta, location=0.0, random_seed=None)
Parameters
alpha: float

The shape parameter. Must be > 0.

beta: float

The scale parameter. Must be > 0. The higher the scale parameter, the more variance in the samples.

location: float = 0.0

An offset to shift the distribution from 0.

random_seed: Optional[Union[int, SeedSequence]] = None
A random seed or SeedSequence to reproduce samples. If None, a unique sample sequence is generated.
Notes

Caution is advised when setting shape and scale parameters as different sources use different notations:

  • In Law and Kelton, shape=alpha and scale=beta
  • Wikipedia defines shape=k and scale=lambda=1/beta
  • Other sources define shape=beta and scale=eta (η)
  • In Python’s random.weibullvariate, alpha=scale and beta=shape!

It’s recommended to verify the mean and variance of samples match expectations.


sample()

Generate random samples from the Weibull distribution.

Usage

Source

sample(size=None)
Parameters
size: Optional[Union[int, Tuple[int, …]]] = None
The number/shape of samples to generate:
  • If None: returns a single sample as a float
  • If int: returns a 1-D array with that many samples
  • If tuple of ints: returns an array with that shape
Returns
Union[float, NDArray[np.float64]]
Random samples from the Weibull distribution:
  • A single float when size is None
  • A numpy array of floats with shape determined by size parameter