scipy.stats.nhypergeom#

scipy.stats.nhypergeom = <scipy.stats._discrete_distns.nhypergeom_gen object>[原始碼]#

負超幾何離散隨機變數。

考慮一個箱子,裡面有 \(M\) 個球:,\(n\) 個紅色和 \(M-n\) 個藍色。我們從箱子中隨機抽取球,一次一個且放回,直到我們選取了 \(r\) 個藍色球。nhypergeom 是我們選取的紅色球數量 \(k\) 的分布。

作為 rv_discrete 類別的一個實例,nhypergeom 物件繼承了它的一系列通用方法(完整列表請見下方),並使用此特定分布的詳細資訊來完成它們。

另請參閱

hypergeom, binom, nbinom

筆記

用於表示形狀參數(Mnr)的符號並非普遍接受。有關此處使用的定義的說明,請參閱範例。

機率質量函數定義為:

\[f(k; M, n, r) = \frac{{{k+r-1}\choose{k}}{{M-r-k}\choose{n-k}}} {{M \choose n}}\]

對於 \(k \in [0, n]\)\(n \in [0, M]\)\(r \in [0, M-n]\),且二項式係數為

\[\binom{n}{k} \equiv \frac{n!}{k! (n - k)!}.\]

這等同於在 \(k+r-1\) 個樣本中觀察到 \(k\) 次成功,而第 \(k+r\) 次樣本為失敗。前者可以建模為超幾何分布。後者的機率僅僅是剩餘的失敗次數 \(M-n-(r-1)\) 除以剩餘人口的大小 \(M-(k+r-1)\)。這種關係可以表示為

\[NHG(k;M,n,r) = HG(k;M,n,k+r-1)\frac{(M-n-(r-1))}{(M-(k+r-1))}\]

其中 \(NHG\) 是負超幾何分布的機率質量函數 (PMF),而 \(HG\) 是超幾何分布的 PMF。

上面的機率質量函數以「標準化」形式定義。要移動分布,請使用 loc 參數。具體來說,nhypergeom.pmf(k, M, n, r, loc)nhypergeom.pmf(k - loc, M, n, r) 完全等效。

參考文獻

範例

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

假設我們有 20 隻動物的集合,其中 7 隻是狗。那麼,如果我們想知道在一個包含 12 隻非狗動物(失敗)的樣本中找到給定數量的狗(成功)的機率,我們可以初始化一個凍結分布並繪製機率質量函數

>>> M, n, r = [20, 7, 12]
>>> rv = nhypergeom(M, n, r)
>>> x = np.arange(0, n+2)
>>> pmf_dogs = rv.pmf(x)
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot(x, pmf_dogs, 'bo')
>>> ax.vlines(x, 0, pmf_dogs, lw=2)
>>> ax.set_xlabel('# of dogs in our group with given 12 failures')
>>> ax.set_ylabel('nhypergeom PMF')
>>> plt.show()
../../_images/scipy-stats-nhypergeom-1_00_00.png

除了使用凍結分布,我們也可以直接使用 nhypergeom 方法。例如,要獲得機率質量函數,請使用

>>> prb = nhypergeom.pmf(x, M, n, r)

以及產生隨機數

>>> R = nhypergeom.rvs(M, n, r, size=10)

要驗證 hypergeomnhypergeom 之間的關係,請使用

>>> from scipy.stats import hypergeom, nhypergeom
>>> M, n, r = 45, 13, 8
>>> k = 6
>>> nhypergeom.pmf(k, M, n, r)
0.06180776620271643
>>> hypergeom.pmf(k, M, n, k+r-1) * (M - n - (r-1)) / (M - (k+r-1))
0.06180776620271644

方法

rvs(M, n, r, loc=0, size=1, random_state=None)

隨機變量。

pmf(k, M, n, r, loc=0)

機率質量函數。

logpmf(k, M, n, r, loc=0)

機率質量函數的對數。

cdf(k, M, n, r, loc=0)

累積分布函數。

logcdf(k, M, n, r, loc=0)

累積分布函數的對數。

sf(k, M, n, r, loc=0)

生存函數(也定義為 1 - cdf,但 sf 有時更準確)。

logsf(k, M, n, r, loc=0)

生存函數的對數。

ppf(q, M, n, r, loc=0)

百分點函數(cdf 的反函數 — 百分位數)。

isf(q, M, n, r, loc=0)

反生存函數(sf 的反函數)。

stats(M, n, r, loc=0, moments=’mv’)

平均值('m')、變異數('v')、偏度('s')和/或峰度('k')。

entropy(M, n, r, loc=0)

RV 的(微分)熵。

expect(func, args=(M, n, r), loc=0, lb=None, ub=None, conditional=False)

關於分布的函數(一個引數)的期望值。

median(M, n, r, loc=0)

分布的中位數。

mean(M, n, r, loc=0)

分布的平均值。

var(M, n, r, loc=0)

分布的變異數。

std(M, n, r, loc=0)

分布的標準差。

interval(confidence, M, n, r, loc=0)

圍繞中位數的等面積信賴區間。