Dlaczego źle jest zatrzymać test A / B przed osiągnięciem optymalnej wielkości próbki?

13

Jestem odpowiedzialny za prezentowanie wyników testów A / B (przeprowadzanych na różnych stronach internetowych) w mojej firmie. Test przeprowadzamy przez miesiąc, a następnie sprawdzamy wartości p w regularnych odstępach czasu, aż osiągniemy istotność (lub porzucimy, jeśli istotność nie zostanie osiągnięta po długim czasie testowania), coś, co teraz dowiaduję się, jest błędną praktyką .

Chcę teraz zatrzymać tę praktykę, ale aby to zrobić, chcę zrozumieć DLACZEGO to jest złe. I rozumieć , że wielkość efektu, wielkość próbki (N), kryterium alfa istotności (α) i mocy statystycznej lub wybrany lub domniemanej beta (β) są powiązane matematycznie. Ale co dokładnie się zmienia, gdy zatrzymamy nasz test, zanim osiągniemy wymagany rozmiar próbki?

Przeczytałem tutaj kilka postów (a mianowicie to , to i to ) i mówią mi, że moje szacunki byłyby stronnicze, a wskaźnik mojego błędu typu 1 dramatycznie rośnie. Ale jak to się dzieje? Szukam matematycznego wyjaśnienia , czegoś, co wyraźnie pokazałoby wpływ wielkości próby na wyniki. Wydaje mi się, że ma to coś wspólnego ze związkami między czynnikami, o których wspomniałem powyżej, ale nie byłem w stanie znaleźć dokładnych formuł i samodzielnie je opracować.

Na przykład, przedwczesne zatrzymanie testu zwiększa poziom błędu typu 1. W porządku. Ale dlaczego? Co się dzieje, aby zwiększyć poziom błędu typu 1? Brakuje mi tutaj intuicji.

Prosimy o pomoc.

sgk
źródło
1
może być przydatne evanmiller.org/how-not-to-run-an-ab-test.html
seanv507
1
Tak, przejrzałem ten link, ale po prostu nie zrozumiałem podanego przykładu.
sgk
przepraszam Gopalakrishnan - nie widziałem, że twój pierwszy link już to wskazywał.
seanv507
1
Czy możesz wyjaśnić to, czego nie rozumiesz. Matematyka / intuicja wydaje się dość jasna: nie tyle zatrzymuje się przed wymaganą wielkością próbki, ale wielokrotnie sprawdza. , więc nie można użyć testu zaprojektowanego dla pojedynczych kontroli wiele razy. P(i1Nxi>θ)P(xN>θ)
seanv507
@GopalakrishnanShanker wyjaśnienia matematyczne podane w mojej odpowiedzi
tomka

Odpowiedzi:

4

Testy A / B, które po prostu testują wielokrotnie te same dane ze stałym poziomem błędu typu 1 ( ), są zasadniczo wadliwe. Są co najmniej dwa powody, dla których tak jest. Po pierwsze, powtarzane testy są skorelowane, ale testy są przeprowadzane niezależnie. Po drugie, stała nie uwzględnia wielokrotnie przeprowadzonych testów prowadzących do inflacji błędu typu 1.αα

Aby zobaczyć pierwsze, załóż, że przy każdej nowej obserwacji przeprowadzasz nowy test. Oczywiście wszelkie dwie kolejne wartości p będą skorelowane, ponieważ przypadki nie zmieniły się między dwoma testami. W związku z tym widzimy trend w wykresie @ Bernharda pokazujący tę korelację wartości p.n1

Aby zobaczyć drugi, zauważamy, że nawet gdy testy są niezależne, prawdopodobieństwo posiadania wartości p poniżej wzrasta wraz z liczbą testów gdzie jest zdarzenie fałszywie odrzuconej hipotezy zerowej. Zatem prawdopodobieństwo uzyskania co najmniej jednego pozytywnego wyniku testu jest sprzeczne z gdy wielokrotnie testujesz a / b. Jeśli po prostu zatrzymasz się po pierwszym pozytywnym wyniku, pokażesz tylko poprawność tej formuły. Mówiąc inaczej, nawet jeśli hipoteza zerowa jest prawdziwa, ostatecznie ją odrzucisz. Test a / b jest zatem najlepszym sposobem na znalezienie efektów tam, gdzie ich nie ma.αt

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

Ponieważ w tej sytuacji zarówno korelacja, jak i testowanie wielokrotne utrzymują się jednocześnie, wartość p testu zależy od wartości p . Więc jeśli w końcu osiągniesz , prawdopodobnie pozostaniesz w tym regionie przez jakiś czas. Możesz to również zobaczyć na działce @ Bernharda w regionie od 2500 do 3500 i od 4000 do 5000.t+1tp<α

Wielokrotne testowanie samo w sobie jest uzasadnione, ale testowanie na stałym nie jest. Istnieje wiele procedur, które dotyczą zarówno procedury wielokrotnego testowania, jak i testów skorelowanych. Jedna rodzina poprawek testowych nazywana jest rodzinną kontrolą poziomu błędu . To, co robią, to zapewnienieα

P(A)α.

Prawdopodobnie najbardziej znanym dostosowaniem (ze względu na swoją prostotę) jest Bonferroni. Tutaj ustawiamy dla których łatwo można wykazać, że jeśli liczba niezależnych testów jest duża. Jeśli testy są skorelowane, prawdopodobnie będzie zachowawcze, . Najłatwiejszą korektą jest podzielenie poziomu alfa przez liczbę testów, które już wykonałeś.P ( A ) α P ( A ) < α

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

