Spec-Zone.ru › NumPy 2.0

numpy.random.Generator.negative_binomial

метод

random.Generator.negative_binomial(n, p, size=None)

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

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

Параметры:
nfloat или array_like чисел с плавающей точкой

Параметр распределения, больше 0.

pfloat или array_like чисел с плавающей точкой

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

sizeint или кортеж из целых чисел, необязательно

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

Возвращаемое значение:
outndarray или скаляр

Сгенерированные выборки из заданного отрицательного биномиального распределения, где каждая выборка равна 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}\), что является более распространённой формой этого члена в функции массы вероятности. Отрицательное биномиальное распределение даёт вероятность 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]

Weisstein, Eric W. “Отрицательное биномиальное распределение.” Из MathWorld – Wolfram Web Resource. https://mathworld.wolfram.com/NegativeBinomialDistribution.html

[2]

Wikipedia, «Отрицательное биномиальное распределение», 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)

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/generated/numpy.random.Generator.negative_binomial.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API