scipy.stats.dirichlet#

scipy.stats.dirichlet = object>[источник]#

Случайная величина Дирихле.

The alpha Ключевое слово задаёт параметры концентрации распределения.

Добавлено в версии 0.15.0.

Параметры:
alphaarray_like

Параметры концентрации. Количество записей определяет размерность распределения.

seed{None, int, np.random.RandomState, np.random.Generator}, опционально

Используется для генерации случайных величин. Если seed является None, RandomState используется синглтон. Если seed является int, новый RandomState используется экземпляр, инициализированный с seed. Если seed уже является RandomState или Generator экземпляр, то этот объект используется. По умолчанию None.

Методы

pdf(x, alpha)

Функция плотности вероятности.

logpdf(x, alpha)

Логарифм функции плотности вероятности.

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

Генерируйте случайные выборки из распределения Дирихле.

mean(alpha)

Среднее распределения Дирихле

var(alpha)

Дисперсия распределения Дирихле

cov(alpha)

Ковариация распределения Дирихле

entropy(alpha)

Вычисление дифференциальной энтропии распределения Дирихле.

Примечания

Каждый \(\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

Сгенерировать случайную переменную Дирихле

>>> 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.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]])

Альтернативно, объект может быть вызван (как функция) для фиксации параметров концентрации, возвращая "замороженную" случайную величину Дирихле:

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