← Назад к вопросам
Объясните разницу между нормальным и биномиальным распределением. Когда применяется каждое из них?
2.0 Middle🔥 151 комментариев
#Статистика и математика
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Нормальное и биномиальное распределение
Понимание этих распределений критично для корректной статистической обработки данных в Product Analytics. Они описывают разные типы явлений и требуют разных подходов к анализу.
Нормальное распределение (Normal Distribution)
Характеристики:
- Форма: колоколообразная кривая, симметричная относительно среднего значения
- Параметры: определяется средним (μ) и стандартным отклонением (σ)
- Значения: непрерывные, могут быть любыми числами
- Диапазон: от -∞ до +∞
- Свойство 68-95-99.7: 68% данных в пределах σ, 95% в 2σ, 99.7% в 3σ
Когда применяется:
- Время сеанса пользователей
- Распределение доходов по пользователям
- Время отклика API
- Размер заказов
- Почти все непрерывные метрики при большом размере выборки
import numpy as np
from scipy import stats
# Пример: проверка нормальности распределения времени сеанса
session_times = np.array([120, 150, 180, 200, 90, 110, 220, ...])
# Shapiro-Wilk тест нормальности
statistic, p_value = stats.shapiro(session_times)
if p_value > 0.05:
print("Данные близки к нормальному распределению")
else:
print("Данные не соответствуют нормальному распределению")
Биномиальное распределение (Binomial Distribution)
Характеристики:
- Форма: дискретное распределение, может быть асимметричным
- Параметры: количество испытаний (n) и вероятность успеха (p)
- Значения: только целые числа (0, 1, 2, ..., n)
- Результат: либо успех, либо неудача (бинарный исход)
- Применимо: для счета количества успехов в фиксированном числе независимых испытаний
Когда применяется:
- Конверсия (конвертировал vs не конвертировал)
- Клик по кнопке (кликнул vs не кликнул)
- Подписка (оформил vs не оформил)
- Удержание (вернулся vs не вернулся)
- Наличие чека в заказе (есть vs нет)
from scipy.stats import binom
# Пример: вероятность конверсии
n = 1000 # количество юзеров
p = 0.2 # вероятность конверсии 20%
k = 250 # количество конвертивших
# Вероятность ровно 250 конверсий из 1000
prob = binom.pmf(k, n, p)
# Кумулятивная вероятность (до 250 включительно)
cumulative_prob = binom.cdf(k, n, p)
print(f"P(X = 250) = {prob:.6f}")
print(f"P(X <= 250) = {cumulative_prob:.6f}")
Сравнение
| Аспект | Нормальное | Биномиальное |
|---|---|---|
| Тип данных | Непрерывные | Дискретные (счетные) |
| Форма | Колоколообразная | Зависит от p и n |
| Диапазон | (-∞, +∞) | [0, n] |
| Пример | LTV, время сеанса | Конверсия, клики |
| Тест | t-тест | Тест пропорций, хи-квадрат |
Практический подход в Product Analytics
-- Анализ конверсий (биномиальное распределение)
SELECT
variant,
COUNT(*) as total_users,
SUM(CASE WHEN converted = true THEN 1 ELSE 0 END) as conversions,
ROUND(
SUM(CASE WHEN converted = true THEN 1 ELSE 0 END)::float /
COUNT(*)::float * 100, 2
) as conversion_rate
FROM experiment_events
WHERE experiment_id = 'test_123'
GROUP BY variant;
-- Анализ непрерывных метрик (нормальное распределение)
SELECT
variant,
AVG(session_duration) as avg_duration,
STDDEV(session_duration) as stddev_duration,
MIN(session_duration) as min_duration,
MAX(session_duration) as max_duration
FROM sessions
WHERE experiment_id = 'test_123'
GROUP BY variant;
Центральная предельная теорема
Одна из самых важных теорем: при достаточно большом размере выборки (n > 30) распределение средних значений стремится к нормальному, даже если исходные данные не нормально распределены. Это позволяет использовать t-тесты для многих типов данных, если размер выборки велик.
Чек-лист для выбора метода анализа
- Определи тип данных — непрерывные или дискретные?
- Дискретные (0/1)? → Биномиальное распределение → тест пропорций
- Непрерывные с n > 30? → Предположи нормальное → t-тест
- Непрерывные с n < 30? → Проверь нормальность → Shapiro-Wilk
- Не нормально? → Используй непараметрические тесты