Pull to refresh

Comments 59

Всегда уважал людей, применяющих тервер в реальной жизни
10 дней тестирования — мало, даже если «интервал разошёлся». Дело в том, что поток посетителей не постоянен. В 10-ти днях может быть и одна пара выходных, и две. Следует сначала убедиться, что посетители ведут себя одинаково и в выходные, и в будни, и в разное время суток.
Как вы определяете, кому включать блок (ну или вообще новые фичи, дизайн), а кому — нет?
В момент посещения пользоватем сайта для его браузера присваивается кука со сроком жизни, когда пользователь с этого устройства приходит снова — мы проверяем на какую цифру заканчивается(четная группа А, нечетная группа Б), так мы добиваемся того, что пользователь с одного устройства — всегда попадает в одну группу.

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

На практике расхождения могут достигать и 10%, поэтому вычисляется доверительный интервал для каждой группы и конверсия целевого действия.
P.Ы. А/Б тесты для проектов за второй тысячей Российской алексы — миф. Трафика не хватит.

Поподробнее обоснуйте, пожалуйста.
Сайты за второй тысячей Alexa.com имеют посещаемость менее 20000 уникальных пользоватей, реальный уровень конверсии, который стоит учитывать(деньги, заказы, заявки) в E-commerce редко больше 3%, а значит для получения значимого результата тест не может длиться меньше 2-4 недель и скорее всего на его результаты может влиять внешние факторы, такие как сезонность рынка, спрос на продукт и т.п.
А при чем здесь сезонность, ведь обе группы в одинаковых условиях.
Именно, просто тест будет длиться дольше, до достижения порога трафика, когда данные станут достоверными. Внешние факторы не влияют, если трафик разбивается случайно в течение всего периода тестирования. И для теста бывает достаточно 2-4 тыс посещений, проверено на собственном опыте (разумеется достоверность >95%).

Поэтому довод про «за второй тысячей алексы» не при чем.

Опять таки — какую достоверность считать? Обычно считается достоверность того что Б лучше чем А, без конкретных цифр, т.к. если добавить в расчет достоверности еще и увеличение конверсии минимум на определенный процент, то, разумеется, трафика не хватит.
В статистике есть понятие достоверности изменения исследуемого параметра. Оно зависит от количества результатов в наблюдении и значения дельты.
Нельзя, например, рапортовать об изменении конверсии на 10%, если у тебя всего 50 наблюдений. Однако, если обнаружилась разница в 50%, то этого количества уже достаточно для 98% достоверности, к примеру.
Для того, чтобы считать достоверной разницу в 10%, нам понадобится примерно от 500 до 20000 (я не ошибся в нулях) наблюдений, в зависимости от условий. При этом данные сильно портятся со временем, поэтому нископосещаемым сайтам никогда не набрать нужный объем.
Можете обосновать, почему данные портятся со временем?
Потому что трафик, который суть люди, много людей — это неравновесная субстанция. Со временем у них меняется отношение к материалу, к подаче, к структуре сайта. Это изменение не 100% хаотичное, оно направленное, но отследить все причины вы никогда не сможете. В доказательной науке это называется принципиальной нерандомизируемостью.
Когда вы переварите радость от успеха, обратитесь к опыту FMCG-компаний, которые уже давно используют survival-анализ, а также прикольные штуки типа иерархического Байеса, и тестируют не по две версии продуктовых концептов за раз, а миллионы.

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

Так, тестам features ИТ-продуктов (сайтов, apps) очень близка (математически) тема — вы удивитесь! — sensory research (тестов вкусов и запахов). У компаний типа Procter&Gamble — миллионы вариантов того, какой запах очередной «альпийской свежести» или «морского бриза» можно придать какому-нибудь кондиционеру для белья. А проблема выбора того варианта, который будет продаваться лучше всего перед ними стояла и пятьдесят лет назад — когда кластеров серверов для расчётов conjoint-тестов ещё не было и в проекте. Добрая половина прогресса по части multivariate methods — оттуда пришла.

