scipy.special.ncfdtr#

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

非中心 F 分布的累积分布函数。

非中心 F 描述的分布如下,

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

其中,\(X\)\(Y\) 独立分布,\(X\) 分布成非中心\(\chi^2\),非中心参数为 nc\(d_n\) 自由度,并且 \(Y\) 分布为 \(\chi^2\),自由度为 \(d_d\)

参数:
dfn类似数组

分子平方和的自由度。范围 (0, inf)。

dfd类似数组

分母平方和的自由度。范围 (0, inf)。

nc类似数组

非中心参数。范围应为 (0, 1e4)。

f类似数组

分位数,即积分的上限。

outndarray,可选

可选输出数组作为函数结果

返回:
cdf标量或 ndarray

计算出来的 CDF。如果所有输入都是标量,返回值将是 float。否则,返回值将是数组。

另参见

ncfdtri

分位数函数;ncfdtr 关于 f 的反函数。

ncfdtridfd

ncfdtr 关于 dfd 的反函数。

ncfdtridfn

ncfdtr 关于 dfn 的反函数。

ncfdtrinc

ncfdtr 关于 nc 的反函数。

注意

CDFLIB 的包装函数[1] Fortran 例程 cdffnc

累积分布函数使用[2]的公式 26.6.20 计算。

\[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}),\]

其中 \(I\) 为正则化不完全贝塔函数,\(x = f d_n/(f d_n + d_d)\)

此例程所需的计算时间与非中心参数 nc 成正比。非常大的参数值可能会消耗大量的计算机资源。因此搜索范围限制为 10000。

参考

[1]

Barry Brown、James Lovato 和 Kathy Russell,CDFLIB:累积分布函数、反函数和其他参数的 Fortran 例程库。

[2]

Milton Abramowitz 和 Irene A. Stegun 编辑,带有公式、图表和数学表的数学函数手册。纽约:Dover,1972 年。

例子

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

绘制非中心 F 分布的 CDF,nc=0。与来自 scipy.stats 的 F 分布进行比较

>>> 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()
../../_images/scipy-special-ncfdtr-1.png