Я разработчик программного обеспечения, работающий над системами A / B-тестирования. Я не обладаю достаточным опытом в области статистики, но последние несколько месяцев собираю знания.
Типичный тестовый сценарий предполагает сравнение двух URL-адресов на веб-сайте. Посетитель посещает, LANDING_URL
а затем случайным образом перенаправляется либо на, URL_CONTROL
либо URL_EXPERIMENTAL
. Посетитель представляет собой образец, и условие победы достигается, когда посетитель выполняет некоторые желательные действия на этом сайте. Это составляет конверсию, а коэффициент конверсии - это коэффициент конверсии (обычно выражаемый в процентах). Типичный коэффициент конверсии для данного URL-адреса составляет от 0,01% до 0,08%. Мы запускаем тесты, чтобы определить, как новые URL сравниваются со старыми. Если URL_EXPERIMENTAL
показано, что превосходит URL_CONTROL
, мы заменяем URL_CONTROL
на URL_EXPERIMENTAL
.
Мы разработали систему с использованием простых методов проверки гипотез. Я использовал ответы на другой вопрос CrossValidated здесь, чтобы разработать эту систему.
Тест настроен следующим образом:
- Оценка коэффициента конверсии
CRE_CONTROL
изURL_CONTROL
рассчитываются с использованием исторических данных. - Требуемый коэффициент конверсии целевой
CRE_EXPERIMENTAL
изURL_EXPERIMENTAL
этого множества. - Уровень значимости 0,95 обычно используется.
- Обычно используется мощность 0,8.
Вместе все эти значения используются для вычисления желаемого размера выборки. Я использую функцию R, power.prop.test
чтобы получить этот размер выборки.
Тест будет выполняться до тех пор, пока не будут собраны все образцы. На этом этапе доверительные интервалы для CR_CONTROL
и CR_EXPERIMENTAL
вычисляются. Если они не перекрываются, то может быть объявлен победитель с уровнем значимости 0,95 и силой 0,8.
У пользователей наших тестов есть две основные проблемы:
1. Если в какой-то момент во время теста будет собрано достаточное количество образцов, чтобы показать явного победителя, нельзя ли остановить тест?
2. Если в конце теста не будет объявлено ни одного победителя, можем ли мы провести тест дольше, чтобы посмотреть, сможем ли мы собрать достаточно образцов, чтобы найти победителя?
Следует отметить, что существует множество коммерческих инструментов, позволяющих их пользователям делать именно то, что хотят наши собственные пользователи. Я читал, что с вышесказанным есть много ошибок, но я также натолкнулся на идею правила остановки и хотел бы изучить возможность использования такого правила в наших собственных системах.
Вот два подхода, которые мы хотели бы рассмотреть:
1. Используя power.prop.test
, сравните текущие измеренные коэффициенты конверсии с текущим количеством выборок и посмотрите, было ли собрано достаточно выборок, чтобы объявить победителя.
Пример: был настроен тест, чтобы увидеть, существует ли в нашей системе следующее поведение:
CRE_CONTROL
: 0.1CRE_EXPERIMENTAL
: 0,1 * 1,3- С этими параметрами размер выборки
N
составляет 1774.
Однако, по мере того, как тест продвигается и достигает 325 образцов, CRM_CONTROL
(измеренная скорость преобразования для контроля) составляет 0,08 и CRM_EXPERIMENTAL
0,15. power.prop.test
рассчитывается по этим коэффициентам конверсии и N
составляет 325. Именно количество образцов должно быть объявлено CRM_EXPERIMENTAL
победителем! На данный момент мы надеемся, что тест может быть закончен. Точно так же, если тест достигает 1774 выборок, но победитель не найден, но затем он достигает 2122 выборок, что достаточно, чтобы показать, что CRM_CONTROL
0,1 и CRM_EXPERIMENTAL
0,128 - это результат, в котором можно объявить победителя.
В связанном вопросе пользователи сообщили, что такой тест менее достоверен из-за поощрения ранних остановок с меньшим количеством выборок, а также из-за уязвимости к ошибкам оценки и увеличению числа ошибок типа I и типа II. Есть ли способ заставить это правило остановки работать? Это наш предпочтительный подход, так как он означает меньше времени для программирования. Возможно, это правило остановки может сработать, предлагая какой-либо числовой балл или баллы, которые измеряют достоверность теста, если он будет остановлен досрочно?
2. Используя последовательный анализ или SPRT .
Эти методы тестирования предназначены именно для той ситуации, в которой мы находимся: как наши пользователи могут начать тестирование и завершить его таким образом, чтобы не тратить лишнее время на тестирование? Либо слишком длительное выполнение теста, либо необходимость повторного запуска теста с другими параметрами.
Из двух вышеупомянутых методов я предпочитаю SPRT, потому что мне немного легче понять математику, и, похоже, ее легче программировать. Однако я не понимаю, как использовать функцию правдоподобия в этом контексте. Если бы кто-то мог построить пример того, как вычислить отношение правдоподобия, совокупную сумму отношения правдоподобия, и продолжить на примере, иллюстрирующем ситуацию, когда можно было бы продолжать мониторинг, когда кто-то принял бы нулевую гипотезу и альтернативную гипотезу, это поможет нам определить, является ли SPRT верным путем.
Ответы:
Это интересная проблема, и связанные с ней методы имеют множество применений. Их часто называют стратегиями «временного мониторинга» или «последовательным экспериментальным дизайном» (к сожалению, статья в википедии, на которую вы ссылаетесь, немного скудна), но есть несколько способов сделать это. Я думаю, что @ user27564 ошибается, говоря, что эти анализы обязательно должны быть байесовскими - безусловно, существуют и частые подходы для временного мониторинга.
Подобная логика позволяет найти «точки неизбежности» для других тестов, где:
Возможно, вам будет легко реализовать это - рассчитать критерии остановки в автономном режиме, а затем просто подключить его к коду своего сайта - но зачастую вы можете добиться еще больших результатов, если хотите прекратить эксперимент не только тогда, когда результат неизбежен , но когда это тоже очень вряд ли изменится.
Есть также ряд других подходов. Групповые последовательные методы предназначены для ситуаций, когда вы не сможете получить определенное количество предметов, и предметы будут влиять с переменной скоростью. В зависимости от трафика вашего сайта, вы можете или не захотите посмотреть на это.
Есть довольно много пакетов R, плавающих вокруг CRAN, если это то, что вы используете для своего анализа. Хорошим местом для начала может быть представление задач клинических испытаний , так как большая часть этой работы вышла из этой области.
[*] Просто несколько дружеских советов: будьте осторожны при взгляде на значения значимости, рассчитанные по очень большому количеству точек данных. Как вы собираете все больше и больше данных, вы будете в конечном итоге найти значимый результат, но эффект может быть пренебрежимо мал. Например, если вы спросите всю планету, предпочитают ли они A или B, очень маловероятно, что вы увидите точное разделение 50:50, но, вероятно, не стоит переоснащать ваш продукт, если разделение составляет 50.001: 49.999. Продолжайте проверять размер эффекта (то есть разницу в коэффициентах конверсии) тоже!
источник
Вы можете остановиться рано, но если вы это сделаете, ваши p-значения не легко интерпретируются. Если вас не волнует интерпретация вашего p-значения, то то, каким образом ответ на ваши первые два вопроса «нет», не имеет значения (слишком много). Ваш клиент кажется прагматичным, поэтому истинное толкование p-значения, вероятно, не является той тонкостью, о которой вы заботитесь.
Я не могу говорить о втором подходе, который вы предлагаете.
Тем не менее, первый подход не на твердом основании. Нормальные аппроксимации биномиальных распределений недопустимы для таких низких пропорций (который использует метод power.prop.test, а также метод, использованный Коэном в его классической книге о мощности). Более того, насколько мне известно, не существует решения для анализа мощности в замкнутой форме для тестов пропорции двух выборок (ср. Как можно выполнить анализ биномиальной мощности двух групп без использования нормальных приближений? ). Однако существуют лучшие методы аппроксимации доверительных интервалов пропорций (см. Пакет Пакетный бином). Вы можете использовать неперекрывающиеся доверительные интервалы в качестве частичного решения ... но это не то же самое, что оценка p-значения и, следовательно, не обеспечивает прямой путь к питанию. Я надеюсь, что у кого-то есть хорошее решение для закрытых форм, которым они поделятся с остальными. Если я наткнусь на один, я обновлю вышеупомянутый вопрос. Удачи.
Изменить: Пока я думаю об этом, позвольте мне на минуту прагматично. Ваш клиент хочет, чтобы этот эксперимент закончился, когда он уверен, что экспериментальный сайт работает лучше, чем контрольный сайт. После того, как вы получите достойную выборку, если вы не готовы принять решение, просто начните регулировать отношение вашего случайного назначения к той стороне, которая является «выигрышной». Если это был всего лишь всплеск, регрессия к среднему будет проскальзывать, вы станете менее уверенными и снизите соотношение. Если вы достаточно уверены, позвоните, он уйдет и объявит победителя. Оптимальный подход, вероятно, будет включать байесовское обновление, но я не знаю достаточно об этой теме, чтобы направить вас. Однако я могу заверить вас, что, хотя иногда это может показаться нелогичным, сама математика не так уж сложна.
источник
У вас есть типичные вопросы, возникающие в статистических тестах. Есть две «разновидности» статистики: частый и байесовский. Частый ответ на оба ваших вопроса очень прост:
После того, как вы определили свою настройку, вы не можете даже смотреть на данные (слепой анализ). С частой точки зрения, нет пути назад, нет обмана, нет уловок! (РЕДАКТИРОВАТЬ: Конечно, есть попытки сделать это, и они также будут работать, если используются правильно, но большинство из них, как известно, вносят уклон.)
Но есть и байесовская точка зрения, которая совершенно иная. Байесовский подход, в отличие от специалистов, нуждается в дополнительном входе, априорном распределении вероятностей. Мы можем назвать это также предыдущим знанием или предубеждением. Имея это, мы можем использовать данные / измерения, чтобы обновить наши знания до апостериорной вероятности. Дело в том, что мы можем использовать данные и даже больше, мы можем использовать данные в каждой промежуточной точке измерения. В каждом обновлении последним последним является наш новый априор, и мы можем обновлять его новым измерением, насколько нам известно. Нет проблем с ранней остановкой вообще!
Я нашел доклад, в котором обсуждались довольно похожие проблемы, которые у вас есть, и я описал выше: http://biostat.mc.vanderbilt.edu/wiki/pub/Main/JoAnnAlvarez/BayesianAdaptivePres.pdf
Но кроме этого, ты действительно уверен, что тебе это вообще нужно? Кажется, у вас работает какая-то система, решающая, где связать запрос. Для этого вам не нужно доказывать, что ваши решения верны в статистическом смысле с помощью проверки гипотезы. Вы когда-нибудь покупали кока-колу, потому что вы могли бы исключить, что пепси «сейчас» с вероятностью 95%? Достаточно взять тот, который лучше, не исключая гипотезу. Это был бы тривиальный алгоритм: вычислите неопределенность ставки A, вычислите неопределенность B. Возьмите разницу обеих скоростей и разделите ее на неопределенность разности. Результатом является что-то вроде значимости разницы в сигме. Тогда просто возьмите все ссылки, где есть больше чем две или три сигма-разницы. Минус,
источник
может быть, некоторые методы могут быть использованы как
это отрегулирует отсечение P на основе результатов и поможет вам прекратить сбор данных и экономить ресурсы и время.
может быть, другие работы могут быть добавлены здесь.
источник