Контролируемый эксперимент на сайте
Воронка и отчёт формы помогают найти вопрос для исследования. Но сравнение вчерашнего и сегодняшнего результата не отделяет влияние интерфейса от изменения аудитории. Для этого полезен контролируемый эксперимент, в котором подходящие единицы заранее распределены между вариантами.
В нашем вымышленном примере вариант A содержит прежнее предложение, B — изменённое объяснение результата. Результат урока — договор эксперимента и расчёт неопределённости наблюдаемой разницы. Система назначения на реальном сайте и отправка событий здесь не включаются.
Единица и момент назначения
Выберем искусственную единицу участника, закреплённую за одним вариантом. В настоящем продукте нужно определить, что она обозначает: аккаунт, браузер или другое допустимое наблюдение. Эти варианты имеют разные ограничения и не равны гарантированно уникальному человеку.
Назначение выполняется до поведения, которое сравнивается. Нельзя отправить в B только тех, кто уже начал форму, а в A всех остальных. Тогда различие групп возникнет из правила выбора, а не из предложения.
Один участник сохраняет вариант при повторном открытии. Если интерфейс меняется каждый раз, воздействие становится неоднозначным. Сам параметр variant в адресной строке не должен считаться доказательством случайного назначения.
Основная метрика
Главная метрика — доля подтверждённых записей среди всех подходящих назначенных единиц в заданном окне. Мы не исключаем человека только потому, что он не начал форму: такое поведение может быть результатом самого предложения.
Кроме неё наблюдаем ошибки формы, отказы сервера и доступность интерфейса. Это контрольные показатели. Рост подтверждения не оправдывает поломку важной функции, если эксперимент случайно изменил несколько независимых возможностей.
Заранее задаются продолжительность, окно подтверждения и правила завершения. Количество 1000 в примере не является универсальным достаточным объёмом. Для планирования мощности нужны исходная доля, минимальный полезный эффект и выбранные ошибки решения.
Учебные данные
Снимок experiment-v1 содержит две строки: A — 1000 назначенных и 120 подтверждённых, B — 1000 и 140. Это подготовленные числа для арифметики, а не проведённый A/B-тест ProfessorWeb.
| Вариант | Назначено | Подтверждено | Наблюдаемая доля |
|---|---|---|---|
| A | 1000 | 120 | 12% |
| B | 1000 | 140 | 14% |
Наблюдаемая разница B−A равна двум процентным пунктам. Относительное увеличение составляет примерно 16,7%. Эти величины имеют разные знаменатели и должны быть подписаны отдельно.
Одинаковое число назначений удобно для примера, но реальный поток не обязан дать точное равенство. Нужно проверить, соответствует ли состав групп предусмотренному распределению и нет ли технической потери одной стороны.
Интервал разницы
Для объяснения используем нормальное приближение интервала двух независимых биномиальных долей. При малых числах и крайних долях оно может работать плохо; метод выбирается по данным и задачам. Сопоставление методов есть в справочнике NIST.
Ниже полный experiment.py для нашего снимка. Он проверяет счётчики и рассчитывает выбранное приближение, не выбирая победителя автоматически.
import csv
from math import sqrt
from pathlib import Path
def compare(a, b):
for item in (a, b):
if item["assigned"] <= 0 or not 0 <= item["confirmed"] <= item["assigned"]:
raise ValueError("Неверные счётчики")
pa = a["confirmed"] / a["assigned"]
pb = b["confirmed"] / b["assigned"]
difference = pb - pa
error = sqrt(
pa * (1 - pa) / a["assigned"] +
pb * (1 - pb) / b["assigned"]
)
return difference, difference - 1.96 * error, difference + 1.96 * error
if __name__ == "__main__":
with Path(__file__).with_name("experiment.csv").open(newline="") as source:
rows = {row["variant"]: {
"assigned": int(row["assigned"]),
"confirmed": int(row["confirmed"])
} for row in csv.DictReader(source)}
difference, lower, upper = compare(rows["A"], rows["B"])
print("Разница, п.п.:", round(difference * 100, 2))
print("Интервал, п.п.:", round(lower * 100, 2), round(upper * 100, 2))
Ожидается разница 2,00 п.п. и интервал примерно от −0,95 до 4,95 п.п. Он включает нулевую разницу. Для выбранного приближения наблюдение не даёт основания объявить положительный эффект установленным.
Частотный доверительный интервал не означает вероятность 95% для уже фиксированного неизвестного параметра. Его интерпретация относится к покрытию при повторении метода в соответствующих условиях. Для практического отчёта достаточно не превращать границы в обещание точного будущего роста.
Условия сравнения
Расчёт предполагает независимые подходящие единицы и корректное назначение. Если один человек многократно считается в обеих группах, структура данных отличается. Числа confirmed и assigned сами по себе не доказывают эти предпосылки.
Не меняйте одновременно предложение, форму, события и окно подтверждения. Иначе даже случайное распределение оценивает весь пакет, а не отдельную надпись. Иногда пакет является нужной задачей, но тогда это нужно обозначить заранее.
Регулярное прекращение опыта в первый удобный момент меняет свойства решения. План остановки должен соответствовать выбранному методу. Нельзя ежедневно смотреть обычный интервал и завершать только при желаемом знаке, сохраняя прежнюю трактовку ошибки.
Решение по наблюдению
Наш вымышленный B имеет больше подтверждений, но неопределённость остаётся существенной. Можно сохранить результат как неподтверждённую гипотезу и подготовить следующий корректный опыт. Нельзя подменять вывод фразой «рост доказан на 16,7%».
Отдельные исправления явного дефекта могут приниматься по требованиям удобства или корректности без обещания конверсионного эффекта. Например, неверная подпись ошибки заслуживает исправления, но её влияние на долю результата ещё нужно исследовать.
Что не видно в двух строках
Наш experiment.csv содержит только счётчики. Он не доказывает случайное назначение, стабильность варианта или отсутствие повторов. Эти условия задаёт учебный пример; в реальном опыте они потребовали бы собственных свидетельств.
Одинаковое число assigned также не подтверждает одинаковый состав устройств или источников. Небольшая случайная разница допустима, а крупное техническое смещение нужно исследовать. Сравнение дополнительных групп проводится по заранее понятной цели, сохраняя основной договор. Сохраните версию алгоритма назначения и сведения об исключениях, чтобы можно было восстановить условия опыта.
Если после просмотра результата выбрать другую главную метрику, решение уже будет зависеть от наблюдённых чисел. Такой анализ может дать новую гипотезу, но его нельзя незаметно выдавать за прежний заранее запланированный опыт.
Нулевой эффект внутри интервала не доказывает, что варианты одинаковы во всех отношениях. Наш результат означает ограниченную определённость выбранной разницы. Для проверки эквивалентности или приемлемого ухудшения понадобятся другие заранее заданные границы.
Поэтому сохраняйте краткий паспорт опыта рядом с CSV: назначение, единицу, метрику, срок, правила отбора и известные ограничения. Без него формула не позволяет восстановить смысл двух красивых процентов.
Теперь сравнение имеет назначение, метрику, окно и честный диапазон вывода. Последний урок продолжения соединит этот отчёт с выбором следующего улучшения, его выпуском и проверкой.