Они же первые осознали проблему того, что «измерительным прибором» является человек, который не факт что способен почувствовать разницу. Ещё ни разу не видел айтишника, который делает сплит-тест с пониманием того, что заметная доля пользователей — либо функционально малограмотны, либо, медицински говоря, хм, не сообразительны. Да-да, это те ребята, которые забредают к вам на сайт по малосвязанным запросам и делают странные вещи. А какая часть из замеренной вами разницы между А и B в сплите приходится на этих товарищей?
Присоединяюсь к предыдущему комментатору! Пишите!
А есть ещё такие таблицы Тагучи.
Позволяют провести минимально возможное число экспериментов для определения вклада каждого из нескольких независимых факторов.
А кстати, почему расхождение сглаживается со временем?
У нас бывало, что 70% разница в показателях отказов в течение недели превращалась в 20-30%, при том что все посетители были новые, и набегало по 3000 хостов в день.
Можете подсказать, менялись ли источники трафика?
Трафик на 98-99% поисковый, каких-то скачков в течение всего эксперимента не бывает — ибо если они есть, если вообще есть какое-то отклонение, то эксперимент я прерываю.
Больше хочется узнать, почему у вас идет сглаживание? Почему первый день +10%, а к концу месяца уходит в недостоверное?
Так исторически сложилось — что большая часть пользователей — лояльная аудитория. Внедрение небольших изменений приводит или к повышенному или к пониженному интересу(далеко не всегда +), но когда все интересующиеся попробовали — и начинается чистый эксперимент.

Хорошим примером может служить недавний редизайн Хабра, уверен каждый подумал что — то свое, пока привыкал)
Что?? Вы тестируете UI-конверсии на людях, которые уже знают, что к чему у вас на сайте?:) Если так, то единственный уместный тест — это скорость работы в каком-то продуктивном интерфейсе, вроде электропочты или граф.редактора. И да, только после того как пройдет время, необходимое на переобучение.
Обязательно! На большей части проектов(и не только web) основные лиды приходят именно от лояльной аудитории. Тест только на новом трафике не покажет ровным счетом ничего, а постоянная аудитория может на него неожиданно отреагировать.
Кстати, интересно бы было построить зависимость конверсии от _изменений_ интерфейса, а не от самого интерфейса.
По опыту, в 9 из 10 тестов доказать значимость изменений интерфейса не получается(
Спасибо, очень интересно!
Получается, для небольших проектов лучшей стратегией остается копирование проверенных на больших данных решений крупняка?
Я бы так не сказал, экспериментировать нужно! Только так можно добиться прогресса.

А для того, чтобы понять что именно делает этот прогресс — нужно уметь делать выводы.
А вы не пробовали для этого использовать google analytics experiments? То же самое, насколько я понимаю, только уже готовое.
Ну и я бы не называел изменение конверсии на 17% с доверительным интервалом 20% незначимым. Если я правильно понимаю всю эту кухню, то это значит, что реальное изменение конверсии лежит где-то между -3% и 37% с вероятностью 95%. Но внутри этого интервала у нас гауссиана. Это вообще говоря значит, что, скорее всего (с вероятностью меньше 95%, но намного больше 50%), реальное значение больше нуля. Разве этого недостаточно, чтобы признать эксперимент успешным?
За ссылочку спасибо — не пробовали!

По вопросу: доверительный интервал слишком большой, и однозначно сказать эксперимент дал положительный результат или отрицательный нельзя. Заключение тут одно: в этот момент выводы делать ошибочно, нужно терперия набраться.
Про гауссиану это я бред написал =)
Хотя нет, не бред. Биномиальное распределение аппроксимируется нормальным вполне себе. Прошу прощения, я тут сам с собой немного поговорю, пока вспоминаю тервер. Я просто некоторое время назад тоже занимался математическим обоснование A/B тестов, и цифры у меня получились тогда совершенно не такие как у автора.
А можете поделиться выводом или ссылкам по формулам под катом?
А сделайте туториал для создания А/Б — тестирования, такой, технический, как любят на Хабре.
Вот есть сервер, вот CMS, вот страницы. Как делить, как вписывать маячки для отслеживания, как выдавать ту или иную страницу. Думаю, это очень бы пригодилось ;)
Спасибо за предложение!

