Gamma Distribution#

class GammaDistribution(amplitude: float = 1.0, shape: float = 1.0, scale: float = 1.0, loc: float = 0.0, normalize: bool = False)[source]#

Bases: BaseDistribution

Class for Gamma distribution with shape and scale parameters.

Parameters:
  • amplitude (float, optional) – The amplitude of the PDF. Default is 1.0. Ignored if normalize is True.

  • shape (float, optional) – The shape parameter, \(\alpha\). Defaults to 1.0.

  • scale (float, optional) – The rate parameter, \(\theta\). Defaults to 1.0.

  • loc (float, optional) – The location parameter, for shifting. Defaults to 0.0.

  • normalize (bool, optional) – If True, the distribution is normalized so that the total area under the PDF equals 1. Defaults to False.

Raises:
Attributes:
mean

The mean of the distribution.

median

The median of the distribution.

mode

The mode of the distribution.

stddev

The standard deviation of the distribution.

variance

The variance of the distribution.

Methods

cdf(x)

Compute the cumulative density function (CDF) for the distribution.

from_scipy_params(a[, loc, scale])

Instantiate GammaDistributionSS with scipy parametrization.

logcdf(x)

Compute the log cumulative density function (logCDF) for the distribution.

logpdf(x)

Compute the log probability density function (logPDF) for the distribution.

pdf(x)

Compute the probability density function (PDF) for the distribution.

scipy_like(a[, loc, scale])

Instantiate GammaDistributionSS with scipy parametrization.

stats()

Computes and returns the statistical properties of the distribution, including,

Examples

Importing libraries:

3import matplotlib.pyplot as plt
4import numpy as np
5from scipy.stats import gamma
6
7from pymultifit.distributions import GammaDistribution

Generating a standard GammaSS(\(\alpha =1.5, \lambda = 1\)) distribution with pyMultiFit and scipy:

 9x_values = np.linspace(start=0, stop=5, num=500)
10
11y_multifit = GammaDistribution(shape=1.5, normalize=True)
12y_scipy = gamma

Plotting PDF and CDF:

14f, ax = plt.subplots(1, 2, figsize=(12, 5))
15
16ax[0].plot(x_values, y_scipy.pdf(x=x_values, a=1.5), label='Scipy Gamma SS')
17ax[0].plot(x_values, y_multifit.pdf(x_values), 'k:', label='pyMultiFit Gamma SS')
18ax[0].set_ylabel('f(x)')
19
20ax[1].plot(x_values, y_scipy.cdf(x=x_values, a=1.5), label='Scipy Gamma SS')
21ax[1].plot(x_values, y_multifit.cdf(x_values), 'k:', label='pyMultiFit Gamma SS')
22ax[1].set_ylabel('F(x)')
23
24f.suptitle('GammaSS(1.5)')
25
26for i in ax:
27    i.set_xlabel('X')
28    i.legend()
29plt.tight_layout()
GammaSS(1.5, 1)

Generating a translated Gamma(\(\alpha=1.5, \lambda=0.2\)) distribution with \(\text{loc} = 3\):

32y_multifit = GammaDistribution(shape=1.5, scale=0.2, loc=3, normalize=True)

Plotting PDF and CDF:

34f, ax = plt.subplots(1, 2, figsize=(12, 5))
35
36ax[0].plot(x_values, y_scipy.pdf(x=x_values, a=1.5, scale=0.2, loc=3), label='Scipy translated Gamma SS')
37ax[0].plot(x_values, y_multifit.pdf(x_values), 'k:', label='pyMultiFit translated Gamma SS')
38ax[0].set_ylabel('f(x)')
39
40ax[1].plot(x_values, y_scipy.cdf(x=x_values, a=1.5, scale=0.2, loc=3), label='Scipy translated Gamma SS')
41ax[1].plot(x_values, y_multifit.cdf(x_values), 'k:', label='pyMultiFit translated Gamma SS')
42ax[1].set_ylabel('F(x)')
43
44f.suptitle(r'Gamma SS(1.5, 0.2, 3)')
45
46for i in ax:
47    i.set_xlabel('X')
48    i.legend()
49plt.tight_layout()
GammaSS(1.5, 0.2, 3)
cdf(x: ndarray) ndarray[source]#

Compute the cumulative density function (CDF) for the distribution.

Parameters:

x – Input array at which to evaluate the CDF.

classmethod from_scipy_params(a: float, loc: float = 0.0, scale: float = 1.0) GammaDistribution[source]#

Instantiate GammaDistributionSS with scipy parametrization.

Parameters:
a: float

The shape parameter.

loc: float, optional

The location parameter. Defaults to 0.0.

scale: float, optional

The scaling parameter. Defaults to 1.0.

Returns:
GammaDistribution

An instance of normalized GammaDistributionSS.

logcdf(x: ndarray) ndarray[source]#

Compute the log cumulative density function (logCDF) for the distribution.

Parameters:

x – Input array at which to evaluate the logCDF.

logpdf(x: ndarray) ndarray[source]#

Compute the log probability density function (logPDF) for the distribution.

Parameters:

x – Input array at which to evaluate the logPDF.

pdf(x: ndarray) ndarray[source]#

Compute the probability density function (PDF) for the distribution.

Parameters:

x – Input array at which to evaluate the PDF.

classmethod scipy_like(a: float, loc: float = 0.0, scale: float = 1.0) GammaDistribution[source]#

Instantiate GammaDistributionSS with scipy parametrization.

Parameters:
a: float

The shape parameter.

loc: float, optional

The location parameter. Defaults to 0.0.

scale: float, optional

The scaling parameter. Defaults to 1.0.

Returns:
GammaDistribution

An instance of normalized GammaDistributionSS.

Deprecated since version 1.0.7: Use from_scipy_params instead of scipy_like. scipy_like will be removed in a future release.

stats() Dict[str, float][source]#

Computes and returns the statistical properties of the distribution, including,

  1. mean,

  2. median,

  3. variance, and

  4. standard deviation.

Returns:

A dictionary containing statistical properties such as mean, variance, etc.

Return type:

Dict[str, float]

Notes

If any of the parameter is not computable for a distribution, this method returns None.

property mean: float | None#

The mean of the distribution.

property median: float | None#

The median of the distribution.

property mode: float | None#

The mode of the distribution.

property stddev: float | None#

The standard deviation of the distribution.

property variance: float | None#

The variance of the distribution.

Note

The GammaDistribution encompasses the following specific cases:

  1. ExponentialDistribution:
    • \(\alpha = 1\), and

    • \(\theta_\text{gamma} = \dfrac{1}{\lambda_\text{expon}}\).

  2. UniformDistribution:
    • \(\alpha = 1\), and

    • \(\theta = 1\).

This class internally utilizes the following functions from utilities_d module:

Full Import#

from pymultifit.distributions.gamma_d import GammaDistribution