scipy.stats.multivariate_hypergeom#
- scipy.stats.multivariate_hypergeom = <scipy.stats._multivariate.multivariate_hypergeom_gen object>[source]#
多變量超幾何分布隨機變數。
- 參數:
- marray_like
母體中每種類型物件的數量。也就是說,\(m[i]\) 是類型 \(i\) 的物件數量。
- narray_like
從母體中抽取的樣本數。
- seed{None, int, np.random.RandomState, np.random.Generator}, optional
用於繪製隨機變量。如果 seed 為 None,則使用 RandomState 單例。如果 seed 為整數,則使用新的
RandomState
實例,並以 seed 作為種子。如果 seed 已經是RandomState
或Generator
實例,則使用該物件。預設為 None。
另請參閱
scipy.stats.hypergeom
超幾何分布。
scipy.stats.multinomial
多項式分布。
筆記
m 必須是正整數的陣列。如果分位數 \(i\) 包含超出範圍 \([0, m_i]\) 的值,其中 \(m_i\) 是母體中類型 \(i\) 的物件數量,或者如果參數彼此不一致(例如
x.sum() != n
),則方法會傳回適當的值(例如,pmf
的0
)。如果 m 或 n 包含負值,則結果將包含nan
。的機率質量函數
multivariate_hypergeom
是\[\begin{split}P(X_1 = x_1, X_2 = x_2, \ldots, X_k = x_k) = \frac{\binom{m_1}{x_1} \binom{m_2}{x_2} \cdots \binom{m_k}{x_k}}{\binom{M}{n}}, \\ \quad (x_1, x_2, \ldots, x_k) \in \mathbb{N}^k \text{ with } \sum_{i=1}^k x_i = n\end{split}\]其中 \(m_i\) 是類型 \(i\) 的物件數量,\(M\) 是母體中物件的總數(所有 \(m_i\) 的總和),而 \(n\) 是要從母體中抽取的樣本大小。
在 1.6.0 版本中新增。
參考文獻
[1]The Multivariate Hypergeometric Distribution, http://www.randomservices.org/random/urn/MultiHypergeometric.html
[2]Thomas J. Sargent and John Stachurski, 2020, Multivariate Hypergeometric Distribution https://python.quantecon.org/multi_hyper.html
範例
若要評估多變量超幾何分布的機率質量函數,對於大小為 \(10\) 和 \(20\) 的二分母體,在大小為 \(12\) 的樣本中,第一種類型有 \(8\) 個物件,第二種類型有 \(4\) 個物件,請使用
>>> from scipy.stats import multivariate_hypergeom >>> multivariate_hypergeom.pmf(x=[8, 4], m=[10, 20], n=12) 0.0025207176631464523
當母體中僅存在兩種物件類型(好與壞),如上述範例所示時,
multivariate_hypergeom
分布與對應的hypergeom
分布相同(儘管存在微小的數值差異)。考慮另一個範例,以便與超幾何分布進行比較>>> from scipy.stats import hypergeom >>> multivariate_hypergeom.pmf(x=[3, 1], m=[10, 5], n=4) 0.4395604395604395 >>> hypergeom.pmf(k=3, M=15, n=4, N=10) 0.43956043956044005
函數
pmf
、logpmf
、mean
、var
、cov
和rvs
支援廣播,依照慣例,向量參數(x
、m
和n
)會被解讀為最後一個軸向的每一列都是單一物件。例如,我們可以將先前對multivariate_hypergeom
的兩個呼叫合併為>>> multivariate_hypergeom.pmf(x=[[8, 4], [3, 1]], m=[[10, 20], [10, 5]], ... n=[12, 4]) array([0.00252072, 0.43956044])
此廣播也適用於
cov
,其中輸出物件是大小為m.shape[-1]
的方陣。例如>>> multivariate_hypergeom.cov(m=[[7, 9], [10, 15]], n=[8, 12]) array([[[ 1.05, -1.05], [-1.05, 1.05]], [[ 1.56, -1.56], [-1.56, 1.56]]])
也就是說,
result[0]
等於multivariate_hypergeom.cov(m=[7, 9], n=8)
,而result[1]
等於multivariate_hypergeom.cov(m=[10, 15], n=12)
。或者,可以呼叫物件(作為函數)來固定 m 和 n 參數,傳回「凍結」的多變量超幾何分布隨機變數。
>>> rv = multivariate_hypergeom(m=[10, 20], n=12) >>> rv.pmf(x=[8, 4]) 0.0025207176631464523
方法
pmf(x, m, n)
機率質量函數。
logpmf(x, m, n)
機率質量函數的對數。
rvs(m, n, size=1, random_state=None)
從多變量超幾何分布中抽取隨機樣本。
mean(m, n)
多變量超幾何分布的平均值。
var(m, n)
多變量超幾何分布的變異數。
cov(m, n)
計算多變量超幾何分布的共變異數矩陣。