Собесов

Skytec Games — вероятность успеха 201-го прототипа

Статистика и теорверБайес и оценка вероятностейСредняяMiddle

Условие

У конкурента — 1000 прототипов игр, из них 5 успешных. Наша компания выпустила 200 прототипов и ни один не был успешен.

Какова вероятность, что следующий (201-й) наш прототип будет успешен? Предложите минимум 2 метода решения. Если есть варианты, требующие дополнительных данных, перечислите, какие именно.

Решение

Подход

Это вопрос про оценку вероятности при малой выборке и нулевых событиях. Прямой MLE = 0/200 = 0 не имеет смысла: мы хотим разумно «не нулевую» оценку, но и не «такую же, как у конкурента» — мы не доказали свою компетентность.

Метод 1. Frequentist — правило «add-one» (Лаплас) или Уилсон

Правило Лапласа (rule of succession): при s успехах из n оцениваем вероятность как (s + 1) / (n + 2).

p^Laplace=0+1200+2=12020.00495\hat p_{\text{Laplace}} = \frac{0 + 1}{200 + 2} = \frac{1}{202} \approx 0.00495

Это эквивалентно постериору при uniform prior Beta(1,1) и наблюдении 0 успехов. Не очень обоснован для нашего случая (у нас есть «опорная» статистика конкурента).

Доверительный интервал Уилсона для пропорции при 0 успехов из 200:

Wilson 95%=[0, 1.962200+1.962][0, 0.019]\text{Wilson 95\%} = \left[0,\ \frac{1.96^2}{200 + 1.96^2}\right] \approx [0,\ 0.019]

То есть с 95% уверенностью наша вероятность успеха 1.9%\le 1.9\%.

Метод 2. Bayes — Beta prior из данных конкурента

Используем информативный prior из данных конкурента: он выпустил 1000 прототипов, 5 успешных, значит эмпирически pcompetitor=0.005p_{\text{competitor}} = 0.005.

Пишем prior как Beta(α=5+1, β=995+1) = Beta(6, 996) (с +1 для регуляризации). Это «5 успехов и 995 неудач из «прошлой жизни»».

Наблюдаем 0 успехов из 200 → постериор Beta(6, 1196).

E[p]=66+1196=612020.00499E[p] = \frac{6}{6 + 1196} = \frac{6}{1202} \approx 0.00499

То есть если предположить, что мы «такие же, как конкурент», ожидаемая вероятность ≈ 0.5%.

Альтернативный prior — слабее: Beta(0.5, 0.5) (Jeffreys), Beta(1,1) (uniform). Apply на 0/200 даст ≈ 0.0025 или 0.0050 соответственно.

from scipy.stats import beta
import numpy as np
 
# Prior от конкурента
alpha_prior, beta_prior = 6, 996
# Наши данные
s_us, n_us = 0, 200
post_alpha = alpha_prior + s_us
post_beta  = beta_prior  + (n_us - s_us)
 
mean = post_alpha / (post_alpha + post_beta)
ci = beta.interval(0.95, post_alpha, post_beta)
print(f"E[p] = {mean:.4f}, 95% CI = {ci}")

Метод 3. Иерархическая модель (если есть данные по нескольким компаниям)

Если бы у нас было больше компаний (своя, конкурента, ещё несколько) — построили бы hierarchical Bayes:

  • Глобальный prior на «индустрии» pBeta(αind,βind)p \sim \text{Beta}(\alpha_\text{ind}, \beta_\text{ind}).
  • Каждая компания: piBetap_i \sim \text{Beta} с параметрами, выученными из её данных.

В Stan / PyMC3 это бы дало честные интервалы для нашей p_us, не «вытягивая» к конкуренту.

Что дополнительно нужно

Если есть возможность собрать данные:

  1. Определение «успешного прототипа». У нас и у конкурента может быть разная планка (DAU > X, retention > Y, ROI > 0). Без сравнимости 5/1000 и 0/200 — несопоставимы.
  2. Стадии прототипа. Отбор у конкурента может быть жёстче — на этапе альфы они отсекают слабые. У нас все 200 могли быть в одной стадии.
  3. Время измерения «успеха». Если конкурент мерил «успех» через год после выпуска, а мы — через 3 месяца, наш n=200 это n=200, не дозревшее.
  4. Жанры. Если конкурент в hyper-casual, а мы в RPG — разные базовые rate.
  5. Команды-исследовательский ресурс. Сколько UA-бюджета вложено в каждый прототип? Иначе сравнение нечестное.

Анализ / интерпретация

Все три метода дают близкое значение ~0.5%. Это и есть честная оценка при таких данных: мы не можем уверенно сказать «у нас 0%», потому что 200 — небольшая выборка для редкого события (подразумеваемая вероятность = десятые/сотые доли процента).

Honestly, разница между 0% и 0.5% — это шум. Реальное действие — собрать больше данных (метод 4: «нужно ещё 800 прототипов, чтобы стало понятно, отличаемся ли мы от конкурента»).

Подводные камни

  1. MLE = 0 — даёт «никогда не будет успеха». Не используйте без регуляризации.
  2. «Усиление успеха» наивным правилом. Если просто прибавить 1 — почему именно 1? Лаплас обоснован, но не для всех задач.
  3. Игнорировать prior от конкурента. У нас есть полезная информация — глупо её не использовать.
  4. Считать 5/1000 как «истину» — это сама оценка с шумом. Для конкурента σ0.0050.995/10000.0022\sigma \approx \sqrt{0.005 \cdot 0.995 / 1000} \approx 0.0022. То есть 95% CI для конкурента: [0.06%, 0.94%].
  5. Тест статзначимости отличия от конкурента. С n=200 у нас power ничтожна — обнаружить разницу 0.5% vs 0% невозможно при таких размерах.
  6. Считать «прототипы» одинаковыми экспериментами. Они не одинаковые: разные жанры, разное качество. Усреднение по ним сомнительно.

Альтернативы

  • Bootstrap по конкуренту + наша доверительная оценка — даст распределение разности вероятностей.
  • Stopping rule analysis: «когда мы можем заявить, что наша p ≠ p_competitor?». При Δp=0.5%\Delta p = 0.5\% нужно ~3000–5000 прототипов с обеих сторон.

Эталонный ответ

Минимум 2 метода:

  1. Лаплас / Уилсон: (0+1)/(200+2) ≈ 0.5%, верхняя граница 95% CI ≈ 1.9%.
  2. Bayes с prior от конкурента: E[p]=6/12020.5%E[p] = 6 / 1202 ≈ 0.5\%.

Оба метода дают одинаковый порядок. Главный честный ответ: «при текущих 200 наблюдениях мы не можем статзначимо отличить нашу p от конкурента — разница на уровне шума».

Что нужно дополнительно: согласовать определение «успешный», учесть жанры, стадии и время измерения; собрать больше прототипов или построить hierarchical Bayes на индустрии.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти