Распределение Пуассона простыми словами
Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.
Зачем это знать
«Сколько покупок будет за час», «сколько запросов в сервис за минуту», «сколько деффектов на 1000 строк кода» — все эти задачи описываются Пуассоном. Это базовое распределение для count-данных.
На собесах часто: «как моделировать число звонков в call-center?». Правильный ответ — Poisson с параметром λ.
Короткое объяснение
Poisson(λ) описывает количество событий за фиксированный интервал (время, пространство), когда:
- События независимы
- Происходят с постоянной средней скоростью λ
- Два события не могут случиться одновременно
Примеры:
- Число сообщений в Telegram за час
- Число автобусов на остановке за 10 минут
- Число ошибок на странице
Формула
P(X = k) = (λ^k × e^(-λ)) / k!Характеристики
- Среднее: λ
- Дисперсия: λ ← равна среднему!
- Std: √λ
Уникальная особенность: mean = variance.
Пример в аналитике
В среднем за минуту приходит 5 посетителей. Какова вероятность, что за минуту придёт ровно 7?
λ = 5, k = 7.
from scipy.stats import poisson
print(poisson.pmf(7, 5)) # ≈ 0.104Около 10%.
В Python
from scipy.stats import poisson
# Вероятность ровно 10 событий при λ = 7
poisson.pmf(10, 7)
# Вероятность ≤ 5 событий при λ = 3
poisson.cdf(5, 3)
# Симуляция
samples = poisson.rvs(mu=5, size=1000)Связь с биномиальным
Если N велико и p мало, то Binomial(N, p) ≈ Poisson(Np).
Пример: 10 000 рассылок с CR = 0.01%. Binomial(10000, 0.0001) ≈ Poisson(1).
Использование
Web-трафик
Число запросов к серверу в секунду. В infra-аналитике — Poisson-модель для capacity planning.
Маркетинг
Число обращений в техподдержку за день. Позволяет оценить нагрузку.
Качество
Дефекты на единицу продукции. Классика из бизнеса.
Редкие события
Покупки премиума в час. Редкие события без upper bound.
Ожидание vs variance
Если mean ≠ variance — возможно, overdispersion. Тогда не Poisson, а negative binomial.
Тест:
mean = data.mean()
var = data.var()
# Если var / mean > 1.5 — overdispersedЗадачи
Задача 1
«В call-center 20 звонков в час. Сколько вероятность, что в час будет ≥ 30?».
λ = 20.
1 - poisson.cdf(29, 20) ≈ 1.7%Задача 2
«Клик по email раз в 100 рассылок. За день 500 рассылок. Распределение кликов?».
λ = 500 / 100 = 5. Poisson(5).
В A/B-тестах
Для count-метрик (число действий на user):
events_per_user— часто Poisson- Тест t-тестом на средних работает, но при overdispersion — negative binomial лучше
На собесе
«Что описывает Poisson?» Число событий за интервал, при постоянной средней скорости и независимости.
«Mean и variance Poisson?» Оба = λ.
«Когда не подходит?» При overdispersion (variance > mean) или при зависимых событиях.
«Связь с биномиальным?» Poisson — предел биномиального при N → ∞, p → 0, Np = const.
Частые ошибки
Использовать для continuous
Poisson — только для счётных неотрицательных. Не для continuous.
Игнорировать overdispersion
Реальные данные часто имеют variance > mean. Тогда negative binomial.
Не учитывать burstiness
Если события идут «пачками» (bursty) — Poisson не подойдёт. Это Hawkes process или self-exciting.
Связанные темы
FAQ
Пример в жизни?
Число звонков в техподдержку за час. Число кликов по рекламе за минуту.
Можно ли для времени между событиями?
Нет, это exponential. Poisson — количество, exponential — интервалы между.
Параметр λ как найти?
По данным: λ̂ = mean.
Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.