Jeśli zastosujemy Bonferroniego do symulacji @ Bernharda i powiększymy odstęp na osi y, znajdziemy wykres poniżej. Dla jasności założyłem, że nie testujemy po każdym rzucie monetą (próba), ale tylko co setny. Czarna linia przerywana to standardowe a czerwona linia przerywana to dostosowanie Bonferroniego.α = 0,05(0,0.1)α=0.05

wprowadź opis zdjęcia tutaj

Jak widzimy, dostosowanie jest bardzo skuteczne i pokazuje, jak radykalnie musimy zmienić wartość p, aby kontrolować rodzinny wskaźnik błędów. W szczególności nie znajdujemy już żadnych istotnych testów, jak powinno być, ponieważ hipoteza zerowa @ Berharda jest prawdziwa.

Po wykonaniu tej czynności zauważamy, że Bonferroni jest w tej sytuacji bardzo konserwatywny ze względu na skorelowane testy. Istnieją lepsze testy, które będą bardziej przydatne w tej sytuacji w sensie posiadania , takie jak test permutacji . Także o testowaniu można powiedzieć znacznie więcej niż tylko powoływanie się na Bonferroniego (np. Sprawdź częstotliwość fałszywych odkryć i powiązane techniki bayesowskie). Niemniej jednak odpowiada to na twoje pytania przy minimalnej ilości matematyki.P(A)α


Oto kod:

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")
tomka
źródło
2
To działa dla mnie. Będę musiał przetłumaczyć to na mowę biznesową, aby przekazać swój punkt teraz moim seniorom, ale to mój własny problem. Dziękuję bardzo
sgk
8

Jeśli hipoteza zerowa jest prawdziwa, ludzie często oczekują, że wartość p będzie bardzo wysoka. To nie jest prawda. Jeśli hipoteza zerowa jest prawdziwa, to p jest równomiernie rozmieszczoną zmienną losową. Oznacza to, że od czasu do czasu będzie losowo poniżej 0,05. Jeśli spojrzysz na wiele różnych podprób, czasami wartość p będzie mniejsza niż 0,05.

Aby ułatwić zrozumienie, oto mała symulacja w R:

Wyrzuci to monetę 10 000 razy i wiemy, że jest to uczciwa moneta:

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

Począwszy od piątego rzutu, po każdym rzucie wykona się dwumianowy test uczciwości i zapisze wartości p:

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

Spowoduje to wykreślenie wartości p jedna po drugiej:

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

wprowadź opis zdjęcia tutaj

Jak widać, wartość p spada kilkakrotnie poniżej 0,05 tylko po to, aby się zregenerować i ostatecznie kończy się znacznie powyżej p = 0,05. Gdybyśmy przerwali proces w dowolnym momencie, gdy p był „znaczący”, doszlibyśmy do błędnego wniosku. Można by argumentować: „Mamy próbkę około 4000 prób iid, a p było poniżej 0,05. Na pewno możemy przestać próbować dalej”. Im częściej sprawdzasz wartość p, tym bardziej prawdopodobne jest, że sprawdzisz losowo. W tym przypadku wygenerowaliśmy dane pod i wiemy, że jest prawdą.H 0H0H0

(Żeby być idealnie otwartym, próbowałem więcej niż jednego źródła dla generatora liczb, zanim było to tak jasne jak w tym przykładzie, ale jest to uczciwe do celów edukacyjnych. Jeśli masz Rzainstalowany i uruchomiony, możesz łatwo grać liczbami .)

Bernhard
źródło
Dzięki za prosty eksperyment. Ale powiedzmy, że zatrzymałem test na jednym z takich etapów (kiedy wartość p <0,05), co będą oznaczać moje wyniki? (poza faktem, że jest źle). Czy mogę to zrekompensować, zmniejszając próg wartości p?
sgk
+1 Zwróć uwagę na skorelowane testy i związany z nimi problem wielokrotnego testowania. Zobacz moją rozszerzoną odpowiedź z opcjami dostosowania poniżej, na podstawie (bardzo dobrego) przykładu.
tomka
Nie można tego całkowicie zrekompensować, zmniejszając próg wartości p . Wybór jest zawsze kompromisem w obszarze konfliktu między błędem typu I a błędem typu II, znanym również jako błąd alfa i błąd beta. Oczywiście możesz zrekompensować jeden z nich całkowicie lub częściowo częściowo, ale w końcu ten konflikt staje się coraz trudniejszy, im częściej testujesz. Czytałem, że Baysians twierdzą, że mają z tym mniejszy problem, ale przy małej wiedzy myślę, że dotyczy to jedynie modelowania wiary w wartość statystyki, a nie w decyzje tak / nie. ααα
Bernhard,
Moim głównym celem jest kontrolowanie wskaźnika błędu rodzinnego (FWER) lub wskaźnika fałszywego wykrywania (FDR), zarówno w przypadku błędu typu 1. Kontrolowanie błędu typu 2 nie stanowi większego problemu w testach A / B ze względu na zwykle bardzo duże próbki.
tomka
@GopalakrishnanShanker, jeśli zatrzymałeś się przy pierwszym , oznacza to, że masz fałszywie dodatni. Zobacz odpowiedź poniżej, również w sprawie korektyp=0.05
tomka