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