scipy.stats.dirichlet_multinomial#

scipy.stats.dirichlet_multinomial = <scipy.stats._multivariate.dirichlet_multinomial_gen object>[來源]#

Dirichlet 多項式隨機變數。

Dirichlet 多項式分佈是一種複合機率分佈:它是具有試驗次數 n 和類別機率 p 的多項式分佈,這些機率是從具有集中參數 alpha 的 Dirichlet 分佈中隨機抽樣而來的。

參數:
alphaarray_like

集中參數。沿最後軸的條目數量決定了分佈的維度。每個條目都必須嚴格為正數。

nint 或 array_like

試驗次數。每個元素都必須是嚴格正整數。

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

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

另請參閱

scipy.stats.dirichlet

dirichlet 分佈。

scipy.stats.multinomial

多項式分佈。

參考文獻

[1]

Dirichlet-multinomial distribution, Wikipedia, https://www.wikipedia.org/wiki/Dirichlet-multinomial_distribution

範例

>>> from scipy.stats import dirichlet_multinomial

取得 PMF

>>> n = 6  # number of trials
>>> alpha = [3, 4, 5]  # concentration parameters
>>> x = [1, 2, 3]  # counts
>>> dirichlet_multinomial.pmf(x, alpha, n)
0.08484162895927604

如果類別計數總和不等於試驗次數,則機率質量為零。

>>> dirichlet_multinomial.pmf(x, alpha, n=7)
0.0

取得 PMF 的對數

>>> dirichlet_multinomial.logpmf(x, alpha, n)
-2.4669689491013327

取得平均值

>>> dirichlet_multinomial.mean(alpha, n)
array([1.5, 2. , 2.5])

取得變異數

>>> dirichlet_multinomial.var(alpha, n)
array([1.55769231, 1.84615385, 2.01923077])

取得共變異數

>>> dirichlet_multinomial.cov(alpha, n)
array([[ 1.55769231, -0.69230769, -0.86538462],
       [-0.69230769,  1.84615385, -1.15384615],
       [-0.86538462, -1.15384615,  2.01923077]])

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

>>> dm = dirichlet_multinomial(alpha, n)
>>> dm.pmf(x)
0.08484162895927579

所有方法都是完全向量化的。xalpha 的每個元素都是一個向量(沿最後軸),n 的每個元素都是一個整數(純量),並且結果是逐元素計算的。

>>> x = [[1, 2, 3], [4, 5, 6]]
>>> alpha = [[1, 2, 3], [4, 5, 6]]
>>> n = [6, 15]
>>> dirichlet_multinomial.pmf(x, alpha, n)
array([0.06493506, 0.02626937])
>>> dirichlet_multinomial.cov(alpha, n).shape  # both covariance matrices
(2, 3, 3)

支援根據標準 NumPy 慣例進行廣播。在這裡,我們針對三個試驗次數(每個都是純量)中的每一個,都有四組集中參數(每個都是兩個元素的向量)。

>>> alpha = [[3, 4], [4, 5], [5, 6], [6, 7]]
>>> n = [[6], [7], [8]]
>>> dirichlet_multinomial.mean(alpha, n).shape
(3, 4, 2)

方法

logpmf(x, alpha, n)

機率質量函數的對數。

pmf(x, alpha, n)

機率質量函數。

mean(alpha, n)

Dirichlet 多項式分佈的平均值。

var(alpha, n)

Dirichlet 多項式分佈的變異數。

cov(alpha, n)

Dirichlet 多項式分佈的共變異數。