scipy.special.nbdtrin#

scipy.special.nbdtrin(k, y, p, out=None) = <ufunc 'nbdtrin'>#

nbdtr 相对于 n 的逆函数。

返回 y = nbdtr(k, n, p) (即负二项式累积分布函数) 相对于参数 n 的逆函数。

参数:
k类数组

允许的最大失败次数(非负整数)。

y类数组

n 次成功之前,失败次数小于或等于 k 的概率(浮点数)。

p类数组

单次事件成功的概率(浮点数)。

outndarray,可选

用于存储函数结果的可选输出数组

返回:
n标量或ndarray

成功次数 n,使得 nbdtr(k, n, p) = y

另请参阅

nbdtr

负二项式的累积分布函数。

nbdtri

相对于 pnbdtr(k, n, p) 的逆函数。

nbdtrik

相对于 knbdtr(k, n, p) 的逆函数。

备注

CDFLIB [1] Fortran 例程 cdfnbn 的封装。

[2] 中的公式 26.5.26,

\[\sum_{j=k + 1}^\infty {{n + j - 1} \choose{j}} p^n (1 - p)^j = I_{1 - p}(k + 1, n),\]

用于将累积分布函数的计算简化为正则化不完全Beta函数 \(I\) 的计算。

n 的计算涉及搜索一个能产生所需 y 值的数值。该搜索依赖于 yn 的单调性。

参考文献

[1]

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

[2]

Milton Abramowitz and Irene A. Stegun, 编辑。数学函数手册,包含公式、图表和数学表格。纽约:Dover,1972。

示例

计算示例参数集的负二项式累积分布函数。

>>> from scipy.special import nbdtr, nbdtrin
>>> k, n, p = 5, 2, 0.5
>>> cdf_value = nbdtr(k, n, p)
>>> cdf_value
0.9375

验证 nbdtrin 能恢复 n 的原始值,达到浮点精度。

>>> nbdtrin(k, cdf_value, p)
1.999999999998137