scipy.special.nbdtrik#
- scipy.special.nbdtrik(y, n, p, out=None) = <ufunc 'nbdtrik'>#
負二項分位數函數。
傳回關於參數 k 的反函數,其中
y = nbdtr(k, n, p)
,負二項累積分布函數。- 參數:
- yarray_like
在 n 次成功之前,發生 k 次或更少次失敗的機率 (浮點數)。
- narray_like
目標成功次數 (正整數)。
- parray_like
單次事件成功的機率 (浮點數)。
- outndarray, optional
函數結果的可選輸出陣列
- 傳回值:
- k純量或 ndarray
允許的最大失敗次數,使得 nbdtr(k, n, p) = y。
參見
nbdtr
負二項分布的累積分布函數。
nbdtrc
負二項分布的存活函數。
nbdtri
關於 p 的反函數,其中 nbdtr(k, n, p)。
nbdtrin
關於 n 的反函數,其中 nbdtr(k, n, p)。
scipy.stats.nbinom
負二項分布
註解
CDFLIB [1] Fortran 常式 cdfnbn 的包裝函式。
公式 26.5.26 來自 [2],
\[\sum_{j=k + 1}^\infty {{n + j - 1} \choose{j}} p^n (1 - p)^j = I_{1 - p}(k + 1, n),\]用於將累積分布函數的計算簡化為正規化不完全貝塔函數 \(I\) 的計算。
關於 k 的計算涉及搜尋產生所需 y 值的數值。此搜尋依賴於 y 隨 k 變化的單調性。
參考文獻
[1]Barry Brown, James Lovato, 和 Kathy Russell, CDFLIB: Cumulative Distribution Functions, Inverses, and Other Parameters 的 Fortran 常式庫。
[2]Milton Abramowitz 和 Irene A. Stegun, eds. Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. New York: Dover, 1972.
範例
計算範例參數集的負二項累積分布函數。
>>> import numpy as np >>> from scipy.special import nbdtr, nbdtrik >>> k, n, p = 5, 2, 0.5 >>> cdf_value = nbdtr(k, n, p) >>> cdf_value 0.9375
驗證
nbdtrik
恢復了 k 的原始值。>>> nbdtrik(cdf_value, n, p) 5.0
繪製不同參數集的函數圖。
>>> import matplotlib.pyplot as plt >>> p_parameters = [0.2, 0.5, 0.7, 0.5] >>> n_parameters = [30, 30, 30, 80] >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot'] >>> parameters_list = list(zip(p_parameters, n_parameters, linestyles)) >>> cdf_vals = np.linspace(0, 1, 1000) >>> fig, ax = plt.subplots(figsize=(8, 8)) >>> for parameter_set in parameters_list: ... p, n, style = parameter_set ... nbdtrik_vals = nbdtrik(cdf_vals, n, p) ... ax.plot(cdf_vals, nbdtrik_vals, label=rf"$n={n},\ p={p}$", ... ls=style) >>> ax.legend() >>> ax.set_ylabel("$k$") >>> ax.set_xlabel("$CDF$") >>> ax.set_title("Negative binomial percentile function") >>> plt.show()
負二項分布也以
scipy.stats.nbinom
的形式提供。百分位數函數方法ppf
傳回nbdtrik
四捨五入到整數的結果>>> from scipy.stats import nbinom >>> q, n, p = 0.6, 5, 0.5 >>> nbinom.ppf(q, n, p), nbdtrik(q, n, p) (5.0, 4.800428460273882)