A / B-тесты, которые просто тестируют повторно одни и те же данные с фиксированным уровнем ошибки ( ) типа 1 , в корне ошибочны. Есть как минимум две причины, почему это так. Во-первых, повторные тесты коррелируют, но тесты проводятся независимо. Во-вторых, фиксированная не учитывает многократно проводимые тесты, приводящие к увеличению ошибки типа 1.αα
Чтобы увидеть первое, предположим, что при каждом новом наблюдении вы проводите новый тест. Ясно, что любые два последующих значения р будут коррелироваться, потому что случаи не изменились между двумя тестами. Следовательно, мы видим тенденцию на графике @ Bernhard, демонстрирующую эту корреляцию p-значений.n−1
Чтобы увидеть , во - вторых, следует отметить , что даже тогда , когда испытания независимы, вероятность того , чтобы иметь р-величину ниже увеличивается с увеличением числа испытаний где является событие ложно отвергнутой нулевой гипотезы. Таким образом, вероятность получить хотя бы один положительный результат теста будет против как если бы вы неоднократно проходили 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")