scipy.stats.multinomial#

scipy.stats.multinomial = <scipy.stats._multivariate.multinomial_gen object>[source]#

一個多項式隨機變數。

參數:
nint

試驗次數

parray_like

每次試驗落入每個類別的機率;總和應為 1

seed{None, int, np.random.RandomState, np.random.Generator}, optional

用於繪製隨機變量。如果 seedNone,則使用 RandomState 單例。如果 seed 是 int,則使用新的 RandomState 實例,並以 seed 作為種子。如果 seed 已經是 RandomStateGenerator 實例,則使用該物件。預設為 None

另請參閱

scipy.stats.binom

二項式分佈。

numpy.random.Generator.multinomial

從多項式分佈中抽樣。

scipy.stats.multivariate_hypergeom

多變量超幾何分佈。

註解

n 應為非負整數。p 的每個元素應在區間 \([0,1]\) 內,且元素總和應為 1。如果它們的總和不為 1,則不使用 p 陣列的最後一個元素,並將其替換為從先前元素剩餘的機率。

multinomial 的機率質量函數為

\[f(x) = \frac{n!}{x_1! \cdots x_k!} p_1^{x_1} \cdots p_k^{x_k},\]

支援於 \(x=(x_1, \ldots, x_k)\),其中每個 \(x_i\) 都是非負整數,且它們的總和為 \(n\)

在 0.19.0 版本中新增。

範例

>>> from scipy.stats import multinomial
>>> rv = multinomial(8, [0.3, 0.2, 0.5])
>>> rv.pmf([1, 3, 4])
0.042000000000000072

對於 \(k=2\) 的多項式分佈與對應的二項式分佈相同(除了微小的數值差異外)

>>> from scipy.stats import binom
>>> multinomial.pmf([3, 4], n=7, p=[0.4, 0.6])
0.29030399999999973
>>> binom.pmf(3, 7, 0.4)
0.29030400000000012

函數 pmflogpmfentropycov 支援廣播,依照慣例,向量參數(xp)被解釋為沿著最後一個軸的每一列都是單一物件。例如

>>> multinomial.pmf([[3, 4], [3, 5]], n=[7, 8], p=[.3, .7])
array([0.2268945,  0.25412184])

在此,x.shape == (2, 2)n.shape == (2,)p.shape == (2,),但依照上述規則,它們的行為就像 x 中的列 [3, 4][3, 5] 以及 p 中的 [.3, .7] 是單一物件,並且就像我們有 x.shape = (2,)n.shape = (2,)p.shape = () 一樣。若要取得不進行廣播的個別元素,我們會這樣做

>>> multinomial.pmf([3, 4], n=7, p=[.3, .7])
0.2268945
>>> multinomial.pmf([3, 5], 8, p=[.3, .7])
0.25412184

此廣播也適用於 cov,其中輸出物件是大小為 p.shape[-1] 的方陣。例如

>>> multinomial.cov([4, 5], [[.3, .7], [.4, .6]])
array([[[ 0.84, -0.84],
        [-0.84,  0.84]],
       [[ 1.2 , -1.2 ],
        [-1.2 ,  1.2 ]]])

在此範例中,n.shape == (2,)p.shape == (2, 2),並且依照上述規則,這些廣播的行為就像 p.shape == (2,) 一樣。因此,結果的形狀也應為 (2,),但由於每個輸出都是 \(2 \times 2\) 矩陣,因此結果實際上具有形狀 (2, 2, 2),其中 result[0] 等於 multinomial.cov(n=4, p=[.3, .7]),而 result[1] 等於 multinomial.cov(n=5, p=[.4, .6])

或者,可以呼叫物件(作為函數)來固定 np 參數,傳回「凍結的」多項式隨機變數

>>> rv = multinomial(n=7, p=[.3, .7])
>>> # Frozen object with the same methods but holding the given
>>> # degrees of freedom and scale fixed.

方法

pmf(x, n, p)

機率質量函數。

logpmf(x, n, p)

機率質量函數的對數。

rvs(n, p, size=1, random_state=None)

從多項式分佈中抽取隨機樣本。

entropy(n, p)

計算多項式分佈的熵。

cov(n, p)

計算多項式分佈的共變異數矩陣。