Menu

Калькулятор A/B-теста

Введи посетителей и конверсии каждого варианта. Получишь вердикт одной фразой, p-значение с решением, интервал, байесовский шанс, что B лучше, проверку, что трафик разбит без перекоса, и наименьший прирост, который этот тест вообще мог заметить.

Автор Nethanel Bar, Co-founder & CEO

Последнее обновление

Готовы по-настоящему научиться программировать?

Coddy учит на практике: вы пишете настоящий код прямо в браузере — интерактивные уроки, мгновенная проверка и помощь ИИ, когда застряли.

Что этот калькулятор говорит тебе, а остальные нет

Каждый калькулятор A/B-теста печатает p-значение. Большинство на этом останавливается, и так основатели стартапов оказываются перед цифрой 87% уверенности и гадают, что она значит. Этот отвечает на вопросы, от которых действительно зависит следующий шаг. Разница больше, чем даёт случай? Каким может быть настоящий прирост в худшем и в лучшем случае? Если тест вышел «незначимым», мог ли он вообще что-то найти при таком размере выборки? И здоров ли сам сплит трафика, или ты сравниваешь две группы, которые никогда не были равны?

Он запускает стандартный z-тест для двух долей, тот же, что в классическом движке Optimizely, в частотном режиме VWO и в любом учебнике статистики, и показывает каждую строку арифметики: объединённую долю, стандартную ошибку, z-оценку и площадь хвоста. Рядом стоит байесовский ответ, вероятность того, что истинная конверсия B выше, чем у A, потому что «есть 91% шанс, что B лучше» - это та фраза, которую большинство ждало от p-значения, а это другое число.

Мы сделали его, посмотрев на собственный дашборд. Coddy провёл около двадцати именованных экспериментов, десять из них - тесты цен по отдельным странам на маленьких срезах трафика, и наш внутренний инструмент показывал полоску уверенности со словами «Продолжай тест» ниже 95%. Это досрочная остановка с дружелюбным лицом. Три соседние вкладки, размер выборки, проверка реальности и симулятор подглядывания, существуют потому, что калькулятор, который сообщает только значимость, помогает тебе обманывать себя быстрее.

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

  • «Незначимо» не значит «разницы нет». Это значит, что данные не могут сказать. Плитка с наименьшим приростом, который тест мог увидеть, и есть честное чтение: если наблюдаемый прирост ниже неё, тест никогда не собирался отвечать.
  • P-значение - не вероятность того, что ты ошибаешься. Это вероятность увидеть такой разрыв, будь варианты одинаковыми. Насколько вероятно, что победитель настоящий, зависит ещё и от того, как часто твои идеи срабатывают, и вкладка проверки реальности превращает это в число.
  • Остановиться в первый день, когда полоска позеленела, - самая дорогая привычка в A/B-тестировании. Ежедневная проверка с ранней остановкой превращает 5% ложных срабатываний в 20% и больше. Симулятор подглядывания показывает, как это происходит на твоём собственном трафике.
  • Сломанный сплит отравляет всё. Если планировался 50/50, а вышло 46/54, что-то направляет пользователей до того, как они дошли до теста: слой кэширования, фильтр ботов, редирект. Калькулятор запускает эту проверку первой и отказывается давать вердикт, пока она не пройдена.
  • Ниже примерно 25 конверсий на группу нормальное приближение в основе z-теста - набросок, а не измерение. Калькулятор так и говорит вместо того, чтобы печатать три знака после запятой фальшивой точности.

Как пользоваться калькулятором A/B-теста

  1. Введи посетителей и конверсии для A и B

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

  2. Выбери уверенность и гипотезу

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

  3. Прочитай вердикт, затем интервал

    Баннер говорит, что подтверждают числа. Плитка относительного прироста показывает интервал: настоящий эффект, скорее всего, лежит где-то внутри него, и планировать нужно по нижней границе, а не по точечной оценке.

  4. Проверь два предупреждения

    Если сплит помечен, почини тест прежде, чем читать что-либо ещё. Если наименьший обнаруживаемый прирост больше наблюдаемого, тесту не хватило мощности: открой вкладку размера выборки и посмотри, сколько посетителей понадобилось бы.

  5. Скопируй результат или ссылку

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

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

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