Отличная зона роста для поста!
Может существовать: изменение конверсии на 17% с доверительным интервалом 10%(в этом случае — изменение — значимое).

А может быть и так: изменение конверсии на 17% с доверительным интервалом в 20%(в этом случае — изменение — незначимое).

Нет, не может. Может существовать «с уровнем доверия 5% (ваша „точность“ 95%) вариант А имеет конверсию 2% ± 0,28%, а вариант B имеет конверсию 2.3% ± 0,29%». Поэтому непонятно, каким образом вы формулировали критерий того, что вариант B (новый) лучше варианта A (старого), если конверсия варианта A это не константа, а такая же случайная величина, как и конверсия варианта B. Откуда взялся этот интервал от 1,72% до 2,28% у вас под катом и какое значение должно не попасть в этот интервал? 2%, от которых отсчитывается этот интервал это что, средняя конверсия сайта за последние пол-года или конверсия варианта А? Какое значение не должно попасть в этот интервал, конверсия варианта B?
Не совсем так, А/Б тест тут еще не начался:

В этом конкретном случае — приведен пример для понимания порядка цифр. В примере вычисляется доверительный интервал только для одной из групп с конкретно приведенными параметрами(которые можно однозначно сравнить с параметрами сайта читателя) и вычисления показывают, что при проведении аналогичного теста — значимыми для этой конкретной группы могут быть отклонения больше чем в 14%, а все что меньше — и для этой группы статистически незначительны.

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

Вычисления доверительного интервала по формуле (2) показывают, что реальное значение конверсии с вероятностью 95% лежит внутри этого интервала от 1,72% до 2,28%. Откуда вы взяли утверждение о значимости отклонения повторного проведения теста? Это совершенно неверно. Доверительные интервалы двух измерений могут пересекаться (это совершенно точно), даже частота одного из измерений может быть внутри доверительного интервала другого измерения (если не может, то это надо сначала доказать, либо привести ссылки где это доказано, прежде чем использовать), но при этом нуль-гипотеза о том, что реальных различий между конверии нету, может быть отвергнута с заданными статистической значимостью и мощностью.
Так, помоему мы говрим не об одном и том же)

Давайте определимся в терминологии:

Значение конверсии с вероятностью 95% лежит внутри интервала от 1,72% до 2,28%. — для одного измерения(одной группы) — верно?
У вас, как и в статье, по которой вы это все делали (A/B Testing Tech Note: determining sample size), есть проблема. Критерии, по которым проверяются гипотезы о случайных величинах (а A/B тест есть не что иное, как проверка гипотезы), не формулируются простыми условиями вида «если наблюдаемая частота величины B не попала в доверительный интервал величины A». Вот пример критерия: t-критерий Стьюдента. Формула номер (1) действительно показывает кол-во необходимых данных в каждой выборке, чтобы результат проверки гипотезы соответствовал выбранным статистической значимости и мощности критерия (ваши «95% доверительный интервал, статистическая мощность 80%»). Но. Самого теста на верность гипотезы нету ни у вас, ни в той статье. Та функция power.prop.test, которая юзается в статье вместо вашей формулы (1), на самом деле дополняется еще функцией prop.test, которая уже и говорит нам о том, верна ли наша гипотеза (обычно это гипотеза о том, что две величины никак не различаются) с заданной статистической значимостью, или нет. А мощность этого критерия позволяет вычислить функция power.prop.test.
Возможно повторюсь — как у меня под катом, так и в приведенной статье — идет определения размера контрольных групп, тест еще не начался. Делали тесты мы не по статье, а по учебнику(Бородич С.А. Эконометрика) откуда и были приведены формулы (1) и (2) с заранее заданными константами.
Сначала вы говорите, что взяли с этих ссылок, теперь что из учебника. Окей, в таком случае поделитесь номерами страниц этого учебника, где вы это взяли.
Ну и еще один момент. Ни в коем случае нельзя ждать, пока критерий сработает с нужной статистической значимостью, как вы это делали, пусть и со странным критерием. Это подробно описано в той статье, из которой вы, видимо, брали формулу (1). Правильно будет сначала определить необходимый размер данных, провести тест на этих данных и потом интерпретировать результат, для чего, собственно, формула (1) и приведена в той статье, или использована функция power.prop.test в этой статье
Начну с самого простого)

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

