На прошлом уроке мы углубились в математическую статистику, узнали, что такое математическое ожидание, дисперсия, стандартное отклонение, и научились делать выводы о генеральных совокупностях с помощью выборок.
Сегодня применим полученные знания, чтобы правильно планировать А/Б-тесты и анализировать их результаты.
|
|
Привет. Это один из уроков платной рассылки про аналитику. Пожалуйста, не пересылайте его друзьям и не публикуйте.
|
|
|
В предыдущих сериях
Мы разработали алгоритм, собирающий список для рассылки интернет-магазина шерстяных носков. Теперь хотим узнать, улучшает ли новый алгоритм эффективность рассылок.
В 14-м уроке мы выдвинули гипотезу, что новый алгоритм улучшает конверсию. Чтобы её проверить, сделали небольшую рассылку по списку, составленному алгоритмом. Сравнили её эффективность с предыдущими рассылками — новая показала 20% прирост по конверсиям.
У того теста был серьёзный недостаток. Помимо алгоритма, на эффективность рассылки влияли другие факторы: дизайн письма, цена носков, экономическая ситуация в стране, известность бренда, время отправки письма. Конверсия могла измениться из-за любого фактора.
Чтобы выяснить, насколько алгоритм увеличил конверсию в покупателей, нужно исключить влияние остальных факторов. Для этого и проводят А/Б-тестирования. Расскажу, что это такое.
Что такое А/Б-тест
А/Б-тестирование — это эксперимент, исследование в управляемых условиях. Его цель — установить взаимосвязь между явлениями, например, между новым способом отбора подписчиков и эффективностью рассылки.
То, насколько хорошо тест определяет нужную взаимосвязь, называется валидностью. Она бывает внешней и внутренней.
Внутренняя валидность
Внутренняя валидность показывает «чистоту» взаимосвязи между явлениями. Вспомните рассылку из 14-го урока, там конверсия выросла на 20%, но мы не знаем, почему именно.
Чтобы узнать наверняка нужно исключить влияние всех факторов, кроме исследуемого. На некоторые параметры мы можем влиять: например, на дизайн письма и цену носков — такие факторы называются фиксированными.
На другие мы не влияем: например, на экономическую ситуацию в стране и действия конкурентов. Но если мы отправим рассылку обеим группам подписчиков одновременно, эти факторы одинаково повлияют на обе группы, а значит, ими можно пренебречь. Такие факторы называются случайными.
Представьте, что в день рассылки конкурент запустил мощную рекламную кампанию. Это, несомненно, повлияет на продажи с ваших писем. Но подписчики получили письмо конкурента одновременно с вашим — значит, этот фактор будет одинаково влиять на обе группы подписчиков. А раз одинаково, то его можно проигнорировать.
|
|
Наконец, фактор, который мы хотим исследовать, называют переменным. В нашем случае это алгоритм сбора списка подписчиков.
Внешняя валидность
Внешняя валидность показывает «переносимость» результатов теста на новые ситуации.
Представьте, что мы исключили все случайные факторы и послали новую рассылку всем подписчикам одновременно. Тест показал прирост конверсии на 20% при использовании алгоритма. Если тест обладает внешней валидностью, то в будущих рассылках алгоритм тоже будет улучшать конверсию.
Другими словами, А/Б-тест обладает внешней валидностью, если его результат получился неслучайно.
Вооружившись этими понятиями, давайте спланируем и проанализируем новый А/Б-тест, который, наконец, покажет, эффективен ли новый способ собирать списки подписчиков.
Планируем А/Б-тест
Прежде чем проводить тестирование, нужно прописать, что и зачем мы делаем. Обозначим цели, входные и выходные параметры эксперимента.
Цель: определить, как использование алгоритма сбора списка подписчиков влияет на конверсию рассылок.
|
|
Входные факторы
Фиксированные: дизайн письма, цена носков, время отправки.
Случайные: погода, экономика, политика.
Переменный: способ сбора списка рассылки.
|
Выходные параметры
Доля подписчиков, совершивших покупку после получения письма.
|
|
Следующий шаг — определить, скольким людям нужно отправить письмо, чтобы получить значимый результат тестирования. Чем больше людей будет в тестовой рассылке, тем лучше для эксперимента, но необязательно для бизнеса — может оказаться, что алгоритм ухудшает эффективность.
Мы должны провести тест на небольшой выборке, найти лучший вариант и уже его использовать для всей базы. Размер выборки зависит от трёх параметров: статистической значимости, статистической мощности и чувствительности теста.
Статистическая значимость
Со статистической значимостью мы уже встречались, когда говорили о проверке гипотез и доверительных интервалах в 14 и 15 уроках.
Статистическая значимость — вероятность, что результат эксперимента получился случайно. Другими словами, это риск, что тест покажет взаимосвязь, которой на самом деле нет.
Как настоящие скептики и аналитики предположим, что алгоритм не влияет на конверсию рассылок, а в ходе эксперимента в тестовую выборку случайно попало чуть больше заинтересованных клиентов. Из-за этого тест по ошибке показал прирост конверсии.
Вероятность совершить такую ошибку — это и есть уровень статистической значимости. Чем больше подписчиков в группе, тем меньше вероятность совершить такую ошибку.
Статистическая мощность
Статистическая мощность — это вероятность, что тест правильно засечёт эффект там, где он и правда есть.
В ходе эксперимента рассылка по тестовой группе показала больше продаж, чем рассылка по контрольной, и мы сделали вывод, что алгоритм работает. Статистическая мощность — вероятность того, что мы приняли правильное решение. Это помогает оценивать результаты А/Б-тестирования.
Аналогично со значимостью: чем выше больше людей в выборках, тем правильнее истолкуем результаты теста.
Чувствительность
Чувствительность теста — минимальный размер изменения, которое тест способен засечь.
Какой прирост конверсии рассылки был бы достаточно хорошим, чтобы признать, что алгоритм работает, а тестирование сработало? 20% прирост — хорошо. 10% — тоже неплохо. А вдруг алгоритм приносит только 0.5% увеличение продаж, стоит ли тогда игра свеч?
Чем больше людей участвует в тесте, тем менее заметные изменения тест засечет. Представим, что разослали рассылку миллиону людей — прирост конверсии составил 2.3654%. Круто, но мы могли бы обойтись и без десятитысячных долей, да и вообще, разве прирост в 2% — это много?
Задав уровень чувствительности, мы говорим тесту: «Если конверсия будет меньше X, нам всё равно, какая она». Это позволяет получить значимый результат на меньшей выборке.
Чтобы рассчитать нужный объем аудитории, я рекомендую пользоваться онлайн-калькуляторами. Например, хороший калькулятор сделал Эван Миллер. Вводите в калькулятор нужные уровни значимости, мощности и чувствительности и в ответ получаете необходимый размер выборки.
|
|
Воспользуемся им и посчитаем размер выборки для нашего теста. Мы хотим полностью доверять результатам теста, поэтому зададим уровень статистической значимости 5%, статистической мощности — 95%.
Старые рассылки показывали 10% конверсию. Будем считать, что алгоритм работает, если конверсия вырастет на 2 процентных пункта. То есть чувствительность равна 2 ÷ 10 × 100% = 20%.
Вводим данные в калькулятор:
|
|
Получается, чтобы получить статистически значимый результат, вариант рассылки с алгоритмом и без должны получить 6 076 человек. Варианта два, поэтому нам нужно 6 076 × 2 = 12 152 подписчика.
Попробуйте поменять параметры в калькуляторе, посмотрите, как меняется размер выборки.
Итак, мы сформулировали цель, определили параметры теста, подготовили промо-письмо и собрали списки рассылок — начинаем тест.
Тестируем
Разослали промописьмо по списку, составленному случайным образом, как делали раньше, и сделали рассылку по списку, который составил алгоритм. Назовём получателей первой рассылки контрольной группой, а получателей второй — тестовой группой.
В контрольной группе — 6 076 получателя, 621 из них купили носки, конверсия составила: 621 ÷ 6 076 = 0.1022 × 100% = 10.22%. В тестовой — 6 076 человека, из них 745 стали покупателями, конверсия: 6 076 ÷ 745 = 0.1226 × 100% = 12.26%.
|
|
Конверсия тестовой группы чуть лучше. Можно ли сказать, что алгоритм и дальше будет показывать лучшую конверсию? Давайте разберёмся.
Анализируем результаты теста
Мы полностью сравним эффективность рассылок, только если разошлём письмо всем людям на планете — понятно, что это нереально, да и не нужно. Возьмём наши рассылки и обозначим их конверсии как p1 (старая рассылка) и p2 (новая рассылка с алгоритмом).
Чтобы проверить, работает ли алгоритм, нужно посчитать разницу p2 − p1. Если она равна нулю, значит алгоритм не увеличивает конверсию. Если больше нуля — увеличивает. Меньше нуля — снижает. Да, такое тоже возможно.
Если p2 − p1 = 0, значит алгоритм не влияет на конверсии.
Обозначим полученные в ходе теста значения конверсий буквами p̂1 и p̂2 (читается «пи-хэт» от английского "p-hat" — пи со шляпой).
p̂1 = 0.1022
p̂2 = 0.1226
Эксперимент показал разницу в конверсиях p̂2 − p̂1 = 0.0204.
С помощью этой разницы можно оценить, на сколько различаются конверсии генеральных совокупностей. Для этого построим 95% доверительный интервал, используя полученные в ходе теста данные.
Задача: составить 95% доверительный интервал и проверить гипотезу, что p2 − p1 = 0, то есть, что на самом деле конверсии одинаковые, а алгоритм бесполезен.
В соответствии с центральной предельной теоремой, которую мы изучали на прошлом уроке, средние значения контрольной и тестовой выборки подчиняются нормальному закону распределения.
Значит 95% всех значений обоих распределений находятся на расстоянии двух стандартных отклонений от их матожидания.
Математические ожидания распределений равны, p̂1 и p̂2.
Дисперсии равны p̂1 × (1 − p̂1) ÷ n1 и p̂2 × (1 − p̂2) ÷ n2, где n1 и n2 — количество элементов в каждой группе.
Стандартные отклонения — квадратные корни от дисперсий.
Промежуточные формулы:
|
|
Раз p̂1 и p̂2 случайны, то их разница p̂2 − p̂1 тоже случайна.
Поскольку p̂1 и p̂2 распределены нормально, то и p̂2 − p̂1 тоже подчиняется нормальному закону распределения. Матожидание p̂2 — p̂1 равно разнице матожиданий выборок, а дисперсия — сумме их дисперсий. Стандартное отклонение по-прежнему равно корню от дисперсии.
То же самое в виде формул:
Mp̂2 − p̂1 = p̂2 − p̂1,
Dp̂2 − p̂1 = p̂1 × (1 − p̂1) ÷ n1 + p̂2 × (1 − p̂2) ÷ n2,
Sp̂2 − p̂1 = √ p̂1× (1 − p̂1) ÷ n1 + p̂2 × (1 − p̂2) ÷ n2 .
Для построения доверительного интервала разницы мы можем использовать формулу: Mp̂2 − p̂1 ± 2 × Sp̂2 − p̂1. Подставим промежуточные формулы и получим формулу 95% доверительного интервала для разницы конверсий.
Доверительный интервал для разницы конверсий:
p̂2 − p̂1 ± 2 × √ p̂1 × (1 − p̂1) ÷ n1 + p̂2 × (1 − p̂2) ÷ n2
p̂1 и p̂2 — измеренные в результате A/Б-теста конверсии,
n1 и n2 — количество элементов в каждой группе.
Подставим значения и посчитаем:
Mp̂2 − p̂1 = 0.1226 − 0.1022 = 0.0204,
Sp̂2 − p̂1 = √0.1022 (1 − 0.1022) ÷ 6 076 +0.1226(1 − 0.1226) ÷ 6 076 = 0.0057.
95% доверительный интервал для p2 − p1 = 0.0204 ± 2 × 0.0057 = [0.008, 0.031]. Если перевести в проценты, получим интервал от 0.8% до 3.1%.
Обе границы интервала больше нуля, значит мы на 95% уверены, настоящая конверсия тестовой группы лучше, чем у контрольной.
Единственным переменным параметром в эксперименте был алгоритм сбора списка подписчиков — мы можем заявить, что он и правда работает.
Ура!
Повторим изученное
- А/Б-тест — это эксперимент, исследование в управляемых условиях. Цель теста — определить взаимосвязь между явлениями.
- То, насколько хорошо А/Б-тест определяет взаимосвязь, называется валидностью, она бывает внутренней и внешней.
- Внутренняя валидность показывает «чистоту» взаимосвязи. Внешняя — её «переносимость».
- Чтобы определить нужный объем выборки для А/Б-теста, используйте онлайн-калькуляторы.
- Оценивайте результаты теста с помощью доверительного интервала. Формула: p̂2 − p̂1 ± 2 × √ p̂1 × (1 − p̂1) ÷ n1 + p̂2 × (1 − p̂2) ÷ n2
|
|
Успехов!
Автор курса: Алексей Куличевский
Редактор: Александр Марфицин
Иллюстратор: Алексей Хамкин
|
|
|
|