Source code for chaospy.distributions.collection.bradford

"""Bradford distribution."""
import numpy

from ..baseclass import SimpleDistribution, LowerUpperDistribution


class bradford(SimpleDistribution):
    """Standard Bradford distribution."""

    def __init__(self, c=1):
        super(bradford, self).__init__(dict(c=c))

    def _pdf(self, x, c):
        return c / (c * x + 1.0) / numpy.log(1.0 + c)

    def _cdf(self, x, c):
        return numpy.log(1.0 + c * x) / numpy.log(c + 1.0)

    def _ppf(self, q, c):
        return ((1.0 + c) ** q - 1) / c

    def _lower(self, c):
        return 0.0

    def _upper(self, c):
        return 1.0


[docs]class Bradford(LowerUpperDistribution): """ Bradford distribution. Args: shape (float, Distribution): Shape parameter lower (float, Distribution): Location of lower threshold upper (float, Distribution): Location of upper threshold Examples: >>> distribution = chaospy.Bradford(0.8, 4, 6) >>> distribution Bradford(0.8, lower=4, upper=6) >>> uloc = numpy.linspace(0, 1, 6) >>> uloc array([0. , 0.2, 0.4, 0.6, 0.8, 1. ]) >>> xloc = distribution.inv(uloc) >>> xloc.round(3) array([4. , 4.312, 4.663, 5.057, 5.501, 6. ]) >>> numpy.allclose(distribution.fwd(xloc), uloc) True >>> distribution.pdf(xloc).round(3) array([0.681, 0.605, 0.538, 0.478, 0.425, 0.378]) >>> distribution.sample(4).round(3) array([5.171, 4.175, 5.87 , 4.819]) """
[docs] def __init__(self, shape=1, lower=0, upper=1): super(Bradford, self).__init__( dist=bradford(shape), lower=lower, upper=upper, repr_args=[shape], )