Формула (1) приведена только для расчета порядка необходимых цифр, достаточных для получения значимого результата.

* как вызов который перед нами стоит — нужно проводить тест E-mail рассылки, но мы не можем поделить пользователей на группы, так как не можем знать того отклика, что получим в будущем.
Нет! Формула (1) рассчитывает порядок необходимых цифр для получения значимного результата по критерию с заданными статистической значимостью и мощностью. Константа 16 содержит в себе статистическую значимость 5% и мощность 80%. Когда вы внезапно меняете критерий на свой с неизвестными статистической значимостью и мощностью, результаты, которые дает эта формула, становятся совершенно бесполезны.
Доверительный интервал, не айс решение. Он сильно сложен для работы. И не дает математически точного результата, если просто два интервала сравнивать. Особенно, если ждать пока разойдутся. А не проводить эксперимент с фикс. временем.

Если CTBA метод, тоже не дает мат. точности, но сравнивать проще.
habrahabr.ru/post/232639/
Неизвестно, лучше ли будет просто на глаз посмотреть, больше ли конверсия, или считать доверительные интервалы как делали вы. Надо доказывать, что второе лучше (и не факт, что это на самом деле так). Вы понимаете, что ваша фраза «И не дает математически точного результата» полностью сводит на нет полезность статьи, т.к. всю статью вы пытались вроде математически обосновать свои решения, которые вы принимаете на основе результатов A/B тестов, а тут вдруг оказывается, что это не то чтобы математически точные решения. Окей, можно сказать «они не совсем точны, но лучше чем никакие», но опять же, то что они лучше и ближе к точными, надо доказать. Может так получиться, что критерий, который используете вы (сравнение доверительных интервалов), работает, скажем, со статистической значимостью 0.01% (вероятность ошибки 1го рода, т.е. вероятность найти результат там где его нету), но с мощностью 30% (вероятность ошибки 2го рода, т.е. вероятность не найти результат там где он есть, 70%).
«Математическая обоснованость» может быть, когда нет точности. У вас есть две константы, коэффициент значимости и мощность, которые нужно выбирать субъективно.
У вас есть две константы, коэффициент значимости и мощность, которые нужно выбирать субъективно

Совершенно верно. Но я не понял, что вы имеете ввиду в первом предложении.
Точность, это когда у задачи есть только один правильный ответ, который не зависит от субъективного выбора коэффициентов.

Обоснованность, когда мы что-то считаем с помощью математики, но в принципе, можно получить другой ответ при выборе других субъективных параметров.

Обратную задачу тер. вера точно нельзя решить, поскольку мы не знаем Априори. Есть два пути:

Байесоновский, мы выбираем субъективно Априори. При этом мы считаем вероятность, но она становится субъективной.

Частотный, мы меняем постановку задачи считаем не вероятность, а то что можем посчитать. Наш ответ объективен, но что-бы его применить на практике, мы должны, его субъективно трактовать.

