A B тесты

Сегодня обсудим A B тесты на довольно хорошем примере. Итак, начнем.

Задача, подсказанная моим знакомым— провести A B тест с оценкой отложенного эффекта (например, возвращаемости пользователей или churn rate). Дальнейшая постановка задачи полностью вымышленная и нужна только для иллюстрации решения.

Есть сайт ivi.ru. Одна из задач продакт-менеджера — увеличить время жизни пользователя на сервисе. Поскольку сервис молодой, заметная часть посетителей сайта — это новые посетители, заходящие на сайт впервые. Нужно сделать так, чтобы после первого просмотра фильма пользователь вернулся на сайт в течение недели.

У менеджеров сервиса есть много идей, как это сделать, но после бурных обсуждений остаются три рабочих варианта:

1. После окончания фильма (когда начинают идти титры) добавить блок «Пользователям, которым понравился этот фильм, нравятся еще вот эти фильмы» со ссылками на несколько других фильмов, подобранных системой рекомендаций. Замысел менеджеров — показать пользователю несколько других фильмов, которые ему скорее всего понравятся. Либо он сразу что-нибудь еще посмотрит, либо запомнит, что на сервисе есть, что еще посмотреть, и придет в следующий раз.

2. После окончания фильма добавить блок «Смотреть дальше» со ссылками на несколько сериалов и телепрограмм, подобранных системой рекомендаций. Замысел менеджеров — подсадить пользователя на многосерийный продукт, который будет стимулировать пользователя приходить на сервис за новыми сериями.

3. После окончания фильма добавить блок «Оцените этот фильм» с формой оценки. Замысел менеджеров — пользователь поставит оценку (а для этого ему еще придется зарегистрироваться), тем самым психологически привязавшись к сервису (допустим, статистика показывает, что пользователи, ставящие оценки, чаще ходят на сайт).

Вариант показывать сразу три блока был единогласно отброшен как неудобный и перегружающий интерфейс.

Задача — оценить долю пользователей, вернувшихся на сайт в течение недели после первого посещения, для каждого из трех вариантов.

Общая схема эксперимента такова:
— В движке сайта реализуются все три варианта блоков
— В заданный день в некотором промежутке времени (например, вечером с 20:00 до 22:00) разным посетителям показываются разные блоки. При этом куки каждого посетителя помечаются идентификатором того или иного блока, который был ему показан.
— Отдельно помечаются куки посетителей, которые не просто увидели тот или иной блок, но и провзаимодействовали с ним.
— Через неделю замеряем кол-во посетителей, зашедших на сайт хоть один раз в течение 7 суток после эксперимента, и имеющих ту или иную метку в куках.
— Высчитываем доли вернувшихся в каждой группе посетителей и принимаем решение о судьбе разных блоков.

Шаг 1, очевидно, является полностью в ведении разработчиков. Здесь важно, чтобы у движка сайта была возможность выдавать разные блоки в зависимости от заданного внешнего условия, обходя привычный кэш страниц.

Шаги 2 и 3. Нужно разделить посетителей, начавших просмотр фильма в заданном промежутке времени, на 4 равные группы — по одной на каждый вариант блока + одна контрольная группа со старым вариантом (без дополнительных блоков). Разделить пользователей можно, например, так: timestamp начала проигрывания фильма целочисленно разделить на 4 и взять остаток. Если остаток 0 — пользователя записываем в контрольную группа, если 1 — в группу с блоком 1, и т.д.

Поскольку нас интересует реакция пользователя на определенное событие — увидел или провзаимодействовал с блоком после просмотра фильма — то в код вызова блока (движок должен к этому моменту уже выдавать код вызова того или иного блока), дописываем следующий JS-код Google Analytics (используются Custom Variables).

На показ блока:

_gaq.push(['_setCustomVar', 1, 'Group', 'XXX-show', 1])

На клик по блоку:

_gaq.push(['_setCustomVar', 1, 'Group', 'XXX-click', 1])

где ХХХ — номер группы пользователей.

Все переменные будут сохраняться в один и тот же слот, то есть сохраненная после показа блока переменная будет перезаписана после клика по блоку.

Шаг 4. Создаем расширенные сегменты для отслеживания посещений каждой группы.

Например, для группы отслеживания 1-й группы, включая и тех, кто кликнул по блоку, и тех, кто не кликнул:

A B тесты

Если все правильно работает, то в отчетах видим картинку типа этой:

A B тесты

То есть в день эксперимента видим всплеск — это те посетители, которые попали в соответствующую группу в день эксперимента. Затем в последующие 7 суток видим некоторое распределение — это повторные посещения посетителей из соответствующей группы.

Шаг 5. Замеряем доли. Делим кол-во уникальных посетителей из группы 1 за семь суток после эксперимента, на количество уникальных посетителей из группы 1 в день эксперимента — получается, например, 31%. Высчитываем аналогичным образом для всех остальных групп. Выписываем доли на бумажку и собираем экстренное совещание.