Зарегистрируйтесь, чтобы продолжить обучение

АА-тесты Статистическая значимость

Как мы уже понимаем, нельзя доверять данным чисто визуально. Для обоснования наших утверждений всегда требуется математическое подтверждение. Именно поэтому мы используем методы статистического анализа данных. Первый этап анализа — это АА-тестирование. В этом уроке мы изучим его этапы и результаты, а также оценим его преимущества и недостатки.

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

Важно понимать, что АА-тестирование не заменяет АB-тестирование, а дополняет его. До 80% всех АB-тестов завершаются неуспешно — этим этот этап и важен. Он помогает провести статистическую оценку самих данных и ответить на многие важные вопросы:

  • Корректные ли данные мы выбрали?
  • Подходят ли те метрики, который мы выбрали?
  • Валидны ли гипотезы, которые мы построили?

Получив ответы на эти вопросы во время АА-тестирования, мы можем приступить к более масштабному эксперименту — АB-тестированию.

На этом этапе мы не только проводим статистическую оценку самих данных, но убеждаемся, что данные можно использовать для АB-тестирования, и удостоверяемся, что выбранные метрики корректны.

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

Если мы не проводим АА-тестирование, большая часть нашей работы ставится под угрозу. Если вдруг мы неправильно выберем параметры или метрики, мы потерпим неудачу на АB-тестировании — придется вернуться к самому началу и пересмотреть все этапы.

Этапы проведения АА-тестирования полностью совпадают с этапами АB-тестирования:

  • Выбираем данные для тестирования
  • Собираем выборку
  • Настраиваем метрики и параметры эксперимента
  • Оцениваем статистические параметры
  • Формулируем гипотезы
  • Подготавливаемся к отслеживанию результатов
  • Получаем результаты
  • Делаем вывод, можно ли доверять данным, полученным на этом этапе

По итогам АА-тестирования мы можем прийти к следующим выводам:

  • Если АА-тест не показал значимых статистических различий, то АА-тестирование успешно — можно переходить к AB-тестированию
  • Если АА-тест показал значимые статистические различия, то АА-тестирование неуспешно — нужно разобраться в данных и найти там ошибку

Практика

Дано: Есть один тип интерфейса A.

Задача: оценить данные против себя.

Подход к решению задачи

  • Собрать данные
  • Посчитать сумму выручки в разные периоды времени и сравнить
  • Посчитать для каждого периода математическое ожидание и дисперсию и сравнить

В качестве метрик будут использованы мат ожидания, то есть усредненные значения средних чеков и дисперсия, отклонение средних чеков. Дисперсия одних данных против других. Здесь же по сравнению с A-B-тестированием, когда изменчивый параметр был версия продукта, будет изменчивый параметр время наблюдения.

Можно ли сказать, что пользователи A и B одинаковые или они статистически значимо отличаются?

Гипотеза H0 - нет различий, гипотеза H1 - есть различия.

Собираем данные

SELECT * FROM clickstream_aa;
vizit_date category amount probability
2022-01-01T00:00:00.000Z 1 85 0.03
2022-01-02T00:00:00.000Z 2 200 0.055
2022-01-03T00:00:00.000Z 3 300 0.115
... ... ... ...
2022-02-01T00:00:00.000Z 1 90 0.03
2022-02-02T00:00:00.000Z 2 205 0.055
2022-02-03T00:00:00.000Z 3 305 0.115
... ... ... ...

Ссылка на датасет

Здесь у нас уже нет версий. Все эти данные относятся к одной и той же версии. Единственное, что поменялось, это дата. Мы измеряли первые 10 дней января в тех же 10 категориях.

Посчитаем сумму выручки в разные периоды времени

Сгруппируем данные по каждому месяцу и найдем сумму выручки

SELECT
    TO_CHAR(vizit_date, 'YYYY-MM-01') AS visit_date,
    SUM(amount) AS total_amount
FROM clickstream_aa
GROUP BY 1
ORDER BY 1;
visit_date total_amount
2022-01-01 3135
2022-02-01 3185

Ссылка на пример с вычислениями

Посчитаем для каждого периода математическое ожидание и дисперсию

WITH tab AS (
    SELECT
        TO_CHAR(vizit_date, 'YYYY-MM-01') AS visit_date,
        SUM(amount * probability) AS mat,
        SUM(amount * amount * probability) - SUM(amount * probability)*SUM(amount * probability) AS disp
        FROM clickstream_aa
        GROUP BY 1
)
SELECT
    *,
    mat / lead(mat) OVER(ORDER BY visit_date) - 1 AS mo_delta,
    disp / lead(disp) OVER(ORDER BY visit_date) - 1 AS d_delta
FROM tab;
visit_date mat disp mo_delta d_delta
2022-01-01 389.1 16755.439 -0.0126 -3.4416e-15
2022-02-01 394.09 16755.440

Ссылка на пример с вычислениями

Итак, мы посчитали дисперсию и мат ожидание. И посчитали дельту. Разницу мат ожидания в разные даты. И эта разница составила, если переведем в проценты, то есть умножим эту цифру на сотню: 1,3% для математического ожидания, и почти 0% для дисперсии, если округлять.

Если мы не увидим разницы более 5% отклонением от ожидания дисперсии данных, то мы гипотезу H0 принимаем. И мы понимаем, что статистически значимых различий между этими интерфейсами нет. А это говорит о том, что АА тестирование у нас успешно. И выбранные данные, выбранные параметры можно использовать для проведения АБ тестирования.

Теперь давайте вспомним, какие у нас были гипотезы. Гипотеза 0. О том что у нас нет статистически значимых различий при тестировании интерфейса против себя. И альтернативная гипотеза, что статистические значимые различия есть.

Если мы принимаем гипотезу H0, то А тест не показал значимых статистических различий. Мы можем утверждать что A тестирование успешно. В нашей практике именно так и произошло.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff