scipy.stats.hypergeom#

scipy.stats.hypergeom = <scipy.stats._discrete_distns.hypergeom_gen object>[原始碼]#

一個超幾何離散隨機變數。

超幾何分布模型模擬從一個箱子中抽取物件。M 是物件總數,n 是 Type I 物件的總數。隨機變量表示從總體中不放回地抽取 N 個物件時,Type I 物件的數量。

作為 rv_discrete 類別的一個實例,hypergeom 物件繼承了它的一系列通用方法(完整列表見下文),並用針對此特定分布的細節來完善它們。

另請參閱

nhypergeom, binom, nbinom

筆記

用於表示形狀參數(MnN)的符號並非普遍接受。請參閱範例以澄清此處使用的定義。

機率質量函數定義為:

\[p(k, M, n, N) = \frac{\binom{n}{k} \binom{M - n}{N - k}} {\binom{M}{N}}\]

對於 \(k \in [\max(0, N - M + n), \min(n, N)]\),其中二項式係數定義為:

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

此分布使用 Boost Math C++ 函式庫中的常式來計算 pmfcdfsfstats 方法。[1]

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

參考文獻

[1]

Boost 開發者。「Boost C++ 函式庫」。https://boost.dev.org.tw/

範例

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

假設我們有 20 隻動物的集合,其中 7 隻是狗。那麼,如果我們想知道從 20 隻動物中隨機選擇 12 隻時,找到給定數量的狗的機率,我們可以初始化一個凍結分布並繪製機率質量函數

>>> [M, n, N] = [20, 7, 12]
>>> rv = hypergeom(M, n, N)
>>> x = np.arange(0, n+1)
>>> 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 of chosen animals')
>>> ax.set_ylabel('hypergeom PMF')
>>> plt.show()
../../_images/scipy-stats-hypergeom-1_00_00.png

除了使用凍結分布,我們也可以直接使用 hypergeom 方法。例如,若要取得累積分布函數,請使用

>>> prb = hypergeom.cdf(x, M, n, N)

而要產生隨機數字

>>> R = hypergeom.rvs(M, n, N, size=10)

方法

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

隨機變量。

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

機率質量函數。

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

機率質量函數的對數。

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

累積分布函數。

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

累積分布函數的對數。

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

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

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

生存函數的對數。

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

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

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

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

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

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

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

RV 的(微分)熵。

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

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

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

分布的中位數。

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

分布的平均數。

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

分布的變異數。

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

分布的標準差。

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

具有圍繞中位數的相等區域的信賴區間。