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\)。
- 参数:
- dfnarray_like
分子平方和的自由度。范围 (0, inf)。
- dfdarray_like
分母平方和的自由度。范围 (0, inf)。
- ncarray_like
非中心参数。范围 [0, inf)。
- farray_like
分位数,即积分上限。
- outndarray, 可选
函数结果的可选输出数组
- 返回:
- cdf标量或 ndarray
计算出的 CDF。如果所有输入都是标量,则返回值为浮点数。否则它将是一个数组。
另请参阅
ncfdtri
分位数函数;关于 f 的
ncfdtr
的逆函数。ncfdtridfd
关于 dfd 的
ncfdtr
的逆函数。ncfdtridfn
关于 dfn 的
ncfdtr
的逆函数。ncfdtrinc
关于 nc 的
ncfdtr
的逆函数。scipy.stats.ncf
非中心 F 分布。
备注
此函数使用 Boost Math C++ 库 [1] 计算非中心 f 分布的 CDF。
累积分布函数使用 [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)\)。
请注意,
ncfdtr
的参数顺序与scipy.stats.ncf
的类似cdf
方法不同:f 是ncfdtr
的最后一个参数,但却是scipy.stats.ncf.cdf
的第一个参数。参考文献
[1]Boost 开发人员。“Boost C++ 库”。 https://boost.ac.cn/。
[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()