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.