scipy.stats.Normal.

iccdf#

Normal.iccdf(p, /, *, method=None)[source]#

Inverse complementary cumulative distribution function.

The inverse complementary cumulative distribution function (“inverse CCDF”), denoted \(G^{-1}(p)\), is the argument \(x\) for which the complementary cumulative distribution function \(G(x)\) evaluates to \(p\).

\[G^{-1}(p) = x \quad \text{s.t.} \quad G(x) = p\]

iccdf accepts p for \(p \in [0, 1]\).

Parameters:
parray_like

The argument of the inverse CCDF.

method{None, ‘formula’, ‘complement’, ‘inversion’}

The strategy used to evaluate the inverse CCDF. By default (None), the infrastructure chooses between the following options, listed in order of precedence.

  • 'formula': use a formula for the inverse CCDF itself

  • 'complement': evaluate the inverse CDF at the complement of p

  • 'inversion': solve numerically for the argument at which the CCDF is equal to p

Not all method options are available for all distributions. If the selected method is not available, a NotImplementedError will be raised.

Returns:
outarray

The inverse CCDF evaluated at the provided argument.

See also

icdf
ilogccdf

Notes

Suppose a continuous probability distribution has support \([l, r]\). The inverse CCDF returns its minimum value of \(l\) at \(p = 1\) and its maximum value of \(r\) at \(p = 0\). Because the CCDF has range \([0, 1]\), the inverse CCDF is only defined on the domain \([0, 1]\); for \(p < 0\) and \(p > 1\), iccdf returns nan.

Examples

Instantiate a distribution with the desired parameters:

>>> import numpy as np
>>> from scipy import stats
>>> X = stats.Uniform(a=-0.5, b=0.5)

Evaluate the inverse CCDF at the desired argument:

>>> X.iccdf(0.25)
0.25
>>> np.allclose(X.iccdf(0.25), X.icdf(1-0.25))
True

This function returns NaN when the argument is outside the domain.

>>> X.iccdf([-0.1, 0, 1, 1.1])
array([ nan,  0.5, -0.5,  nan])