numpy.random.Generator.negative_binomial#

метод

random.Generator.negative_binomial(n, p, размер=None)#

Извлекать выборки из отрицательного биномиального распределения.

Выборки берутся из отрицательного биномиального распределения с заданными параметрами, n успехов и p вероятность успеха, где n > 0 и p находится в интервале (0, 1].

Параметры:
nfloat или array_like из float

Параметр распределения, > 0.

pfloat или array_like из float

Параметр распределения. Должен удовлетворять условию 0 < p <= 1.

размерint или кортеж ints, опционально

Форма вывода. Если заданная форма, например, (m, n, k), затем m * n * k образцы извлекаются. Если size равен None (по умолчанию), возвращается единственное значение, если n и p оба являются скалярами. В противном случае, np.broadcast(n, p).size выбираются образцы.

Возвращает:
выходndarray или скаляр

Выбранные образцы из параметризованного отрицательного биномиального распределения, где каждый образец равен N, количеству неудач, которые произошли до достижения общего числа n успехов.

Примечания

Функция вероятности отрицательного биномиального распределения равна

\[P(N;n,p) = \frac{\Gamma(N+n)}{N!\Gamma(n)}p^{n}(1-p)^{N},\]

где \(n\) это количество успехов, \(p\) это вероятность успеха, \(N+n\) — это количество испытаний, а \(\Gamma\) — это гамма-функция. Когда \(n\) является целым числом, \(\frac{\Gamma(N+n)}{N!\Gamma(n)} = \binom{N+n-1}{N}\), что является более распространенной формой этого термина в pmf. Отрицательное биномиальное распределение дает вероятность N неудач при n успехах, с успехом на последнем испытании.

Если бросать кубик повторно до третьего появления "1", то распределение вероятностей количества не-"1", которые появятся до третьей "1", является отрицательным биномиальным распределением.

Поскольку этот метод внутренне вызывает Generator.poisson с промежуточным случайным значением, ValueError возникает при выборе \(n\) и \(p\) приведет к тому, что среднее + 10 сигма выборочного промежуточного распределения превысит максимально допустимое значение Generator.poisson метод. Это происходит, когда \(p\) слишком низок (много неудач происходит для каждого успеха) и \(n\) слишком велик ( допускается много успехов). Поэтому \(n\) и \(p\) значения должны удовлетворять ограничению:

\[n\frac{1-p}{p}+10n\sqrt{n}\frac{1-p}{p}<2^{63}-1-10\sqrt{2^{63}-1},\]

Где левая часть уравнения — это полученное среднее + 10 сигма выборки из гамма-распределения, внутренне используемого как \(lam\) параметр выборки Пуассона, а правая часть уравнения — ограничение на максимальное значение \(lam\) в Generator.poisson.

Ссылки

[1]

Вайсштейн, Эрик В. «Отрицательное биномиальное распределение». Из MathWorld – веб-ресурс Wolfram. https://mathworld.wolfram.com/NegativeBinomialDistribution.html

[2]

Википедия, «Отрицательное биномиальное распределение», https://en.wikipedia.org/wiki/Negative_binomial_distribution

Примеры

Извлечь выборки из распределения:

Пример из реального мира. Компания бурит разведочные нефтяные скважины, каждая с оценочной вероятностью успеха 0,1. Какова вероятность одного успеха для каждой последующей скважины, то есть какова вероятность одного успеха после бурения 5 скважин, после 6 скважин и т.д.?

>>> rng = np.random.default_rng()
>>> s = rng.negative_binomial(1, 0.1, 100000)
>>> for i in range(1, 11): 
...    probability = sum(s<i) / 100000.
...    print(i, "wells drilled, probability of one success =", probability)