Почему неправильно останавливать тестирование A / B до достижения оптимального размера выборки?


13

Я отвечаю за представление результатов A / B-тестов (на разных сайтах) в моей компании. Мы запускаем тест в течение месяца, а затем регулярно проверяем p-значения до тех пор, пока не достигнем значимости (или откажемся, если значимость не будет достигнута после длительного выполнения теста), что я сейчас выясняю, что это ошибочная практика .

Я хочу прекратить эту практику сейчас, но для этого я хочу понять, ПОЧЕМУ это неправильно. Я понимаю, что размер эффекта, размер выборки (N), критерий альфа-значимости (α) и статистическая мощность или выбранная или подразумеваемая бета (β) связаны математически. Но что именно изменится, когда мы остановим наш тест, прежде чем достигнем необходимого размера выборки?

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

Например, преждевременная остановка теста увеличивает частоту ошибок типа 1. Хорошо. Но почему? Что происходит с увеличением частоты ошибок типа 1? Мне не хватает интуиции здесь.

Помогите, пожалуйста.


1
может быть полезным evanmiller.org/how-not-to-run-an-ab-test.html
seanv507

1
Да, я прошел по этой ссылке, но я просто не понял приведенный пример.
СГК

извини, Гопалакришнан - не видел, что твоя первая ссылка уже указала на это.
seanv507

1
Можете ли вы объяснить, что вы не понимаете. Математика / интуиция кажутся довольно ясными: их не столько останавливают до требуемого размера выборки, сколько проверяют. , поэтому вы не можете использовать тест, разработанный для одиночных проверок несколько раз. P(i1Nxi>θ)P(xN>θ)
seanv507

Математическое объяснение @GopalakrishnanShanker дано в моем ответе
томка

Ответы:


4

A / B-тесты, которые просто тестируют повторно одни и те же данные с фиксированным уровнем ошибки ( ) типа 1 , в корне ошибочны. Есть как минимум две причины, почему это так. Во-первых, повторные тесты коррелируют, но тесты проводятся независимо. Во-вторых, фиксированная не учитывает многократно проводимые тесты, приводящие к увеличению ошибки типа 1.αα

Чтобы увидеть первое, предположим, что при каждом новом наблюдении вы проводите новый тест. Ясно, что любые два последующих значения р будут коррелироваться, потому что случаи не изменились между двумя тестами. Следовательно, мы видим тенденцию на графике @ Bernhard, демонстрирующую эту корреляцию p-значений.n1

Чтобы увидеть , во - вторых, следует отметить , что даже тогда , когда испытания независимы, вероятность того , чтобы иметь р-величину ниже увеличивается с увеличением числа испытаний где является событие ложно отвергнутой нулевой гипотезы. Таким образом, вероятность получить хотя бы один положительный результат теста будет против как если бы вы неоднократно проходили a / b тестирование. Если вы просто остановитесь после первого положительного результата, вы только покажете правильность этой формулы. Иными словами, даже если нулевая гипотеза верна, вы в конечном итоге отвергнете ее. Таким образом, a / b-тест является наилучшим способом нахождения эффектов там, где их нет.αt

P(A)=1(1α)t,
A1

Поскольку в этой ситуации и корреляция, и множественное тестирование выполняются одновременно, p-значение теста зависит от p-значения . Так что если вы наконец достигнете , вы, вероятно, останетесь в этом регионе на некоторое время. Вы также можете увидеть это на графике @ Bernhard в области от 2500 до 3500 и от 4000 до 5000.t+1tp<α

Многократное тестирование само по себе является законным, а тестирование с фиксированной - нет. Существует множество процедур, которые касаются как процедуры множественного тестирования, так и коррелированных испытаний. Одно семейство тестовых исправлений называется семейным контролем частоты ошибок . Что они делают, чтобы заверитьα

P(A)α.

Возможно, самая известная настройка (из-за своей простоты) - это Bonferroni. Здесь мы устанавливаем для которого легко показать, что если число независимых тестов велико. Если тесты коррелируют, это, вероятно, будет консервативным, . Таким образом, самая простая настройка, которую вы можете сделать, это разделить ваш альфа-уровень на на количество тестов, которые вы уже сделали.P ( A ) α P ( A ) < α 0,05

αadj=α/t,
P(A)αP(A)<α0.05

Если мы применим Bonferroni к симуляции @ Bernhard и интервал по оси Y, мы увидим график ниже. Для ясности я предположил, что мы не проверяем после каждого броска монеты (проба), а только каждую сотую. Черная пунктирная линия - это стандартное отрезание а красная пунктирная линия - корректировка Бонферрони.α = 0,05(0,0.1)α=0.05

