Перейти к содержимому
Назад в Академию

A/B-тестирование: как проверять гипотезы без самообмана

10.08Веб-аналитика и GTM
Содержание статьи

Центр подготовки к IELTS в Алматы в понедельник поменял форму записи на пробный урок: из четырёх полей оставил два, имя и номер WhatsApp. В тот же понедельник владелец запустил акцию: скидку 10% на первый месяц тем, кто запишется до конца месяца. За две недели до изменений страницу курса открыли 600 человек и оставили 30 заявок, это 5%. За две недели после - столько же человек и 48 заявок, уже 8% (цифры в уроке условные). Маркетолог пишет в отчёте «новая форма дала +60%», владелец уверен, что сработала акция.

По этим двум неделям прав может быть любой из них. Форма и акция начались в один день, и рост после понедельника можно приписать и той, и другой. Добавьте сюда сезон: ближе к датам экзамена людей, готовых записаться, может стать больше и без всяких изменений. Сравнение «до и после» показывает, что конверсия выросла, но не говорит, что её подняло.

Что делает A/B-тест

В A/B-тесте посетителей в одни и те же дни случайно делят на две группы. Группа А видит старую форму, группа Б новую, а акция, сезон и реклама одинаковы для обеих. Тогда разница между группами - это эффект формы плюс случайность, и случайность можно оценить статистикой.

Чтобы проверить вклад именно формы, центру нужен A/B-тест, спланированный заранее: метрику, размер выборки и правило остановки записывают до того, как посмотрят на первые цифры. Если решать это по ходу, решения начнут подгоняться под рост, который хочется увидеть.

Какую гипотезу проверять первой, помогает решить работа с конверсией страницы (CRO), а здесь речь о том, как проверить одну из них.

План теста до запуска

У центра план умещается в таблицу:

ЧтоРешение центра
Что меняемФорма: два поля вместо четырёх, остальная страница та же
Кого делимПосетителей страницы курса, случайно и пополам
Основная метрикаДоля посетителей, чью заявку принял сервер (generate_lead)
Защитная метрика (guardrail)Доля заявок, которые ответили менеджеру в WhatsApp
Выборка894 посетителя на вариант
ОстановкаЧерез шесть полных недель, раньше только при поломке
РешениеНовую форму оставляем, если разница значима при α 5%, а доля ответивших в группе Б не ниже 55%

Защитная метрика нужна, потому что короткая форма может привести людей, которые оставили номер мимоходом и на сообщение не ответят. Заявок станет больше, а учеников нет. В тесте недели 2 менеджеру ответили 7 человек из 11, около 64%. Порог 55% взят с запасом: на одиннадцати заявках эта доля известна грубо.

Делить посетителей должен код, а не человек. Разработчик или сервис для A/B-тестов случайно назначает вариант, запоминает его в cookie, чтобы при повторном заходе человек видел ту же форму, и передаёт вариант в GA4 параметром вместе с page_view и generate_lead, например form_variant. Параметр нужно зарегистрировать в GA4, иначе в отчётах его не будет. Сам GA4 тесты не проводит: Google предлагает подключать сторонний инструмент, а результаты смотреть в отчётах. У деления по cookie есть ограничения: с телефона и с ноутбука один человек может попасть в разные группы, а Safari хранит cookie, поставленные скриптом, семь дней, так что вернувшийся через две недели может увидеть другую форму.

Делить по дням или по каналам нельзя. Если Instagram ведёт на форму А, а Google на форму Б, разница между группами будет разницей между аудиториями, и форма в ней потеряется.

Сколько посетителей нужно

Откройте калькуляторы, вкладку «Планировщик A/B-теста». Базовая конверсия - 5%. Минимально различимый эффект калькулятор считает относительно базы, поэтому от 5% до 8% - это 60%: поставьте 60 в поле «Минимально различимый эффект». Уровень значимости 5%, мощность 80% и два варианта стоят по умолчанию. Под эффектом калькулятор напишет, что тест сравнивает 5% против 8%.

Вот что значат эти настройки: уровень значимости 5% - вы согласны, что в одном тесте из двадцати объявите победителя там, где разницы нет. Мощность 80% - если новая форма и правда поднимает конверсию до 8%, тест заметит это в четырёх случаях из пяти.

Калькулятор покажет «Выборку на вариант» 894 и «Общую выборку» 1 788. Считает он по z-тесту для двух долей, это написано в его «Мелком шрифте». На страницу курса у центра приходит около 300 человек в неделю со всех источников, то есть 43 в день: поставьте 43 в поле «Трафик в тест, в день». С таким трафиком калькулятор насчитает 42 дня, ровно шесть недель. Вердикт - «от четырёх до восьми недель»: запускать можно, но акция за это время закончится, и тест захватит дни с ней и без неё.

Выборка быстро растёт, когда эффект уменьшается. Чтобы отличить 5% от 6%, калькулятор попросит уже 7 664 посетителя на вариант. Если трафика на такой тест нет, проверяйте изменения, которые могут дать крупный эффект, или переносите тест на шаг воронки, где событий больше.

Когда останавливать тест

На пятый день в каждой группе по 100 человек: в А 5 заявок, в Б 8. Владелец просит остановить тест и оставить новую форму.

Условный пример: у варианта А 5 заявок из 100, у варианта Б 8 из 100, разница 3 п.п., или +60% относительно 5%.
Условный пример: у варианта А 5 заявок из 100, у варианта Б 8 из 100, разница 3 п.п., или +60% относительно 5%.

