← Назад к вопросам

Объясните разницу между нормальным и биномиальным распределением. Когда применяется каждое из них?

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-тесты для многих типов данных, если размер выборки велик.

Чек-лист для выбора метода анализа

  1. Определи тип данных — непрерывные или дискретные?
  2. Дискретные (0/1)? → Биномиальное распределение → тест пропорций
  3. Непрерывные с n > 30? → Предположи нормальное → t-тест
  4. Непрерывные с n < 30? → Проверь нормальность → Shapiro-Wilk
  5. Не нормально? → Используй непараметрические тесты