group-telegram.com/data_math/761
Last Update:
📌 Условие:
Вы работаете над системой, где каждый эксперимент (тест, запуск модели, продукт) может быть успешным или неуспешным.
Результат одного запуска — 1 (успех) или 0 (провал).
Известно:
- Вероятность успеха одного эксперимента — неизвестна, обозначим её как p
.
- У вас есть N
исторических наблюдений: x1, x2, ..., xN
, где каждое xi
равно 0 или 1.
Вопросы:
1. Построить оценку вероятности успеха p
и доверительный интервал на уровне 95%.
2. Рассчитать, сколько экспериментов нужно запустить, чтобы вероятность выхода в прибыль была выше 95%, учитывая:
- стоимость одного запуска C
;
- прибыль от одного успешного эксперимента R
.
---
▪️ Подсказки:
- Для оценки p
используйте биномиальную модель.
- Для доверительного интервала:
- Можно использовать нормальное приближение (если выборка большая),
- Или Wilson-интервал для аккуратности.
---
▪️ Что оценивается:
- Правильная работа с вероятностями и доверием.
- Способность адекватно аппроксимировать биномиальные распределения.
- Чистота и практичность вычислений.
---
▪️ Разбор возможного решения:
▪️ 1. Оценка вероятности успеха:
# p_hat - оценка вероятности успеха
p_hat = sum(xi_list) / N
где
xi_list
— список из 0 и 1 (результаты экспериментов).▪️ 2. Доверительный интервал через нормальное приближение:
import math
z = 1.96 # для 95% доверия
std_error = math.sqrt(p_hat * (1 - p_hat) / N)
lower_bound = p_hat - z * std_error
upper_bound = p_hat + z * std_error
▪️ 3. Wilson-интервал (более аккуратный):
z = 1.96 # для 95% доверия
center = (p_hat + z**2 / (2 * N)) / (1 + z**2 / N)
margin = (z * math.sqrt((p_hat * (1 - p_hat) / N) + (z**2 / (4 * N**2)))) / (1 + z**2 / N)
lower_bound = center - margin
upper_bound = center + margin
---
▪️ 4. Прибыльность эксперимента:
Формула прибыли при
n
экспериментах:
profit = successes * R - n * C
Требуется:
P(profit > 0) >= 0.95
Число успехов должно быть больше определённой границы:
min_successes = (n * C) / R
Если
n
велико, количество успехов приближается к нормальному распределению:
mean_successes = n * p_hat
std_successes = math.sqrt(n * p_hat * (1 - p_hat))
Для нормального приближения можно написать:
# Вероятность успешности через нормальное распределение
from scipy.stats import norm
# Вероятность, что количество успехов больше нужного
prob = 1 - norm.cdf(min_successes, loc=mean_successes, scale=std_successes)
Тогда перебором или через уравнение ищем минимальное
n
, чтобы prob >= 0.95
.---
▪️ Возможные подводные камни:
- Нельзя использовать нормальное приближение при малом
N
— нужна биномиальная модель.- Неверное задание границ доверительного интервала может привести к неправильной стратегии запуска.
- Плохое понимание соотношения
C
и R
приводит к ошибочным выводам об окупаемости.---
📌Дополнительные вопросы:
- Как бы вы учли, что прибыль от успеха — случайная величина?
- Как пересчитать стратегии, если вероятность успеха зависит от времени (`p = f(t)`)?
- Как применить байесовский апдейт для оценки вероятности успеха?
---