Собесов

Делимобиль Middle: оценка эксперимента «брошенная корзина» с push-15%

Кейсы и метрикиA/B-тестированиеСредняяMiddle

Условие

Запустили функцию «брошенной корзины»: клиентам, которые зашли в приложение, посмотрели карточки авто, но не забронировали — приходил дополнительный push со скидкой 15% на бронирование в течение 15 мин. Тест шёл 1 неделю. Дано 3 датасета:

  • ab_cart — кому и в какие интервалы действовала скидка.
  • rents_test — аренды (неделя до теста, неделя теста).
  • sessions_test — заходы и итоговые бронирования.

Оцените, был ли эксперимент успешным и стоит ли оставлять функционал.

Решение

Подход

  1. Pre-AA на неделе до теста: проверить, что группы test/control ведут себя одинаково по основным метрикам.
  2. Целевая метрика — CR в бронирование среди сессий, попавших под условия push (заход, просмотр, без брони). Вторичная — выручка / аренды на пользователя.
  3. Учёт ограничения 15 мин: если бронь сделана позже — скидка не применилась. Метрика CR должна быть «бронь в окне 15 минут».
  4. Дисконтирование выручки: скидка 15% уменьшает revenue per ride; нужно посчитать incremental revenue (новые брони vs то же при той же базе).

Выбор стат-теста

Для CR (Bernoulli) — z-тест пропорций. Для среднего числа броней на user — t-тест или mann-whitney.

from statsmodels.stats.proportion import proportions_ztest
nobs = [n_test, n_control]
suc  = [c_test, c_control]
z, p = proportions_ztest(suc, nobs)

Что считать

  • CR_15min_test vs CR_15min_control.
  • aov_test vs aov_control (с учётом скидки).
  • Долгосрочный retention: пришли ли «новые» клиенты после bonus-бронирования снова на 7-й, 14-й, 30-й день.

Финансовый расчёт

incremental_revenue = (CR_test − CR_control) × N_sessions × AOV_test
discount_cost       = N_brons_with_discount × AOV_full × 0.15
ROI = (incremental_revenue − discount_cost) / discount_cost

Если ROI > 0 и стат. значимо — оставлять.

Длительность теста

Неделя — мало. Эффект novelty (новый функционал → много кликают), сезонность дней недели. Минимум 2–4 недели.

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

  1. Self-selection: клиент, который добавил в корзину = более тёплый — даже без скидки бронировал бы. CR контроля надо смотреть на той же когорте «бросивших корзину».
  2. Каннибализация: клиент бронировал бы по полной цене → выручка проседает. Нужен holdout в пределах теста.
  3. 15 минут — атрибуция «брони, относящейся к скидке». Бронь через 30 мин — это, возможно, не из-за push.
  4. Bonferroni: если смотрите 10 метрик — поправка значимости.
  5. Push-rate-limit (нельзя слишком часто) — учесть в дизайне.

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

Z-тест на CR в бронирование (15 мин) среди тёплой когорты + расчёт incremental revenue минус скидка. Неделя — мало; продлить до 2–4 нед, проверить отсутствие эффекта новизны и сегментные различия. Решение по ROI.

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

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

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