Собесов

Делимобиль Senior — эксперимент по эластичности спроса по цене

Кейсы и метрикиPricing experimentСложнаяSenior

Условие

После неудачных ценовых экспериментов в одном регионе Делимобиля (просели выручка/поездки/MAU) бизнес хочет априори знать эластичность спроса по цене — какая цена приемлема, какая — нет.

В регионе 10 000 активных пользователей. Нужно предложить:

  • Стратегию и механику эксперимента по эластичности (с расчётами параметров).
  • Какие данные о пользователях собрать.
  • На какие сегменты разделить и почему. Сколько сегментов.
  • Длительность.
  • Численные индикаторы (выборка, мощность, время).
  • Какие метрики считать, как интерпретировать.
  • Учёт разных типов потребления (краткосрочные / долгосрочные аренды).
  • Дополнительные метрики сегментации.

Решение

Стратегия

Цель — оценить эластичность спроса: e = ΔQ/Q ÷ ΔP/P. Подход:

  • A/B/n с несколькими ценовыми точками одновременно: контроль (текущая цена) + 3–4 теста (например, +5%, +10%, −5%, −10%).
  • На каждой ценовой точке измерить количество поездок, GMV, retention.
  • Подогнать функцию Q(P) (логарифмическая или линейная):
lnQ=α+elnP\ln Q = \alpha + e \cdot \ln P

e — эластичность.

Сегментация

10к юзеров — мало для A/B/n с 5 группами. Но без сегментации — всех огульно — теряем гетерогенность. Компромисс:

  • 2 сегмента на старт (heavy users / light users — top-20% по freq vs остальные).
  • 5 ценовых точек × 2 сегмента = 10 групп. На сегмент по 5к ÷ 5 = 1к юзеров → мало.
  • Лучше: сначала запустить эксперимент только на light/medium (8k юзеров) — heavy чувствительнее к цене, рискуем потерять.

Сегментация по:

  • Frequency последних 90 дней (RFM).
  • Tenure на сервисе (новый <30 дней vs старый).
  • Тип потребления: short rentals (≤1ч), mid (≤24ч), long (≥24ч). Эластичность разная.
  • Гео внутри региона (центр vs окраины).
  • Платформа (iOS vs Android — селекшен по доходу).
  • Возраст / водительский стаж (если есть).

Минимум 4 ценовых точки + контроль = 5 групп. На каждой — ≥1.5–2k юзеров.

Sample size / MDE

  • Метрика: trips per active user в week.
  • Допустим baseline = 5 trips/user/week, std ≈ 8 (Poisson-ish с overdispersion).
  • MDE = 5% относительно (=0.25 trips). При α=0.05, power=0.8:
n=2(zα/2+zβ)2σ2δ2n = \frac{2 \cdot (z_{\alpha/2} + z_\beta)^2 \cdot \sigma^2}{\delta^2} n27.84640.062516,000n \approx \frac{2 \cdot 7.84 \cdot 64}{0.0625} \approx 16{,}000

То есть 16k на пару групп — больше, чем у нас всего активных пользователей. Значит, MDE 5% недостижим. Нужно либо:

  • Поднять MDE до 15–20% (что грубо, но реалистично с 1.5k на группу).
  • Удлинить тест (накопление trips).
  • Использовать CUPED на pre-period trips/user — снизит дисперсию в 2–3×.

С CUPED: эффективный n_required ÷ 3 → реальный нужный ~5k на пару, что приемлемо.

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

  • Минимум 2–4 недели для покрытия weekly seasonality.
  • Краткосрочные аренды быстрее агрегируются (больше observations); long rentals — медленнее.
  • Если юзеры арендуют редко (в среднем 1 раз в 2 недели) — нужен месяц минимум.

Метрики

Primary:

  • Trips per active user.
  • Revenue per active user (ARPU).
  • Конверсия в платящего (если price-changes на free trial).

Secondary:

  • Avg minutes per trip (длинные vs короткие).
  • AOV — средний чек на поездку.
  • Cancel rate (отмены) — индикатор отказа от цены.

Гард:

  • Churn week-2 (отписка / отсутствие сессий).
  • Switch on competitor (уход к Яндекс.Драйв, Ситидрайв) — измерять по падению activity у нас.
  • NPS / поддержка.

Долгосрочные аренды:

  • Отдельная метрика — share of long rentals (≥ 24ч): они приносят больше выручки.
  • Эластичность для long и short — разная (long чувствительнее: пользователь планирует, ищет лучшее предложение).

Интерпретация

  • Вычисляем эластичность e на каждом сегменте × type.
  • Если |e| < 1 → спрос неэластичен → можно поднимать цену (рост выручки).
  • Если |e| > 1 → эластичен → наоборот, снижать.
  • На разных сегментах разная стратегия: для heavy — фиксы, для new — discount.

Дополнительная сегментация

  • Тариф (минутный/часовой/суточный).
  • Класс авто (эконом/комфорт/премиум).
  • Время поездок (ночь / выходные).
  • Использование промо-кодов.
  • Тип жилья (по геолокации start-end — workforce vs leisure).

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

  1. SUTVA нарушается: один пользователь может в один день брать машину и в test, и в control (если сегмент по машинам, не по юзерам). Sticky split на user_id обязателен.
  2. Ценообразование в реальном времени: нельзя «жёстко» назначить цену — она зависит от offer (расстояние до машины). Нужен delta-multiplier (× 1.05).
  3. Network effects: если test-юзеры берут больше машин, control-юзерам меньше доступно → confounded.
  4. Сезонность: 4 недели + кризис/праздники → шум.
  5. Selection within experiment: heavy-юзеры могут «сильнее реагировать» на цену; усреднение не отражает их.
  6. Конкуренты: пользователь видит цены и у конкурента; эластичность зависит от competitor pricing.
  7. Long tail trips: один long rental = 30 short. Усреднения зависят от меры.
  8. «Активные» 10k: если включаем неактивных, они добавляют шум (zero-inflated).

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

Стратегия: A/B/n на 4–5 ценовых точках, сегментация по freq и rental type (short/mid/long). MDE 5% недостижим без CUPED и длительности; реалистично 15–20% на 4 недели. Primary: trips per user, ARPU, эластичность via ln Q = α + e ln P. Гард: churn, competitor switch.

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

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

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