numpy.random.Generator.poisson#
метод
- random.Generator.poisson(lam=1.0, размер=None)#
Извлечение выборок из распределения Пуассона.
Распределение Пуассона является пределом биномиального распределения для больших N.
- Параметры:
- lamfloat или array_like из float
Ожидаемое количество событий, происходящих в фиксированном временном интервале, должно быть >= 0. Последовательность должна быть транслируемой на запрошенный размер.
- размерint или кортеж ints, опционально
Форма вывода. Если заданная форма, например,
(m, n, k), затемm * n * kобразцы извлекаются. Если size равенNone(по умолчанию), возвращается единственное значение, еслиlamявляется скаляром. В противном случае,np.array(lam).sizeвыбираются образцы.
- Возвращает:
- выходndarray или скаляр
Выборки, взятые из параметризованного распределения Пуассона.
Примечания
Функция вероятности (PMF) распределения Пуассона равна
\[f(k; \lambda)=\frac{\lambda^k e^{-\lambda}}{k!}\]Для событий с ожидаемым разделением \(\lambda\) распределение Пуассона \(f(k; \lambda)\) описывает вероятность \(k\) события, происходящие в пределах наблюдаемого интервала \(\lambda\).
Поскольку вывод ограничен диапазоном типа C int64, возникает ValueError, когда lam находится в пределах 10 сигм от максимального представимого значения.
Ссылки
[1]Вайсштейн, Эрик В. 'Распределение Пуассона.' Из MathWorld – веб-ресурс Wolfram. https://mathworld.wolfram.com/PoissonDistribution.html
[2]Википедия, "Распределение Пуассона", https://en.wikipedia.org/wiki/Poisson_distribution
Примеры
Извлечь выборки из распределения:
>>> rng = np.random.default_rng() >>> lam, size = 5, 10000 >>> s = rng.poisson(lam=lam, size=size)
Проверьте среднее значение и дисперсию, которые должны быть приблизительно
lam:>>> s.mean(), s.var() (4.9917 5.1088311) # may vary
Отобразить гистограмму и функцию вероятности массы:
>>> import matplotlib.pyplot as plt >>> from scipy import stats >>> x = np.arange(0, 21) >>> pmf = stats.poisson.pmf(x, mu=lam) >>> plt.hist(s, bins=x, density=True, width=0.5) >>> plt.stem(x, pmf, 'C1-') >>> plt.show()
Нарисовать каждые 100 значений для lambda 100 и 500:
>>> s = rng.poisson(lam=(100., 500.), size=(100, 2))