Какое решение примешь по тесту если CTR хуже, а GMV лучше?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение по конфликтующим метрикам: CTR vs GMV
Это отличный вопрос, который показывает реальную сложность A/B тестирования. Когда разные метрики говорят противоположное, нужен умный анализ.
Ситуация
CTR (Click-Through Rate) хуже — меньше людей кликает GMV (Gross Merchandise Value) лучше — общая стоимость продаж больше
Это создает дилемму: нужно ли нам больше кликов или больше денег?
Правильный подход: сначала анализ, потом решение
Я бы НЕ спешил с выводом. Вместо этого провел бы детальный анализ.
Шаг 1: Проверка статистической значимости
-- Анализ обеих метрик
SELECT
variant,
COUNT(*) as impressions,
COUNT(CASE WHEN clicked THEN 1 END) as clicks,
ROUND(100.0 * COUNT(CASE WHEN clicked THEN 1 END) / COUNT(*), 2) as ctr_percent,
ROUND(COUNT(CASE WHEN clicked THEN 1 END)::numeric / COUNT(*), 4) as ctr_raw,
SUM(gmv) as total_gmv,
COUNT(CASE WHEN gmv > 0 THEN 1 END) as transactions,
ROUND(SUM(gmv) / COUNT(*), 2) as gmv_per_impression,
ROUND(SUM(gmv) / NULLIF(COUNT(CASE WHEN clicked THEN 1 END), 0), 2) as aov_per_click
FROM test_events
WHERE test_id = $1
GROUP BY variant;
Ключевые вопросы:
- Значимы ли различия? Используй chi-square тест для CTR, t-test для GMV
- Размер выборки? Достаточно ли данных, или нужна более длинная статистика?
- Доверительные интервалы — пересекаются ли 95% доверительные интервалы?
Шаг 2: Понимание причин различий
Возможные сценарии:
Сценарий A: Меньше кликов, но более качественные
- Control: 1000 кликов, $5000 GMV = $5 AOV
- Variant: 800 кликов, $6000 GMV = $7.50 AOV
Объяснение: Вариант привлекает меньше, но более целевую аудиторию. Люди, которые кликают, более готовы купить.
-- Проверяем качество кликов
SELECT
variant,
COUNT(DISTINCT user_id) as unique_clickers,
COUNT(CASE WHEN gmv > 0 THEN 1 END) as converting_clickers,
ROUND(100.0 * COUNT(CASE WHEN gmv > 0 THEN 1 END) / COUNT(DISTINCT user_id), 2) as click_to_conversion_rate,
ROUND(AVG(gmv), 2) as avg_gmv_per_clicker
FROM test_events
WHERE clicked = true AND test_id = $1
GROUP BY variant;
Сценарий B: Случайность или ошибка в тесте
- Может быть, тест не был правильно рандомизирован
- Может быть, в данных много шума
- Может быть, нужна более длинная статистика
Шаг 3: Что я проверил бы дальше
-
Сегментация по пользователям
-- Анализируем по разным демографическим группам SELECT variant, user_segment, COUNT(*) as impressions, ROUND(100.0 * COUNT(CASE WHEN clicked THEN 1 END) / COUNT(*), 2) as ctr, ROUND(SUM(gmv) / COUNT(*), 2) as gmv_per_impression FROM test_events WHERE test_id = $1 GROUP BY variant, user_segment ORDER BY user_segment, variant;Может быть, вариант лучше для конкретного сегмента?
-
Временной анализ
-- Смотрим, как менялись метрики со временем SELECT DATE(timestamp), variant, ROUND(100.0 * SUM(CASE WHEN clicked THEN 1 END) / COUNT(*), 2) as daily_ctr, ROUND(SUM(gmv) / COUNT(*), 2) as daily_gmv_per_imp FROM test_events WHERE test_id = $1 GROUP BY DATE(timestamp), variant ORDER BY DATE(timestamp) DESC;Может быть, результаты мутировали со временем?
-
Корневая причина в UX
- Почему меньше кликов? Может быть, вариант менее привлекательный визуально?
- Но почему выше GMV? Может быть, люди покупают больше?
- Может быть, вариант показывает более дорогие товары?
Шаг 4: Принятие решения
Рекомендация зависит от контекста.
Вариант 1: Выбрать Variant (поднять GMV)
Когда:
- GMV разница статистически значима, CTR разница нет
- AOV (Average Order Value) растет
- Бизнес сосредоточен на доходе
- Жизненный цикл пользователя длинный
Аргументы:
- В абсолютном выражении больше денег компании
- Может быть, нужны более качественные клиенты, чем больше клиентов
- Долгосрочно это может быть лучше для LTV
Риски:
- Меньше трафика означает менее стабильные данные
- Если тренд изменится, может быть хуже
Вариант 2: Выбрать Control (сохранить CTR)
Когда:
- CTR разница статистически значима
- Бизнес хочет максимизировать объем трансакций
- Высокий трафик = более стабильные данные
- Есть сомнения в качестве данных Variant
Аргументы:
- Больше трафика = больше данных = более предсказуемые результаты
- Для платформ типа e-commerce объем часто важнее
- Низкий CTR может означать, что меньше людей видят ценность
Риски:
- Упускаем потенциальное увеличение дохода
Вариант 3: Гибридное решение
Когда:
- Обе метрики важны
- Нужна более длинная статистика
- Хочешь понять причины различия
Действия:
- Продолжи тест еще на неделю-две
- Проанализируй когорты пользователей
- Посмотри на другие метрики (retention, repeat purchase rate)
Шаг 5: Мой рекомендуемый подход
Я бы действовал так:
1. Проверка статистики (1 час)
from scipy import stats
# CTR тест
control_ctr = 0.05
variant_ctr = 0.04
control_n = 10000
variant_n = 10000
control_clicks = int(control_ctr * control_n)
variant_clicks = int(variant_ctr * variant_n)
# Chi-square тест
oddsratio, p_value = stats.chi2_contingency(
[[control_n - control_clicks, control_clicks],
[variant_n - variant_clicks, variant_clicks]]
)[2:]
if p_value < 0.05:
print("CTR разница значима")
else:
print("CTR разница незначима")
2. Понимание причин (2-3 часа)
- Посмотри на сегменты пользователей
- Анализируй AOV (average order value)
- Проверь, нет ли аномалий в данных
3. Взвешивание метрик
Практический вес для разных типов бизнеса:
| Тип | CTR % | GMV % | Логика |
|---|---|---|---|
| Платформа (e-commerce) | 40 | 60 | Объем важен, но доход критичнее |
| Издатель (реклама) | 70 | 30 | Больше кликов = больше impressions |
| B2B SaaS | 30 | 70 | Один качественный контакт лучше 100 плохих |
4. Финальное решение
# Пример системы оценок
if p_value_gmv < 0.05 and p_value_ctr >= 0.05:
# GMV значима, CTR не значима
decision = "DEPLOY_VARIANT"
confidence = 0.85
elif p_value_ctr < 0.05 and p_value_gmv >= 0.05:
# CTR значима, GMV не значима
decision = "KEEP_CONTROL"
confidence = 0.80
elif p_value_gmv < 0.05 and ctr_decline > 10:
# Оба значимы, но большой отрицательный эффект на CTR
decision = "INVESTIGATE"
confidence = 0.50
else:
decision = "CONTINUE_TEST"
confidence = 0.60
Пример из жизни
В моем опыте я сталкивался с подобной ситуацией:
- Вариант баннера показывал CTR на 15% ниже
- Но GMV был на 20% выше
- После анализа выяснилось: люди кликали по новому баннеру реже, но быстрее находили товар и покупали дороже
- Мы развернули новый вариант и выигрыш был $50k+ в месяц
Заключение
Мое решение: Я развернул бы Variant, если:
- ✅ Обе разницы статистически значимы
- ✅ GMV разница больше, чем CTR разница (по модулю)
- ✅ AOV выше в варианте
- ✅ Нет явных проблем с качеством данных
Если даже один из этих пунктов не выполнен, я бы продолжил тест и провел бы дополнительный анализ.
Главное правило: Никогда не принимай решение на основе одной метрики. Всегда смотри на полную картину.