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.n−1
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
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")