Skip to content

hbmartin/betapert

 
 

Repository files navigation

PyPI Pytest, ruff, and black Ruff Code style: black

This package provides the PERT (also known as beta-PERT) distribution.

Background

PERT stands for "program evaluation and review technique", the original context for which the distribution was first proposed by Clark (1962).

The PERT distribution is widely used in risk and uncertainty modelling to represent uncertain quantities where one is relying on subjective estimates. This is because the three parameters defining the distribution are intuitive to the estimator.

This package

Both the PERT distribution and its generalization, the modified PERT distribution, are provided.

The distributions work exactly like SciPy continuous probability distributions. They are subclasses of rv_continuous.

Installation

uv add beta-pert-dist-scipy

Usage

from betapert import pert, mpert

# Define the distribution:
dist = pert(10, 30, 90)
# Or, using keyword arguments:
dist = pert(mini=10, mode=30, maxi=90)

# Call standard SciPy methods:
dist.pdf(50)
dist.cdf(50)
dist.mean()
dist.rvs(size=10)

# Or, you can directly use the methods on this object:
pert.pdf(50, mini=10, mode=30, maxi=90)
pert.cdf(50, mini=10, mode=30, maxi=90)
pert.mean(mini=10, mode=30, maxi=90)
pert.rvs(mini=10, mode=30, maxi=90, size=10)

# The modified PERT distribution is also available.
# A PERT distribution corresponds to `lambd=4`.
# Note that you cannot call `mpert` without specifying `lambd`
# (`pert` and `mpert` must have different signatures since SciPy does
# not support optional shape parameters).
mdist = mpert(10, 30, 90, lambd=2)

# Values of `lambd<4` have the effect of flattening the density curve
#       6%                 >  1.5%
assert (1 - mdist.cdf(80)) > (1 - dist.cdf(80))

Tests

A thorough test suite is included.

❯ pytest
=============== 250 passed in 3.52s ===============
tests/test_frozen.py 
tests/test_generalization.py
tests/test_mpert_parametrized.py
tests/test_special_cases.py 

Authors

About

The PERT probability distribution is defined by the minimum, most likely, and maximum values that a variable can take. It is commonly used to elicit subjective beliefs. PERT is an alternative to the triangular distribution, but has a smoother shape.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages

  • Python 100.0%