scipy.stats.dirichlet#

scipy.stats.dirichlet = <scipy.stats._multivariate.dirichlet_gen object>[原始碼]#

狄利克雷 (Dirichlet) 隨機變數。

alpha 關鍵字指定分佈的集中參數。

在 0.15.0 版本中新增。

參數:
alphaarray_like

集中參數。條目數量決定分佈的維度。

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

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

註解

每個 \(\alpha\) 條目都必須是正數。此分佈僅在單純形上具有支持,由下式定義

\[\sum_{i=1}^{K} x_i = 1\]

其中 \(0 < x_i < 1\)

如果分位數不在單純形內,則會引發 ValueError。

對於 dirichlet 的機率密度函數為

\[f(x) = \frac{1}{\mathrm{B}(\boldsymbol\alpha)} \prod_{i=1}^K x_i^{\alpha_i - 1}\]

其中

\[\mathrm{B}(\boldsymbol\alpha) = \frac{\prod_{i=1}^K \Gamma(\alpha_i)} {\Gamma\bigl(\sum_{i=1}^K \alpha_i\bigr)}\]

\(\boldsymbol\alpha=(\alpha_1,\ldots,\alpha_K)\),為集中參數,\(K\) 為空間維度,其中 \(x\) 取值。

請注意,dirichlet 介面在某種程度上不一致。rvs 函數傳回的陣列相對於 pdf 和 logpdf 預期的格式進行了轉置。

範例

>>> import numpy as np
>>> from scipy.stats import dirichlet

產生狄利克雷 (Dirichlet) 隨機變數

>>> quantiles = np.array([0.2, 0.2, 0.6])  # specify quantiles
>>> alpha = np.array([0.4, 5, 15])  # specify concentration parameters
>>> dirichlet.pdf(quantiles, alpha)
0.2843831684937255

相同的 PDF,但遵循對數尺度

>>> dirichlet.logpdf(quantiles, alpha)
-1.2574327653159187

一旦我們指定狄利克雷 (Dirichlet) 分佈,我們就可以計算感興趣的量

>>> dirichlet.mean(alpha)  # get the mean of the distribution
array([0.01960784, 0.24509804, 0.73529412])
>>> dirichlet.var(alpha) # get variance
array([0.00089829, 0.00864603, 0.00909517])
>>> dirichlet.entropy(alpha)  # calculate the differential entropy
-4.3280162474082715

我們也可以從分佈中傳回隨機樣本

>>> dirichlet.rvs(alpha, size=1, random_state=1)
array([[0.00766178, 0.24670518, 0.74563305]])
>>> dirichlet.rvs(alpha, size=2, random_state=2)
array([[0.01639427, 0.1292273 , 0.85437844],
       [0.00156917, 0.19033695, 0.80809388]])

或者,可以呼叫物件(作為函數)來固定集中參數,傳回「凍結的」狄利克雷 (Dirichlet) 隨機變數

>>> rv = dirichlet(alpha)
>>> # Frozen object with the same methods but holding the given
>>> # concentration parameters fixed.

方法

pdf(x, alpha)

機率密度函數。

logpdf(x, alpha)

機率密度函數的對數。

rvs(alpha, size=1, random_state=None)

從狄利克雷 (Dirichlet) 分佈中抽取隨機樣本。

mean(alpha)

狄利克雷 (Dirichlet) 分佈的平均值

var(alpha)

狄利克雷 (Dirichlet) 分佈的變異數

cov(alpha)

狄利克雷 (Dirichlet) 分佈的共變異數

entropy(alpha)

計算狄利克雷 (Dirichlet) 分佈的微分熵。