6 заметок с тегом

Аналитика

Позднее Ctrl + ↑

Как сформулировать гипотезу и её проверить

В прошлый раз я рассказал как считать доверительные интервалы и показал как это происходит на практике. Но одна из сложных (для меня) тем была: как сформировать гипотезу с точки зрения науки. Разберём эту тему на примере.

Допустим, вы прослушиваете звонки в колл-центре. И постоянно слышите вопрос от клиента сколько будет стоить услуга. А когда клиент узнает цену, то сразу же сбрасывает звонок.

На основе этой информации мы можем сформулировать гипотезу как можно улучшить этот процесс и повысить конверсию: «А давайте сразу же на сайте писать цену!». Первый вопрос, а для чего мы это делаем?

Чтоб повысить конверсию! Когда мы будем подводить итог, мы будем считать эффективность старой версии сайта, по сравнению с новой версией сайта.

Нулевая гипотеза
Сначала определяем нулевую гипотезу. Фактически это гипотеза, которая говорит нам о том, что всё должно быть так, как обычно. То есть мы отвергаем, что появление точной стоимости на сайте увеличит конверсию. Для нас нулевая гипотеза: «Когда мы начали показывать стоимость услуги, конверсия не увеличилась».

Альтернативная гипотеза
Второй шаг, определить альтернативную гипотезу. Это гипотеза, ради чего мы все это затеяли. В нашем случае: «Когда мы начали показывать стоимость услуг, конверсия увеличилась».

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

В идеале, стоит провести еще и AA тестирование. То есть трафик разделять не на 2 части, а на 3 части. Первая часть идёт на исходную страницу, вторая часть снова на исходную страницу, а третья часть на новую страницу. Это нужно, чтоб понять, что с трафик однороден. Но в реальности AAB-тестирование могут себе позволить только огромные проекты с большим количеством трафика.

Подведение итогов
И вот тут мы считаем доверительные интервалы. Нам нужно определить уровень статистической значимости. Если бы мы были учеными, то скорее всего мы бы взяли 95% значимость, чтоб уменьшить вероятность ошибочного эксперимента. Если эксперимент критичный (если ошиблись, получим смерти людей), тогда берут 99% значимости.

Для маркетинга достаточно брать уровень статистической значимости 80% (Сигма=1.28). Как считать доверительные интервалы, я уже писал. Если попыток мало, то лучше использовать формулу x², если попыток много (больше 5000), то я использую бета-распределение.

Если доверительные интервалы (ДИ) пересекаются (первый исход ДИ от 5% до 5,5%; второй исход 5,4% до 5,7% → пересечение между 5,4% (начало 2 ДИ) и 5,5% (конец 1 ДИ)), тогда мы не можем сказать что первая и вторая гипотезы отличаются.

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

Считаем эффективность источника без достаточного количества конверсий

В прошлый раз я рассказал как считать доверительные интервалы. Сегодня немного практики, но пока без какой-либо автоматизации.

Наша задача, определить насколько какой-то элемент в рекламе эффективен. Я буду разбирать на примере площадок. Но можно так же построить оценку на фразе, креативе и т. д.

Разбор на примере площадок
Нам важно привлекать лиды по стоимости ниже 9 500 ₽. Это жесткая планка. Всё что выше, точно не окупится никогда (и эффект масштаба не работает).

Возьмём для примера три вида площадок:

Согласно этим данным, нам нужно отключить все площадки. Но нужно понять, а с 80% вероятностью, смогут ли эти площадки когда лидо выйти на планку в 9500 ₽. Может нам просто выборки не хватило.

Нам нужно посчитать не просто доверительный интервал. А понять какую максимальную конверсию в нашем доверительном интервале сможет показать каждая площадка. Рассчитывать можно через x² или бета-распределение. Вот формулы:

