Метод Монте-Карло — что это и как применять

Что такое метод Монте-Карло

Метод Монте-Карло — это класс алгоритмов, основанных на многократном случайном моделировании (симуляции). Идея: если аналитическое решение задачи сложно или невозможно, можно сгенерировать тысячи случайных сценариев и получить ответ из их распределения.

Название — от казино в Монте-Карло. Случайность в основе метода, как и в рулетке. Только результат куда полезнее.

Метод используется везде: физика, финансы, инженерия. Для аналитика данных он полезен в планировании 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+ вопросов для собеседования аналитика. Бесплатно.