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)
Доверительный интервал с равными площадями вокруг медианы.
Примечания
Символы, используемые для обозначения параметров формы (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()
Вместо использования замороженного распределения мы также можем использовать
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