A/B-тестирование в стартапах или Что делать если данных мало

Стартапам важно быстро расти, а значит нужно больше рисковать и быстро принимать решения. У них мало пользователей, а и мало данных, чтобы при A/B-тестировании заметить статистически значимый результат в сжатые сроки. Поэтому им нужно научиться быстро делать тесты, а для этого нужно знать что влияет на время тестирования и как этим управлять.

В закладки

Что влияет на время тестирования?

  • Базовая конверсия - чем она выше, тем меньше нужна выборка, чтобы подтвердить значимый результат.
  • Относительное увеличение конверсии - чем оно выше, тем меньше нужно пользователей, чтобы заметить разницу.
  • Дневное количество пользователей - чем больше пользователей ежедневно будут попадать в тест, тем меньше дней будет длиться эксперимент.

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

Чем выше базовая конверсия тем меньше нужно пользователей, чтобы получить статистически значимый результат.

Связь между выборкой и относительным увеличением конверсии показана на рисунке ниже:

https://www.slideshare.net/sashaosiuk/ab-testing-for-startups-205390927

Чем меньше относительное увеличение конверсии, тем большее количество пользователей нужно для проведения тестирования.

Между количеством дней тестирования n и дневным количеством пользователей U есть обратно пропорциональная линейная зависимость:

n = Sample size / U

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

Как ускорить A/B-тестирование?

✔️ Использовать более частое действие пользователя, которое влияет на финальную конверсию. Целевое действие с низкой базовой конверсией можно заменить на альтернативное более частое действие пользователя с сильной корреляционной связью с основным целевым действием. Airbnb, когда был стартапом, использовал поиск с выбором конкретной даты как событие сильно коррелируемое с бронированием.

✔️ Тестировать большие изменения, которые могут показать значительное относительное увеличение конверсии. Это могут быть инновационные и рискованные гипотезы, тестирование моделей монетизации и пр.

✔️ Делить аудиторию при взаимодействии с тестируемым функционалом. Если исключить пользователей, которые не имели возможности увидеть изменения, то можно ускорить тестирование за счет увеличения базовой конверсии. Пример:

Разделим аудиторию 50/50. Ежедневно в контрольный вариант теста заходит 1 000 пользователей, из которых 5% (50 пользователей) совершают целевое действие. В тестовом варианте сделали изменение, которое пользователи могли заметить на втором шаге воронки, после чего целевое действие совершали на 5 пользователей больше, относительное увеличение конверсии - 10%. Если за базовую конверсию взять конверсию со второго шага в целевое действие, то ее размер будет 25% вместо 5%. Требуемый размер выборки уменьшится с 30 244 до 4 753 пользователей. Даже при уменьшении дневного количества пользователей с 1 000 до 200 можно выиграть во времени около 6-ти дней.

✔️ Тестируемый функционал сделать более заметным на время эксперимента. Если больше трафика направить в тестируемый функционал в тестовую и контрольную группу, то можно уменьшить количество дней тестирования. Но есть риск, что можно получить обратный эффект, если вовлеченность нового привлеченного трафика окажется очень низкой.

К примеру есть функционал, в который ежедневно попадает около 2000 пользователей, разделив его пополам, в тестовый и контрольный вариант можно направить по 1000 пользователей. Допустим в контрольной группе в рамках тестируемого функционала 12% пользователей совершают целевое действие (CR), а в тестовой группе ожидается относительное увеличение конверсии (Relative increase) в 10%, то для проведения такого эксперимента нужно почти 12 дней:

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

Допустим, что конверсия в целевое действие по новым пользователям уменьшится до 10%, а относительное увеличение конверсии до 8%. Объединив всех пользователей каждого варианта можем заметить, что количество дней, необходимых для тестирования, упадет до 9 дней.

Смоделируем зависимость уменьшения время тестирования от разных вариантов комбинаций уменьшения вовлеченности (CR и Relative increase) новых пользователей:

Ячейка, выделенная жирной белой рамкой, отображает вариант, рассмотренный выше. Первая ячейка таблицы со значением -3.9 говорит о том, что мы выиграем почти 4 дня, если конверсия в целевое действие по новым пользователям останется 12%, а относительное увеличение конверсии - 10%. Зеленые ячейки показывают варианты в которых мы выигрываем во времени теста, а красные - проигрываем.

✔️ Рассчитывать MDE (minimum detectable effect). Это не ускорит конкретный тест, но позволит не тратить время на те тесты, которые не покажут заметную разницу. К примеру, зная размер базовой конверсии, среднее количество пользователей в сутки и имея ограниченное количество суток на эксперимент, можно рассчитать каким минимальным должен быть размер относительного увеличения конверсии, который можно заметить при вышеупомянутых параметрах. Если здравый смысл подсказывает, что гипотеза не может дать такой результат, то не стоит тратить время на проверку гипотезы.

