Skip to main content
`Ctrl`+`K`

# scipy.special.ncfdtr

scipy.special.ncfdtr(dfn, dfd, nc, f, out=None) = <ufunc 'ncfdtr'>

  Cumulative distribution function of the non-central F distribution.

  The non-central F describes the distribution of,

  \[Z = \frac{X/d_n}{Y/d_d}\]

  where \(X\) and \(Y\) are independently distributed, with \(X\) distributed non-central \(\chi^2\) with noncentrality parameter nc and \(d_n\) degrees of freedom, and \(Y\) distributed \(\chi^2\) with \(d_d\) degrees of freedom.

  Parameters:
    dfn array_like

      Degrees of freedom of the numerator sum of squares. Range (0, inf).

    dfd array_like

      Degrees of freedom of the denominator sum of squares. Range (0, inf).

    nc array_like

      Noncentrality parameter. Range [0, inf).

    f array_like

      Quantiles, i.e. the upper limit of integration.

    out ndarray, optional

      Optional output array for the function results

  Returns:
    cdf scalar or ndarray

      The calculated CDF. If all inputs are scalar, the return will be a float. Otherwise it will be an array.

  See also

  `ncfdtri`

    Quantile function; inverse of `ncfdtr` with respect to f.

  `ncfdtridfd`

    Inverse of `ncfdtr` with respect to dfd.

  `ncfdtridfn`

    Inverse of `ncfdtr` with respect to dfn.

  `ncfdtrinc`

    Inverse of `ncfdtr` with respect to nc.

  `scipy.stats.ncf`

    Non-central F distribution.

  Notes

  This function calculates the CDF of the non-central f distribution using the Boost Math C++ library [1].

  The cumulative distribution function is computed using Formula 26.6.20 of [2]:

  \[F(d_n, d_d, n_c, f) = \sum_{j=0}^\infty e^{-n_c/2} \frac{(n_c/2)^j}{j!} I_{x}(\frac{d_n}{2} + j, \frac{d_d}{2}),\]

  where \(I\) is the regularized incomplete beta function, and \(x = f d_n/(f d_n + d_d)\).

  Note that argument order of `ncfdtr` is different from that of the similar `cdf` method of `scipy.stats.ncf`: f is the last parameter of `ncfdtr` but the first parameter of `scipy.stats.ncf.cdf`.

  References

  [1]

  The Boost Developers. “Boost C++ Libraries”. https://www.boost.org/.

  [2]

  Milton Abramowitz and Irene A. Stegun, eds. Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. New York: Dover, 1972.

  Examples

      >>> import numpy as np
      >>> from scipy import special
      >>> from scipy import stats
      >>> import matplotlib.pyplot as plt

  Plot the CDF of the non-central F distribution, for nc=0. Compare with the F-distribution from scipy.stats:

      >>> x = np.linspace(-1, 8, num=500)
      >>> dfn = 3
      >>> dfd = 2
      >>> ncf_stats = stats.f.cdf(x, dfn, dfd)
      >>> ncf_special = special.ncfdtr(dfn, dfd, 0, x)

      >>> fig = plt.figure()
      >>> ax = fig.add_subplot(111)
      >>> ax.plot(x, ncf_stats, 'b-', lw=3)
      >>> ax.plot(x, ncf_special, 'r-')
      >>> plt.show()