Форумла расчёта x²
σ×SQRT(КОНВЕРСИЯ×(1-КОНВЕРСИЯ/ВЫБОРКА)

80% точность σ = 1.28

Расчёт для первой площадки
1.28×SQRT(0,0020×(1-0,0020/5000))=0,08%

Тогда CRmax будет =0,28%

Формула расчёта Beta-распределения
=BETA.INV(0,9;КОНВЕРСИЙ;ВЫБОРКА-КОНВЕРСИЙ)

Расчёт для первой площадки
CRmax=BETA.INV(0,9;10;5000-10)=0,28%

Расчёт для всех площадок

Согласно этому расчёту потенциально, с 80% вероятностью, каждая площадка еще может показать результат, который нас всех устроит. Хотя прямо сейчас, в текущий момент, эти площадки не могут показать достаточный результат.

Безусловно нужно будет принимать решение в текущий момент времени с менеджментом или собственником бизнеса и проанализировать до продаж качество самих этих лидов.

Как рассчитывать доверительные интервалы через x² или бета-распределение

Очень часто, в интернет-маркетинге нам приходится принимать решение на основе малого количества цифр. Я (и это прививаю своей команде) стараюсь принимать решения на основе цифр. Сегодня хочу рассказать про два способа принятия таких решений. В дальнейшем буду ссылаться на эту статью, когда буду разбирать что-нибудь практическое.

Биномиальное распределение
Биномиальное распределение — это распределение исходов, где значение может принимать два значения: «правда» или «ложь» — «1» или «0».

Разберём на примере:
У нас есть посадочная страница, на которую мы заводим пользователей с рекламной кампании. Каждый заход — это испытание. Заход может закончиться оправленной заявкой (конверсия, «ПРАВДА», «1»), или пользователь просто может уйти (ничего, «Ложь», «0»).

Каждое испытание должно быть независимым от предыдущего.

Расчёт через ײ (хи-квадрат)

Формула расчёта доверительного интервала через хи-квадрат выглядит так:

σ×SQRT(КОНВЕРСИЯ×(1-КОНВЕРСИЯ/ВЫБОРКА)

SQRT — корень.
σ — это сигма, среднеквадратичное отклонение. К примеру, для 68% нам нужна 1σ. Вот примеры:

1 сигма — это 68% точности.
1.28 сигмы — это 80% точность.
1.96 сигмы — это 95% точности.
3 сигмы — это 99,72% точности. В интернет-маркетинге такая точность не нужна.

Точность в данном случае — это фактически площадь рассматриваемых результатов. Чем ниже площадь, тем меньше в расчёт попадают аномальные результаты (которые находятся на краях гауссовой кривой).

Рассмотрим пример:
Баннер А — CTR=5%
Баннер Б — CTR=5.5%

На обоих баннерах выборка (показы): 10 000. Какой из этих баннеров лучше с 80% точностью?

Считаем:

σ для 80% = 1.28

Доверительный интервал для Баннера А
1.28 x SQRT(5% × (1 — 5%) / 10 000) = 0.28%

Доверительный интервал для Баннера Б
1.28 × SQRT(5.5% × (1 — 5.5%) / 10 000) = 0.29%

Для «Баннера А» доверительный интервал при такой выборке будет:

CTR(min) = 5% — 0.28% = 4.72%
CTR(max) = 5% + 0.28% = 5.28%

Для «Баннера Б» доверительный интервал будет:

CTR(min) = 5.5% — 0.29% = 5.21%
CTR(max) = 5.5% + 0.29% = 5.79%

Таким образом баннеры с 80% вероятностью не различимы. Они пересекаются на диапазоне между 5.21% и 5.28%. Нужно больше выборки, чтоб доверительный интервал для каждого баннера сузить и выявить победителя.

Расчёт через бета-распределение

В Excel или Google Spreadsheet есть встроенная функция бета-распределения. Формула будет выглядеть так:

=Beta.inv(границы_точности; КОНВЕРСИЙ; ВЫБОРКА — (КОНВЕРСИЯ × ВЫБОРКУ))

Если мы вернёмся к задачке с баннерами, то у нас получатся вот такие формулы

Для Баннера А

CTR(min) = beta.inv(0.1; 5% × 10000; 10000 — 5% × 10000)
CTR(max) = beta.inv(0.9; 5% × 10000; 10000 — 5% × 10000)

Для Баннера Б

CTR(min) = beta.inv(0.1; 5.5% × 10000; 10000 — 5.5% × 10000)
CTR(max) = beta.inv(0.9; 5.5% × 10000; 10000 — 5.5% × 10000)

Получается:

Для баннера А

CTR(min) = 4.72%
CTR(max) = 5.28%

Для баннера Б

CTR(min) = 5.21%
CTR(max) = 5.79%

Результаты расчёта доверительного интервала через ײ и через формулу бета-распределения одинаковые. В случае биномиального расчёта можно использовать любую из этих формул.

Аналогично можно сделать и через Python. Разберём на примере баннера Б:

import scipy.stats as ss

dist = ss.beta(550, 9450)

ctrmin = dist.ppf(0.1)
ctrmax = dist.ppf(0.9)

print("CTRmin: {:2.2%} \nCTRmax: {:2.2%}".format(ctrmin, ctrmax))

Вывод кода выше:

CTRmin: 5.21% 
CTRmax: 5.79%