ПлиткаЧто этоКак читать
Относительный прирост(конверсия B минус конверсия A) делить на конверсию AГлавное число. Интервал рядом - диапазон, в котором, скорее всего, лежит настоящий прирост.
p-значениеШанс такого разрыва, будь A и B одинаковымиНиже 0.05 при уверенности 95% значит «значимо». Это не шанс, что результат неверен.
Уверенность1 минус p, в процентахЧисло, которое печатает большинство инструментов. 87% - это не «почти 95%»; это монета, упавшая не той стороной.
Шанс, что B лучшеБайесовская вероятность, что истинная конверсия B выше, чем у AФраза, которую все хотят. 91% значит, что B, вероятно, лучше, а не что B лучше на 91%.
Наименьший прирост, который тест мог увидетьОтносительный прирост, обнаруживаемый при мощности 80% с такими размерами группЕсли наблюдаемый прирост ниже него, «незначимо» означает «не смог определить».
Разбиение трафикаНаблюдаемая доля посетителей в каждой группе против планаПомечается, когда сплит отклоняется сильнее, чем допускает случай. Почини тест прежде, чем читать результаты.

Три теста, три разных урока

Классическое «почти получилось»

A: 10 000 посетителей, 500 конверсий (5.00%). B: 10 000 посетителей, 560 конверсий (5.60%). Относительный прирост +12%, p = 0.058.

Незначимо при 95%, а интервал тянется примерно от минус 0.4% до плюс 24%. Честное чтение: «вероятно, небольшой плюс, может быть и ничего». Наименьший прирост, который этот тест мог обнаружить, около 17%, так что эффект в 12% всегда был обречён попасть в серую зону. Нужно примерно вдвое больше трафика, а не ещё неделя надежды.

Сломанный сплит

A: 5 000 посетителей, 100 конверсий. B: 4 300 посетителей, 120 конверсий. Запланированный сплит 50/50.

B выглядит явным победителем с +40%. Калькулятор отказывается это подтверждать: сплит 5 000 к 4 300 при плане 50/50 случайно возникает реже, чем один раз на миллион. Что-то убирает пользователей из B до того, как их посчитали: часто это редирект, который ломается в одном браузере, или фильтр ботов, по-разному обращающийся с вариантами. Что бы это ни было, группы несопоставимы, и прирост ничего не значит.

Маленький сайт

A: 400 посетителей, 12 конверсий (3.0%). B: 400 посетителей, 19 конверсий (4.75%). Относительный прирост +58%, p = 0.20.

Прирост в 58% звучит громадно, а p-значение около 0.19. При 12 и 19 конверсиях калькулятор помечает нехватку данных: на таком объёме числа скачут так сильно, что одна лишняя регистрация сдвигает конверсию на четверть пункта. При таком трафике наименьший прирост, который тест мог бы подтвердить за месяц, больше 100%. Это не повод гонять его дольше; это повод открыть вкладку проверки реальности.

Ошибки, которые этот калькулятор создан ловить

  • Читать 90% уверенности как «наверное, нормально». При 95% граница - это 95%. Число ниже неё означает, что данные не взяли планку, которую ты сам поставил, и ошибка - двигать планку после просмотра, а не само число.
  • Называть незначимый тест ничьей. Ничья - это крошечный интервал вокруг нуля. Незначимый тест с широким интервалом - это вопрос без ответа, а вкладка размера выборки говорит, сколько стоит на него ответить.
  • Объявлять победителя в первое утро, когда полоска позеленела. Симулятор подглядывания прогоняет две тысячи тестов, где ничего не менялось, и показывает, сколько из них ежедневный проверяльщик отправил бы в продакшен.
  • Тестировать пять вариантов и докладывать о лучшем при 95%. Пять сравнений по 5% каждое - это 23% шанс ложного победителя. Вкладка размера выборки делит альфу за тебя, когда добавляешь варианты.
  • Сравнивать просмотры страниц с уникальными пользователями или считать конверсии за другой период, чем посетителей. Z-тест предполагает, что каждый посетитель - одно независимое испытание; всё остальное завышает уверенность.
  • Игнорировать сплит. 48/52 на 100 000 посетителей - это не случайность, а баг, и каждому результату ниже него нельзя доверять.