В любом случае, мы не можем сказать, что конверсия лежит в этом диапазоне с вероятностью 90%. Или с некоторой вероятностью один вариант лучше другого. Если не введем некоторую субъективность. См. чем creditable от confidence интервалы отличаются.

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

Доверительные интервалы не совсем корректно сравнивать с друг-другом. Более того, если 90% интервалы расходятся, то это не значит, что вероятность что один лучше другого >= 90%. Это значит только, что интервалы разошлись. Вы вынуждены субъективно трактовать результат опыта.

Аналогичная радость с критериями. Без трактовки они ничего не дают, а трактовка субъективная.

В общем Баесоновский подход проще для пользователей. И по сути он доминирует на западе.
Выходит, что CTBO это не «1 — значимость» или как? Можете подробнее прокомментировать этот момент?
Нам нужно оценить вероятность того, что вариант А лучше Б. Но мы это сделать не можем, поскольку мы не знаем Априори. Если мы зададим априори, то все наши расчеты станут субъективными как и полученный результат.

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

CTBO в теории можно посчитать используя частотный подход. Но это будет не совсем корректно. Мы не можем говорить о вероятности и шансах. Мы можем говорить «По какому-то критерию с такими параметрами мы получили то-то». Не верно интерпретировать коэффициент значимости как вероятность. Когда мы это делаем, вероятность становится субъективной.

Если мы изначально примем, что вероятность субьективна (это оценка, которую мы можем дать исходя из данных), то мы можем ее посчитать нормально и сказать вероятность, что А лучше Б = 81%. В этом случае мы изначально не считаем какую-то метрику в стиле Т-критерий с такими-то параметрами. И формулы будут другими.

На больших данных разница будет незначительной, но все же будет. Поскольку вероятность у нас субъективна, то одни данные 2 разных человека могут трактовать по разному и оба они будут правы.
К сожалению, не обладаю нужной базой, чтобы продолжать адекватную дискуссию о Байесовской вероятности. Ушел читать матчасть.
По каким-то непонятным причинам я решил, что это комментарий от автора статьи. Прошу прощения
Вы правы, доверительный интервал не айс решение. Он не просто сложен для работы, но и вообще никак никто не доказал, что он лучше простого «посмотрим на цифры через неделю и выберем бОльшую».

CTBA не уверен, но CTBO математически точен. Он как-раз выдает цифру «1 — коэфициент значимости». Другое дело, что мы забываем про мощность, которая там тоже есть, как и в любом критерии. А эту мощность в зависимости от размера выборки нам может посчитать функция R power.prop.test, например. Ну и нельзя забывать про (не уверен как правильно по-русски сказать) т.н. ошибку постоянной проверки статистической значимости — нельзя держать тест, пока результат не станет статистически значимым, нужно сначала определиться с размером выборки при помощи той же power.prop.test (при этом точно так же выбрав субъективно необходимые значимость и мощность), а потом прогнать нужного размера выборку через наш тест.
Не знаю, к какому комментарию это написать, поэтому напишу отдельно. Я, наверное, понял, откуда взялась ваша ошибка с интервалами. Очень похоже, что это со страницы 75 учебника Бородич С.А. Эконометрика. И там даже на стр 76-77 есть примеры, где попадание наблюдаемого значения в доверительный интервал используется как критерий. Но. Это все работает, когда мы говорим о известной дисперсии случайной величины. В реальных задачах, какой являются A/B-тесты дисперсию случайной величины, на равенство которой мы проверяем нашу выборку, мы не знаем. И тут уже надо читать раздел 3.5.2 на стр 77. И тут мы уже вместо интервалов видим использование t-критерия Стюьдента.
Если говорить точнее, задача A/B тестов это фактически проверка гипотезы о равенстве двух случайных величин при неизвестных дисперсиях, раздел 3.5.5 этого учебника, стр 82.
Sign up to leave a comment.

Articles

Change theme settings