Другие методы ускорения экспериментов

Чтобы понять как можно еще ускорить эксперименты, нужно знать по каким критериям можно классифицировать тестирования:

✔️ По типу метрик: бинарные / небинарные

Примеры бинарных метрик: купил / не купил, зарегистрировался / не зарегистрировался и пр.

Небинарные метрики: доход, время до целевого действия, количество удаленных фотографий и пр.

Тестирование можно проводить проще и быстрее, если небинарные метрики приводить в бинарным. Например, если у вас небольшое количество товаров, то вместо дохода можно выбрать бинарную метрику как купил / не купил, но дополнительно учитывать доли проданных товаров. Время до целевого действия можно привести к доли пользователей, совершивших целевое действие за определенное время. Количество удаленных фотографий привести к доли пользователей, удаливших N и больше фотографий.

✔️ По подходу у анализу результатов: байес / частотный

Существует два самых популярных подхода к анализу результатов тестирования.

Частотный подход более точный, он заключается в том, что до запуска эксперимента нужно определится с уровнем точности, рассчитать размер выборки и не принимать никаких решений после запуска теста до того как не соберется необходимый размер выборки. Когда размер выборки собран, но p-value > 5%, то нельзя считать тестовый вариант победителем. Если относительное увеличение конверсии окажется меньше чем ожидали, то размер выборки нужно пересчитать и продлить эксперимент, что не всегда оптимально с точки зрения развития продукта.

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

✔️ По типу гипотез: инновационные / оптимизационные

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

A/B-тестирование и поиск инсайтов

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

Смотреть больше метрик
Обычно на стадии проектирования теста определяют метрики, по которым будут принимать решение по завершению эксперимента. Иногда тест показывает не совсем тот результат, который от него ожидали. Если посмотреть на большее количество метрик, то можно найти причины неожиданных результатов и понять что можно с этим сделать в следующей итерации эксперимента.

Сегментировать пользователей эксперимента
Иногда разные сегменты пользователей по-разному реагируют на одни и те же изменения. Сегментируют пользователей обычно на новых и вернувшихся, по типу источников трафика, по странам, по поведенчиским характеристикам и пр. Если пользователи могут участвовать одновременно в нескольких экспериментах, то полезно смотреть, как вариант одного теста повлиял на результат второго теста (перекрестное сегментирование).

При анализе результатов тестов по сегментам важно учитывать такие особенности:

Проблема множественных сравненийС ростом количества сегментов увеличивается вероятность ошибочных результатов. К примеру, если провести A/A-тест, взять одинаковые выборки пользователей без продуктовых изменений, и вероятность заметить разницу будет 5%. То разбив выборки на 15 сегментов, вероятность заметить разницу в одном из сегментов будет 54%.

Парадокс СимпсонаЯвление в статистике, когда при сегментировании направление зависимости меняется на противоположное.

Пример: Один из университетов обвинили в дискриминации представителей женского пола. Главный аргумент был сделан на на основе того, что принимали на обучение мужчин чаще чем женщин:

Но когда посмотрели на результаты в разбивке на факультеты с условно высоким конкурсом и отдельно с низким конкурсом, то оказалось, что женщин принимали чаще в каждом из сегментов:

Причиной этому был тот факт, что женщины чаще выбирали факультеты с высоким конкурсом в отличии от мужчин.

Статья подготовлена по материалам доклада митапа для аналитиков в киевском офисе Wix на тему «A/B-тестирование для стартапов».

Подписывайтесь на мой телеграм-канал BigQuery Insights, где пишу об инструменте Google BigQuery и о том, как он помогает аналитикам.

Полезные ссылки

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Александр Осиюк", "author_type": "self", "tags": ["\u0441\u0442\u0430\u0440\u0442\u0430\u043f\u044b","\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430_\u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432","startup","productmanagement","product","a_b_\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","ab\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435"], "comments": 0, "likes": 1, "favorites": 1, "is_advertisement": false, "subsite_label": "unknown", "id": 99516, "is_wide": true, "is_ugc": true, "date": "Sat, 28 Dec 2019 10:39:17 +0300", "is_special": false }
0
{ "id": 99516, "author_id": 200004, "diff_limit": 1000, "urls": {"diff":"\/comments\/99516\/get","add":"\/comments\/99516\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/99516"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 200004, "last_count_and_date": null }
Комментариев нет
Популярные
По порядку
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }