scipy.stats.nhypergeom#

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

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

Рассмотрим коробку, содержащую \(M\) balls:, \(n\) красный и \(M-n\) синий. Мы случайным образом выбираем шары из коробки, по одному за раз и без заменой, пока мы не выбрали \(r\) синие шары. nhypergeom является распределением количества красных шаров \(k\) мы выбрали.

Как экземпляр rv_discrete класс, nhypergeom объект наследует от него коллекцию общих методов (см. ниже полный список), и дополняет их деталями, специфичными для этого конкретного распределения.

Методы

rvs(M, n, r, loc=0, size=1, random_state=None)

Случайные величины.

pmf(k, M, n, r, loc=0)

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

logpmf(k, M, n, r, loc=0)

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

cdf(k, M, n, r, loc=0)

Интегральная функция распределения.

logcdf(k, M, n, r, loc=0)

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

sf(k, M, n, r, loc=0)

Функция выживания (также определяется как 1 - cdf, но sf иногда более точный).

logsf(k, M, n, r, loc=0)

Логарифм функции выживания.

ppf(q, M, n, r, loc=0)

Процентная точка функции (обратная cdf — процентили).

isf(q, M, n, r, loc=0)

Обратная функция выживания (обратная к sf).

stats(M, n, r, loc=0, moments='mv')

Среднее ('m'), дисперсия ('v'), асимметрия ('s') и/или эксцесс ('k').

entropy(M, n, r, loc=0)

(Дифференциальная) энтропия случайной величины.

expect(func, args=(M, n, r), loc=0, lb=None, ub=None, conditional=False)

Ожидаемое значение функции (одного аргумента) относительно распределения.

median(M, n, r, loc=0)

Медиана распределения.

mean(M, n, r, loc=0)

Среднее распределения.

var(M, n, r, loc=0)

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

std(M, n, r, loc=0)

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

interval(confidence, M, n, r, loc=0)

Доверительный интервал с равными площадями вокруг медианы.

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

hypergeom, binom, nbinom

Примечания

Символы, используемые для обозначения параметров формы (M, n, и r) не являются общепринятыми. См. Примеры для уточнения используемых здесь определений.

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

\[f(k; M, n, r) = \frac{{{k+r-1}\choose{k}}{{M-r-k}\choose{n-k}}} {{M \choose n}}\]

для \(k \in [0, n]\), \(n \in [0, M]\), \(r \in [0, M-n]\), и биномиальный коэффициент:

\[\binom{n}{k} \equiv \frac{n!}{k! (n - k)!}.\]

Это эквивалентно наблюдению \(k\) успехов в \(k+r-1\) образцы с \(k+r\)-я выборка является неудачной. Первое можно смоделировать как гипергеометрическое распределение. Вероятность второго — это просто количество оставшихся неудач \(M-n-(r-1)\) деленное на размер оставшейся популяции \(M-(k+r-1)\). Это соотношение может быть показано как:

\[NHG(k;M,n,r) = HG(k;M,n,k+r-1)\frac{(M-n-(r-1))}{(M-(k+r-1))}\]

где \(NHG\) является функцией вероятности (PMF) отрицательного гипергеометрического распределения и \(HG\) является PMF гипергеометрического распределения.

Функция вероятности массы выше определена в «стандартизированной» форме. Для сдвига распределения используйте loc параметра. В частности, nhypergeom.pmf(k, M, n, r, loc) тождественно эквивалентно nhypergeom.pmf(k - loc, M, n, r).

Ссылки

[1]

Отрицательное гипергеометрическое распределение в Википедии https://en.wikipedia.org/wiki/Negative_hypergeometric_distribution

[2]

Отрицательное гипергеометрическое распределение из http://www.math.wm.edu/~leemis/chart/UDR/PDFs/Negativehypergeometric.pdf

Примеры

>>> import numpy as np
>>> from scipy.stats import nhypergeom
>>> import matplotlib.pyplot as plt

Предположим, у нас есть коллекция из 20 животных, из которых 7 - собаки. Тогда если мы хотим узнать вероятность найти заданное количество собак (успехов) в выборке с ровно 12 животными, которые не являются собаками (неудачи), мы можем инициализировать замороженное распределение и построить функцию вероятности массы:

>>> M, n, r = [20, 7, 12]
>>> rv = nhypergeom(M, n, r)
>>> x = np.arange(0, n+2)
>>> pmf_dogs = rv.pmf(x)
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot(x, pmf_dogs, 'bo')
>>> ax.vlines(x, 0, pmf_dogs, lw=2)
>>> ax.set_xlabel('# of dogs in our group with given 12 failures')
>>> ax.set_ylabel('nhypergeom PMF')
>>> plt.show()
../../_images/scipy-stats-nhypergeom-1_00_00.png

Вместо использования замороженного распределения мы также можем использовать nhypergeom методы напрямую. Чтобы, например, получить функцию вероятности массы, используйте:

>>> prb = nhypergeom.pmf(x, M, n, r)

И для генерации случайных чисел:

>>> R = nhypergeom.rvs(M, n, r, size=10)

Чтобы проверить связь между hypergeom и nhypergeom, используйте:

>>> from scipy.stats import hypergeom, nhypergeom
>>> M, n, r = 45, 13, 8
>>> k = 6
>>> nhypergeom.pmf(k, M, n, r)
0.06180776620271643
>>> hypergeom.pmf(k, M, n, k+r-1) * (M - n - (r-1)) / (M - (k+r-1))
0.06180776620271644