Метод Монте-Карло — что это и как применять
Что такое метод Монте-Карло
Метод Монте-Карло — это класс алгоритмов, основанных на многократном случайном моделировании (симуляции). Идея: если аналитическое решение задачи сложно или невозможно, можно сгенерировать тысячи случайных сценариев и получить ответ из их распределения.
Название — от казино в Монте-Карло. Случайность в основе метода, как и в рулетке. Только результат куда полезнее.
Метод используется везде: физика, финансы, инженерия. Для аналитика данных он полезен в планировании A/B-тестов, оценке рисков, прогнозировании и проверке статистических гипотез.
Интуиция: оценка числа Пи
Классический пример, который объясняет суть метода. Возьмём квадрат со стороной 1 и впишем в него четверть круга радиусом 1. Площадь четверти круга — Pi/4, площадь квадрата — 1.
Теперь «бросаем» случайные точки в квадрат. Доля точек, попавших внутрь круга, приближает Pi/4.
import numpy as np
n_points = 1_000_000
x = np.random.uniform(0, 1, n_points)
y = np.random.uniform(0, 1, n_points)
inside_circle = (x**2 + y**2) <= 1
pi_estimate = 4 * inside_circle.mean()
print(f"Оценка Pi: {pi_estimate:.4f}") # ~3.1416Чем больше точек — тем точнее оценка. Это и есть Монте-Карло: заменяем аналитическое решение (формула площади) случайной симуляцией.
Когда аналитики используют Монте-Карло
Планирование A/B-тестов
Нужно определить, сколько пользователей потребуется для эксперимента. Аналитическая формула для power analysis существует, но она предполагает нормальное распределение метрики. Если метрика — средний чек с тяжёлым хвостом — формула даст неточный ответ.
Монте-Карло решение: берёте реальное распределение метрики (из исторических данных), симулируете тысячи экспериментов с разными размерами выборки и считаете, в какой доле симуляций тест «детектит» заданный эффект. Это и есть эмпирическая мощность.
Оценка неопределённости в прогнозах
Прогноз выручки на следующий квартал — это не одно число, а распределение возможных исходов. Монте-Карло позволяет задать распределения для входных параметров (конверсия, средний чек, трафик) и сгенерировать тысячи сценариев.
Оценка рисков
Какова вероятность, что проект не окупится? Что DAU упадёт ниже порога? Монте-Карло даёт не точечную оценку, а распределение — и вы видите весь спектр возможных исходов.
Python: симуляция A/B-теста
Допустим, вы хотите оценить мощность теста при сравнении конверсий. Базовая конверсия — 10%, ожидаемый эффект — +1 п.п. (до 11%), размер группы — 5000.
import numpy as np
from scipy import stats
np.random.seed(42)
n_simulations = 10_000
n_per_group = 5000
base_rate = 0.10
effect = 0.01 # абсолютный прирост
significant = 0
for _ in range(n_simulations):
control = np.random.binomial(1, base_rate, n_per_group)
treatment = np.random.binomial(1, base_rate + effect, n_per_group)
# z-тест для разности пропорций
p1 = control.mean()
p2 = treatment.mean()
p_pool = (p1 * n_per_group + p2 * n_per_group) / (2 * n_per_group)
se = np.sqrt(p_pool * (1 - p_pool) * (2 / n_per_group))
if se > 0:
z = (p2 - p1) / se
p_value = 2 * (1 - stats.norm.cdf(abs(z)))
if p_value < 0.05:
significant += 1
power = significant / n_simulations
print(f"Эмпирическая мощность: {power:.2%}")
# ~29% — для 5000 пользователей мощности недостаточноРезультат показывает: при 5000 на группу тест обнаружит эффект в +1 п.п. только в ~29% случаев. Нужно больше пользователей. Монте-Карло дал конкретный ответ без сложных формул.
Bootstrap vs Монте-Карло
Оба метода используют случайность, но решают разные задачи:
| Bootstrap | Монте-Карло | |
|---|---|---|
| Входные данные | Реальная выборка | Модель / распределение |
| Что делает | Ресемплирует из данных | Генерирует из модели |
| Задача | Оценить неопределённость статистики | Исследовать поведение системы |
| Пример | CI для медианы | Power analysis, оценка риска |
Bootstrap работает с тем, что есть (ваша выборка). Монте-Карло работает с моделью реальности (распределения, которые вы задаёте).
Иногда их путают, потому что оба «крутят случайные числа». Но bootstrap не требует знания распределения данных, а Монте-Карло — требует (или хотя бы разумного предположения).
Преимущества и ограничения
Преимущества:
- Универсальность — работает для любых задач, где можно описать модель
- Интуитивность — результат легко визуализировать и объяснить
- Не требует сложной математики — только код и знание дисперсии входных параметров
Ограничения:
- Качество результата зависит от качества модели — мусор на входе = мусор на выходе
- Вычислительно дороже аналитических формул (но при современных мощностях это редко проблема)
- Результат стохастический — каждый запуск даёт чуть другой ответ (решается увеличением итераций)
Вопросы с собеседований
— Что такое метод Монте-Карло простыми словами? — Это симуляция: описываете модель, генерируете тысячи случайных сценариев и из их распределения получаете ответ. Если аналитическое решение сложно — Монте-Карло даёт численный ответ.
— Как с помощью Монте-Карло оценить мощность A/B-теста? — Задаёте распределение метрики, ожидаемый эффект и размер выборки. Симулируете тысячи экспериментов, в каждом проводите статистический тест. Доля симуляций, где тест нашёл значимый эффект, — это мощность.
— Чем Монте-Карло отличается от bootstrap? — Bootstrap ресемплирует из имеющейся выборки — не требует знания распределения. Монте-Карло генерирует данные из модели (заданного распределения). Bootstrap оценивает неопределённость статистики, Монте-Карло — поведение системы.
— Сколько симуляций нужно для Монте-Карло? — Зависит от задачи. Для power analysis — 10 000 обычно достаточно. Для оценки редких событий (вероятность < 1%) — нужно больше: 100 000+. Общий принцип: увеличивайте, пока результат не стабилизируется между запусками.
— Когда Монте-Карло лучше аналитических формул? — Когда распределение метрики далеко от нормального, когда модель включает несколько взаимосвязанных переменных, или когда аналитическая формула неизвестна или слишком сложна.
FAQ
Что такое стохастическое моделирование?
Стохастическое моделирование — это моделирование систем со случайными компонентами. Метод Монте-Карло — самый распространённый подход к стохастическому моделированию. Вместо одного детерминированного прогноза вы получаете распределение возможных исходов, что даёт более полную картину.
Где аналитики данных чаще всего используют Монте-Карло?
Три основных сценария: планирование A/B-тестов (power analysis при нестандартных метриках), оценка неопределённости в прогнозах (выручка, трафик, конверсия) и оценка рисков (вероятность невыполнения плана). Также — для проверки статистических методов: насколько корректно работает ваш тест при заданных условиях.
Нужно ли знать теорию вероятностей для использования Монте-Карло?
Базовые знания нужны: что такое распределение, среднее, дисперсия, независимость. Но сложная математика не требуется — суть метода в том, что вместо формул вы пишете код. Главное — корректно описать модель и правильно интерпретировать результат.
Потренируйте вопросы по статистике и теории вероятностей — откройте тренажёр. 1500+ вопросов для собеседования аналитика. Бесплатно.