Оценка эффекта
Ура, у нас есть замеры в достаточном количестве! Теперь мы могли бы взять среднее значение всех попарных разностей продаж магазинов в нужной гранулярности между пилотной и контрольной выборками. Однако, это будет случайная величина и нужно будет доказать, что разница между пилотной и контрольной группой не обусловлена случайными колебаниями значений этой величины. Для этого разницу средних необходимо нормировать на этот диапазон колебаний этой величины, или по-другому, на ее дисперсию. Однако, само по себе это тоже будет неким случайным значением.
Чтобы ответить на вопрос о наличии эффекта мы используем механизм проверки гипотез из математической статистики. Наши гипотезы состоят в том, что пилотная и контрольная группы после наших изменений отличаются на некоторый процент, например, 1, 5 или 10. Мы берем разные проценты, так как чем меньше процент, тем больше измерений требуется, чтобы подтвердить гипотезу о его наличии. Каждый раз мы задаем серию последовательных вопросов: есть ли эффект в 10%, да или нет? Если нет, а есть ли эффект в 5% и так далее.
Чтобы подтвердить или опровергнуть наши гипотезы мы используем упомянутый выше критерий Стьюдента. Он основывается на использовании разницы средних между пилотной и контрольной выборках, которые нормируют на дисперсию величин и размер выборки. Другими словами, критерий Стьюдента показывает отличие разницы средних при условии фиксирования допустимой ошибки принятия гипотезы. То есть, если мы согласны, что ошибка принятия неверной гипотезы не превышает 5 процентов (обычно берут это значение), то при соблюдении условий критерия значения средних или совпадают, или отличаются. Это именно то, что нам и нужно проверить .
Итого, весь процесс проведения теста выглядит следующим образом. Сначала формируем целевую и контрольные группы. Далее выбираем гранулярность замеров. Берём исторические данные и инжектируем в них наш ожидаемый эффект на метрику (например, 5%). Считаем на исторических данных замеры исходя из выбранной гранулярности и далее прогоняем замеры через критерий Стьюдента. Смотрим, сколько времени нам нужно, чтобы получить подтверждение гипотезы об эффекте в 5% (который точно есть, так как мы его сами инжектировали) на исторических данных. Если срок нас не устраивает, то корректируем гранулярность и снова считаем критерий. Так делаем до тех пор, пока не получим ту продолжительность теста, которая нам подходит. После этого начинаем тест на реальных данных и ждем, пока проверится одна из наших гипотез.
Так, в случае с тестированием нового ассортиментного наполнения магазинов, нам потребовалось от трех до четырех недель, чтобы подтвердить эффекты на выручку нескольких категорий в 3-5%.
Например, таблица ниже на примере категории "Холодильники" показывает зависимость количества наблюдений (в ячейках), которое нам необходимо, от размера эффекта (по строкам), который мы хотим найти, и той ошибки при оценке эффекта (по столбцам), которую мы согласны допустить.
Для верификации оценки нашего эффекта мы также используем метод доверительных интервалов. Помните бутстрапирование, о котором мы говорили выше? Мы берем разницу многих средних между целевой и контрольной группами и каждую такую разницу обозначаем точкой. Получаем множество точек (значений) или по-другому множество значений оценки разницы. Среди всех этих оценок берем 2.5% и 97.5% перцентиль – это и есть наш доверительный интервал, в котором будет находиться наш эффект. Если диапазон значений эффекта сочетается с нашими ожиданиями, хорошо, если нет, то продолжаем тест, как описано выше. Если доверительный интервал пересекает ноль, то это значит, что эффекта может не быть вообще и тест нужно однозначно продолжать. Однако, в нашем случае такого быть не должно, так как мы заранее проверяли наличие эффекта с помощью критерия Стьюдента.