Вопросы о калькуляторе A/B-теста

Как понять, статистически значим ли мой A/B-тест?
Введи посетителей и конверсии каждого варианта, выбери уровень уверенности (стандарт - 95%) и прочитай вердикт. Тест значим, когда p-значение ниже единицы минус твоя уверенность, то есть ниже 0.05 при 95%. Эта страница также показывает интервал для настоящего прироста и говорит, мог ли тест вообще обнаружить эффект, на который ты смотришь, чего голое p-значение не умеет.
Что значит p-значение 0.08 для моего теста?
Что если бы A и B на самом деле конвертировали одинаково, разрыв не меньше этого случайно возникал бы примерно в 8% случаев. Это не вероятность того, что результат неверен, и не «92% уверенности, что B лучше». При уверенности 95% это значит, что тест не взял планку; посмотри на плитку наименьшего обнаруживаемого прироста, чтобы понять, мог ли он вообще.
Достаточно ли 90% уверенности?
Может быть, если ты выбрал 90% до начала теста и согласен на одно ложное срабатывание из десяти. Что никогда не достаточно, так это запустить тест на 95%, увидеть 91% и решить, что настоящим порогом всегда было 90%. Уровень уверенности - это обещание о том, как часто ты готов быть обманутым; менять его после просмотра - значит нарушить обещание.
Сколько конверсий нужно на вариант?
Волшебного числа нет, но ниже примерно 25 конверсий на группу z-тест - грубый набросок, а большинству настоящих тестов нужны сотни. Важнее прирост, который ты хочешь обнаружить: при базовой конверсии 5% увидеть относительный прирост 10% с уверенностью 95% и мощностью 80% требует около 31 000 посетителей на вариант, то есть примерно 1 550 конверсий в каждом. Вкладка размера выборки считает это для твоих конверсий.
В чём разница между частотным p-значением и байесовским шансом, что B лучше?
P-значение спрашивает «насколько удивителен такой разрыв, если ничего не изменилось?» и даёт «да» или «нет» по порогу. Байесовское число спрашивает «с учётом того, что я увидел, насколько вероятно, что истинная конверсия B выше, чем у A?» и даёт вероятность. На одних и тех же данных они обычно согласны по направлению: p = 0.05 в двустороннем тесте соответствует примерно 97% шансу, что B лучше. Страница показывает оба, потому что байесовская фраза - та, что люди имеют в виду, говоря «уверенность», а p-значение - то, что печатает их инструмент.
Почему калькулятор отказывается давать вердикт, когда сплит отклоняется?
Потому что перекос выборок означает, что группы назначались не случайно, а рандомизация - единственная причина, по которой A/B-тест вообще работает. Если ты планировал 50/50, а наблюдаемый сплит возникает по случайности реже, чем один раз на тысячу, какой-то механизм решает, кто попадёт в какую группу, и он может быть связан с конверсией. Прирост, который ты видишь, может быть этим механизмом, а не твоим изменением.
Можно ли использовать этот калькулятор для выручки на посетителя или среднего чека?
Нет. Эта страница проверяет долю: каждый посетитель либо сконвертировался, либо нет. Выручка на посетителя - непрерывная и сильно скошенная метрика, ей нужен t-тест или бутстрап на суммах по каждому пользователю, а для этого нужны сырые данные, а не четыре итога. Калькулятор t-теста среди математических калькуляторов Coddy сравнивает средние, когда у тебя есть значения по каждому пользователю.
Откуда берётся наименьший обнаруживаемый прирост?
Из той же формулы, что в калькуляторе размера выборки, только запущенной в обратную сторону. По твоим размерам групп и конверсии A она находит относительный прирост, который 80% тестов такого размера поймали бы при твоём уровне уверенности. Если наблюдаемый прирост ниже него, тесту не хватило мощности для этого эффекта, и «незначимо» почти ничего не говорит о том, сработало ли изменение.

Другие инструменты разработчика

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