Собесов

Кейс — гипотеза «наши курьеры повышают LTV»

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

Условие

Есть два города (А и Б). В обоих часть заказов доставляется нашими курьерами, часть — курьерами ресторанов. Гипотеза: доставка нашими курьерами повышает LTV пользователя.

Распишите, как бы вы исследовали гипотезу: какие методы применили бы, какие подводные камни учли. Важен ход мыслей, а не финальная цифра.

Решение

Это причинно-следственная задача в условиях наблюдательных данных (мы не присваивали тип курьера случайно). Просто сравнивать средние нельзя — будет селекшн.

Шаг 1. Сформулировать измерение

  • LTV — какой? Чаще всего: GMV (или маржа) на пользователя за горизонт T (90/180/365 дней с первого заказа). Уточнить у заказчика.
  • Treatment: пользователь обслужен нашими курьерами хотя бы раз? Доля заказов нашими курьерами? Только первый заказ — нашими? Лучше двусторонне: как «доля заказов нашими» (continuous), так и «когда-либо хотя бы один» (binary). Разные определения отвечают на разные вопросы.
  • Когорта: новые пользователи с первого заказа в период X (например, 6 месяцев), горизонт LTV — 6 месяцев после первого заказа.

Шаг 2. Источники селекшн-байаса

Ключевые причины, почему в группах разные пользователи:

  1. Геопокрытие нашими курьерами: они работают только в части районов / у части ресторанов. Эти районы могут отличаться по платёжеспособности.
  2. Цена: наши курьеры могут быть бесплатной опцией, ресторанные — платной (или наоборот). Это смещает выбор по «type» пользователей.
  3. Скорость и надёжность: возможно, наших курьеров получают «правильные» заказы (ближе, дороже), что коррелирует с типом пользователя.
  4. Ресторанная сторона: некоторые рестораны вообще не пользуются нашими курьерами.
  5. Self-selection: пользователь выбирает курьера? Если да — это сильнейший байас (выбирают более премиальный сервис обеспеченные).

Без учёта этих факторов любое наблюдаемое различие в LTV не означает причины.

Шаг 3. Дизайн исследования

Лучший вариант — A/B-тест

Если есть техническая возможность: на части пользователей рандомизировать курьера (а не оставлять выбор/детерминированную логику). Балансируем по городу, периоду, типу заказа. После сбора данных сравниваем LTV-метрику между группами через двухвыборочный t-тест или bootstrap.

Если рандомизация невозможна — переходим к квази-экспериментальным методам.

Propensity score matching

  1. Обучаем модель P(treatment | covariates): вероятность для пользователя получить нашего курьера, по фичам — гео, тип заведения, размер чека, время суток, день недели, частота заказов.
  2. Для каждого «treated» подбираем пары из «control» с похожим propensity (nearest neighbour, caliper).
  3. На сматченных парах считаем разницу в LTV. Это даёт ATT (average treatment effect on the treated).

Инструментальная переменная (IV)

Если есть «случайная» переменная, влияющая на тип курьера, но не на LTV напрямую (например, недоступность нашего курьера в данный момент по техническим причинам), — она работает как «инструмент». 2SLS даёт оценку причинного эффекта.

Difference-in-Differences

Если в момент t0 где-то расширили зону работы наших курьеров — сравниваем динамику LTV «до/после» в этой зоне с контрольной зоной, где зону не расширяли.

Регрессия с фиксированными эффектами

LTV ~ treatment + city + month + restaurant + customer_segment + ε — простой линейный контроль. Грубее матчинга, но иногда достаточно.

Шаг 4. Метрики и тесты

  • Основная метрика: LTV T-дней (e.g. 180).
  • Вторичные: число повторных заказов, средний чек, частота заказов, churn (нет заказа за 60 дней).
  • Гарды: жалобы, отмены, время доставки.

Тесты — двухвыборочный t-test (или Welch'а), bootstrap CI, для бинарных — chi-square. Учесть multiple testing (Bonferroni / Benjamini-Hochberg).

Шаг 5. Sanity-check и продакшн

  • A/A-тест на исторических данных: разделите контрольную группу пополам и убедитесь, что LTV не отличается.
  • Сегментный анализ: эффект может быть положительным в одном городе и отрицательным в другом (Simpson’s paradox). Смотрите по городу А и Б отдельно.
  • Stratification: новые vs старые пользователи, тип ресторана.
  • Power analysis: хватит ли наблюдений для нужной MDE? Если нет — увеличьте горизонт или собирайте дольше.

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

Кратко: гипотеза проверяется или (а) рандомизированным A/B-тестом, или (б) квази-экспериментально через PSM / DiD / IV. Сравнение средних «в лоб» обманчиво из-за селекшн-байаса (геопокрытие, цена, тип ресторана, self-selection пользователей). Главные риски: Simpson’s paradox по городам, multiple testing, недостаточный horizon LTV.

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

  1. «Сравнить средние LTV двух групп» — самая частая ошибка-наживка. Нужен причинный фрейм.
  2. LTV не успел реализоваться. Если новый пользователь сделал заказ месяц назад, мы не знаем его 180-дневный LTV. Используйте censoring / Kaplan-Meier для retention или горизонт меньше.
  3. Корреляция курьера с другими решениями (например, наших курьеров используют только премиум-рестораны) — это путает причину со следствием.
  4. Глобальный против локального эффекта. На уровне отдельного заказа эффект может быть, на уровне пользователя — нет (если он переключается между типами).
  5. Не путать LTV с retention. LTV учитывает и сумму, и долговечность. Если наши курьеры повышают retention, но снижают средний чек — суммарный эффект может быть нулевым.

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

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

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