Разница та же 3 п.п., ради которой затевали тест, но на ста людях её не отличить от случайности. Введите эти числа в калькулятор хи-квадрат Эвана Миллера, и он ответит, что значимой разницы нет. Если посчитать 95-процентный интервал для разницы, то есть разницу ± 1,96 стандартной ошибки, выйдет от -3,8 до +9,8 п.п.: с такими данными совместима и форма, которая хуже старой на 4 пункта, и форма, которая лучше на 10.

Смотреть на цифры каждый день и остановиться, как только разница стала значимой, нельзя. При таком подглядывании ложных побед будет больше, чем заложенные 5%: от случайных колебаний разница то становится значимой, то перестаёт, даже когда эффекта нет. Поэтому срок остановки записан в плане заранее. Существуют и последовательные тесты, где подглядывать можно, но такой метод выбирают до старта, а не после неудобного результата.

Раньше срока тест останавливают, только если что-то сломалось: форма Б не отправляется с айфона или заявки не доходят до менеджера. Тогда поломку чинят и начинают тест заново, а победителя не объявляют.

Что проверить перед чтением результата

Через шесть недель в группе А 903 человека, в Б 897. При делении пополам так и должно быть. Если бы вышло 980 и 820, читать заявки было бы рано. Такой перекос называется Sample Ratio Mismatch, и выводы из теста с ним делать нельзя, пока не найдена причина. Например, вариант Б грузится медленнее, и часть людей уходит раньше, чем их посчитали, или скрипт деления не срабатывает в каком-то браузере.

Второе условие - одинаковое измерение в обеих группах. generate_lead в обеих формах должен срабатывать на ответ сервера, а не на клик. Пройдите обе формы в DebugView до запуска, а в конце сверьте число заявок в GA4 со списком менеджера по каждой группе.

Как прочитать результат

ГруппаПосетителиЗаявкиКонверсияОтветили в WhatsApp
А, старая форма903455,0%29 из 45
Б, новая форма897728,0%46 из 72

Разница 3 п.п., интервал для неё (разница ± 1,96 стандартной ошибки) примерно от +0,8 до +5,3 п.п. Калькулятор хи-квадрат покажет значимую разницу, p около 0,01. Ответили менеджеру около 64% в обеих группах, доля ответивших не упала и осталась выше 55%, так что защитное условие плана выполнено. По плану центр оставляет новую форму.

В отчёт лучше писать процентные пункты с интервалом, а не «+60%». Шестьдесят процентов звучат увереннее, чем позволяют данные: грубо говоря, с ними совместим и рост на 15%, и рост вдвое. Формулировка для владельца: «Новая форма подняла конверсию в заявку с 5,0% до 8,0%, разница от 0,8 до 5,3 п.п. Тест шёл шесть недель на 1 800 посетителях, акция действовала для обеих групп».

Эффект измерен в этих условиях: на этой странице, с этим трафиком, в эти недели. На другой странице или в другой сезон он может быть другим.

Бывает, что значимой разницы нет. Это значит одно: эффект меньше, чем тест мог заметить при своей выборке, или его нет совсем. Даже настоящий эффект запланированного размера тест с мощностью 80% пропускает в одном случае из пяти. Объявлять формы одинаковыми рано. Решайте по стоимости: короткую форму можно оставить, если она проще для людей и не хуже по защитной метрике, но в отчёте рост конверсии не обещать.

Задание: хватит ли вашего теста, чтобы отличить 5% от 8%

В тесте недели 2 трека «Старт» у вас были клики и заявки. Посчитайте, что из них можно утверждать.

Калькулятор покажет 894 посетителя на вариант, 1 788 на два. У центра подготовки к IELTS за пять дней теста был 171 клик, около 34 в день, а посетителей страницы не больше, чем кликов. Если разделить 171 посетителя между двумя формами, в каждой группе окажется около 85 человек, вдесятеро меньше нужного. При 34 кликах в день калькулятор насчитает 53 дня, а по цене клика из теста, 58 ₸, 1 788 кликов обошлись бы примерно в 103 000 ₸, в десять раз дороже всего теста.

Значит, о разнице между 5% и 8% по такому тесту утверждать нельзя ничего. На 85 людях в группе тест поймал бы разве что скачок с 5% примерно до 15,5%: поставьте эффект 210%, и выборка на вариант станет 84. Даже собственная конверсия теста, 11 заявок из 171 клика, или 6,4%, известна грубо: при таком числе людей она может оказаться где-то между 3,6% и 11%. А три объявления внутри теста и вовсе сравнивались не A/B-тестом: Meta сама решала, кому что показать, и дала объявлениям разное число показов.

Абзац у центра получился такой: «Чтобы отличить конверсию 5% от 8%, нужно 894 посетителя на вариант, всего 1 788. В тесте был 171 клик на три объявления, около 85 на вариант, если делить на два. Утверждать по этим данным, что какое-то объявление или форма конвертирует лучше, нельзя. Для такой проверки нужно около 100 000 ₸ рекламы при той же цене клика или трафик всей страницы за несколько недель».

Видео: основы A/B-тестирования

What is A/B Testing? Marketing and Advertising A/B Tests Explained - Surfside PPC

Видео на английском, о том, как устроен A/B-тест в рекламе.

Нужна помощь с аналитикой вашего проекта? Обсудить задачу с Goodlabs →