scipy.stats.multivariate_hypergeom#

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

Многомерная гипергеометрическая случайная величина.

Параметры:
marray_like

Количество объектов каждого типа в популяции. То есть, \(m[i]\) является количеством объектов типа \(i\).

narray_like

Количество выборок, взятых из популяции.

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

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

Методы

pmf(x, m, n)

Функция вероятности массы.

logpmf(x, m, n)

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

rvs(m, n, size=1, random_state=None)

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

mean(m, n)

Среднее многомерного гипергеометрического распределения.

var(m, n)

Дисперсия многомерного гипергеометрического распределения.

cov(m, n)

Вычислить ковариационную матрицу многомерного гипергеометрического распределения.

Смотрите также

scipy.stats.hypergeom

Гипергеометрическое распределение.

scipy.stats.multinomial

Мультиномиальное распределение.

Примечания

m должен быть массивом положительных целых чисел. Если квантиль \(i\) содержит значения вне диапазона \([0, m_i]\) где \(m_i\) — это количество объектов типа \(i\) в популяции или если параметры противоречат друг другу (например, x.sum() != n), методы возвращают соответствующее значение (например, 0 для pmf). Если m или n содержат отрицательные значения, результат будет содержать nan там.

Функция вероятности массы для multivariate_hypergeom является

\[\begin{split}P(X_1 = x_1, X_2 = x_2, \ldots, X_k = x_k) = \frac{\binom{m_1}{x_1} \binom{m_2}{x_2} \cdots \binom{m_k}{x_k}}{\binom{M}{n}}, \\ \quad (x_1, x_2, \ldots, x_k) \in \mathbb{N}^k \text{ with } \sum_{i=1}^k x_i = n\end{split}\]

где \(m_i\) — это количество объектов типа \(i\), \(M\) — это общее количество объектов в популяции (сумма всех \(m_i\)), и \(n\) это размер выборки, которую нужно взять из популяции.

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

Ссылки

[1]

Многомерное гипергеометрическое распределение, http://www.randomservices.org/random/urn/MultiHypergeometric.html

[2]

Thomas J. Sargent и John Stachurski, 2020, Многомерное гипергеометрическое распределение https://python.quantecon.org/multi_hyper.html

Примеры

Для вычисления функции вероятности многомерного гипергеометрического распределения с дихотомической популяцией размера \(10\) и \(20\), при размере выборки \(12\) с \(8\) объекты первого типа и \(4\) объектов второго типа используйте:

>>> from scipy.stats import multivariate_hypergeom
>>> multivariate_hypergeom.pmf(x=[8, 4], m=[10, 20], n=12)
0.0025207176631464523

The multivariate_hypergeom распределение идентично соответствующему hypergeom распределение (незначительные численные различия не в счёт), когда в популяции присутствуют только два типа объектов (хорошие и плохие), как в примере выше. Рассмотрим другой пример для сравнения с гипергеометрическим распределением:

>>> from scipy.stats import hypergeom
>>> multivariate_hypergeom.pmf(x=[3, 1], m=[10, 5], n=4)
0.4395604395604395
>>> hypergeom.pmf(k=3, M=15, n=4, N=10)
0.43956043956044005

Функции pmf, logpmf, mean, var, cov, и rvs поддерживать вещание, согласно соглашению, что векторные параметры (x, m, и n) интерпретируются так, как если бы каждая строка вдоль последней оси является отдельным объектом. Например, мы можем объединить два предыдущих вызова multivariate_hypergeom как

>>> multivariate_hypergeom.pmf(x=[[8, 4], [3, 1]], m=[[10, 20], [10, 5]],
...                            n=[12, 4])
array([0.00252072, 0.43956044])

Этот механизм широковещания также работает для cov, где выходные объекты являются квадратными матрицами размера m.shape[-1]. Например:

>>> multivariate_hypergeom.cov(m=[[7, 9], [10, 15]], n=[8, 12])
array([[[ 1.05, -1.05],
        [-1.05,  1.05]],
       [[ 1.56, -1.56],
        [-1.56,  1.56]]])

То есть, result[0] равно multivariate_hypergeom.cov(m=[7, 9], n=8) и result[1] равно multivariate_hypergeom.cov(m=[10, 15], n=12).

В качестве альтернативы, объект может быть вызван (как функция) для фиксации m и n параметры, возвращая "замороженную" многомерную гипергеометрическую случайную величину.

>>> rv = multivariate_hypergeom(m=[10, 20], n=12)
>>> rv.pmf(x=[8, 4])
0.0025207176631464523