введите описание изображения здесь

Как мы видим, корректировка очень эффективна и демонстрирует, насколько радикально мы должны изменить значение p, чтобы контролировать частоту ошибок по семьям. В частности, сейчас мы больше не находим значимого теста, как и должно быть, потому что нулевая гипотеза @ Berhard верна.

Сделав это, отметим, что Бонферрони очень консервативен в этой ситуации из-за коррелированных тестов. Существуют превосходные тесты, которые будут более полезными в этой ситуации в смысле наличия , такие как тест на перестановку . Кроме того, о тестировании можно сказать гораздо больше, чем просто сослаться на Бонферрони (например, посмотреть уровень ложных открытий и связанные с ним байесовские методы). Тем не менее это отвечает на ваши вопросы с минимальным количеством математики.P(A)α


Вот код:

set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)

p.values <- numeric(n)
for (i in 5:n){
  p.values[i] <- binom.test(table(toss[1:i]))$p.value
}
p.values = p.values[-(1:6)]
plot(p.values[seq(1, length(p.values), 100)], type="l", ylim=c(0,0.1),ylab='p-values')
abline(h=0.05, lty="dashed")
abline(v=0)
abline(h=0)
curve(0.05/x,add=TRUE, col="red", lty="dashed")

2
Это работает для меня. Мне придется перевести это на деловой разговор, чтобы донести свою точку зрения до моих старших, но это моя собственная проблема. Большое спасибо
sgk

8

Если нулевая гипотеза верна, то люди часто ожидают, что значение p будет очень высоким. Это неправда. Если нулевая гипотеза верна, то p является равномерно распределенной случайной величиной. Это означает, что время от времени будет случайным образом ниже 0,05. Если вы посмотрите на множество различных подвыборок, иногда значение p будет ниже 0,05.

Чтобы это было легче понять, вот небольшая симуляция в R:

Это бросит монету 10000 раз, и мы знаем, что это справедливая монета:

set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)

Начиная с 5-го броска, он будет выполнять биномиальный тест на справедливость после каждого броска и сохранять значения p:

p.values <- numeric(n)
for (i in 5:n){
     p.values[i] <- binom.test(table(toss[1:i]))$p.value
}

И это будет строить p-значения одно за другим:

plot(p.values, type="l")
abline(h=0.05)

введите описание изображения здесь

Как вы можете видеть, значение p несколько раз падает ниже 0,05, чтобы восстановиться, и в конечном итоге оказывается намного выше p = 0,05. Если бы мы остановили испытание в любое время, когда р было «значимым», мы бы пришли к неверному выводу. Кто-то может возразить: «У нас есть выборка из более чем 4000 испытаний, и р был ниже 0,05. Несомненно, мы можем прекратить выборку дальше». Чем чаще вы проверяете значение p, тем больше вероятность, что вы проверите случайное падение. В этом случае мы сгенерировали данные под и знаем, что истинно.H 0H0H0

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


Спасибо за простой эксперимент. Но, скажем, я остановил тест на одном из таких этапов (когда значение р <0,05), что будут означать мои результаты? (кроме того, что это неправильно). Можно ли компенсировать это, уменьшив пороговое значение p?
СГК

+1 Обратите внимание на коррелированные тесты и связанную проблему множественного тестирования. Смотрите мой расширенный ответ с вариантами настройки ниже, основываясь на вашем (очень хорошем) примере.
Томка

Вы не можете компенсировать это, уменьшив пороговое значение p . Выбор всегда является компромиссом в области конфликта между ошибкой типа I и ошибкой типа II, также известной как альфа-ошибка и бета-ошибка. Конечно, вы можете компенсировать одну из них полностью или каждую из них частично, но, в конце концов, этот конфликт становится все труднее, чем чаще вы тестируете. Я читал, что байсианцы утверждают, что у них меньше проблем с этим, но с небольшими знаниями я думаю, что это справедливо только для моделирования веры в ценность статистики, а не в решениях да / нет. ααα
Бернхард

Моя главная мысль заключается в том, чтобы контролировать частоту ошибок по семейным ошибкам (FWER) или частоту ложных обнаружений (FDR), нацеливаясь на ошибку типа 1. Контроль ошибок типа 2 не так важен в тестах a / b из-за очень больших выборок.
Томка

@GopalakrishnanShanker, если вы остановились на первом это означает, что у вас ложный положительный результат. Смотрите ответ ниже, также для корректировкиp=0.05
Tomka
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.