scipy.stats.multinomial#
-
scipy.stats.мультиномиальное =
object> [источник]# Мультиномиальная случайная величина.
- Параметры:
- nint
Количество испытаний
- parray_like
Вероятность попадания испытания в каждую категорию; должна суммироваться до 1
- seed{None, int, np.random.RandomState, np.random.Generator}, опционально
Используется для генерации случайных величин. Если seed является None, RandomState используется синглтон. Если seed является int, новый
RandomStateиспользуется экземпляр, инициализированный с seed. Если seed уже являетсяRandomStateилиGeneratorэкземпляр, то этот объект используется. По умолчанию None.
Методы
pmf(x, n, p)
Функция вероятности массы.
logpmf(x, n, p)
Логарифм функции вероятности.
rvs(n, p, size=1, random_state=None)
Генерация случайных выборок из мультиномиального распределения.
энтропия(n, p)
Вычислить энтропию мультиномиального распределения.
cov(n, p)
Вычислить ковариационную матрицу мультиномиального распределения.
Смотрите также
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
Функции
pmf,logpmf,entropy, иcovподдерживают вещание, в соответствии с соглашением, что векторные параметры (xиp) интерпретируются так, как если бы каждая строка вдоль последней оси является отдельным объектом. Например:>>> 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,), но следуя упомянутым выше правилам, они ведут себя так, как если бы строки[3, 4]и[3, 5]вxи[.3, .7]вpбыли единым объектом, и как если бы мы имелиx.shape = (2,),n.shape = (2,), иp.shape = (). Чтобы получить отдельные элементы без broadcasting, мы бы сделали так:>>> 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]).В качестве альтернативы, объект может быть вызван (как функция) для фиксации n и p параметров, возвращая "замороженную" мультиномиальную случайную величину:
>>> rv = multinomial(n=7, p=[.3, .7]) >>> # Frozen object with the same methods but holding the given >>> # degrees of freedom and scale fixed.