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.