Badamy bayesowskie testy statystyczne i natrafiliśmy na dziwne (przynajmniej dla mnie) zjawisko.
Rozważ następujący przypadek: interesuje nas pomiar, która populacja, A lub B, ma wyższy współczynnik konwersji. Dla kontroli poczytalności ustawiamy , to znaczy prawdopodobieństwo konwersji jest równe w obu grupach. Generujemy sztuczne dane przy użyciu modelu dwumianowego, np.
Następnie próbujemy oszacować za pomocą bayesowskiego modelu dwumianowego beta, aby uzyskać tylne współczynniki dla każdego współczynnika konwersji, np.
Nasza statystyka testowa jest obliczana przez obliczenie za pomocą Monte Carlo.
Zaskoczyło mnie to, że jeśli , to . Myślałem, że będzie on wyśrodkowany wokół 0,5, a nawet zbiegnie się do 0,5 w miarę wzrostu wielkości próbki, ,.
Moje pytanie brzmi: dlaczego kiedy ?
Oto kod Python do zademonstrowania:
%pylab
from scipy.stats import beta
import numpy as np
import pylab as P
a = b = 0.5
N = 10000
samples = [] #collects the values of S
for i in range(5000):
assert a==b
A = np.random.binomial(N, a); B = np.random.binomial(N, b)
S = (beta.rvs(A+1, N-A+1, size=15000) > beta.rvs(B+1, N-B+1, size=15000)).mean()
samples.append(S)
P.hist(samples)
P.show()
źródło
R
Odpowiedzi:
TL; DR: Mieszaniny normalnych rozkładów mogą wyglądać jednolicie, gdy rozmiary pojemników są duże.
Ta odpowiedź zapożycza z przykładowego kodu @ Whuber (który, jak sądzę, był początkowo błędem, ale z perspektywy czasu prawdopodobnie był wskazówką).
Bazowe proporcje w populacji są równe:
a = b = 0.5
.Każda z grup A i B ma 10000 członków:
N = 10000
.Mamy zamiar przeprowadzić 5000 powtórzeń symulacji:
for i in range(5000):
.Właściwie to, co robimy, to z . W każdej z 5000 iteracji zrobimy . s i m u l a t i o n u n d e r l y i n g s i m u l a t i o n p r i m e s I m u ł a t i o n usimulationprime simulationunderlying simulationprime simulationunderlying
W każdej iteracji my symulować liczbę losową A i B, które są „osiągnięcia” (czyli przekształcone) podane równe proporcje bazowe zdefiniowane wcześniej: . Nominalnie da to A = 5000 i B = 5000, ale A i B różnią się w zależności od przebiegu karty SIM i są rozdzielone na 5000 przebiegów symulacji niezależnie i (w przybliżeniu) normalnie (do tego wrócimy).simulationprime
A = np.random.binomial(N, a); B = np.random.binomial(N, b)
Przejdźmy teraz przez dla pojedynczej iteracji w której A i B odniosły taką samą liczbę sukcesów (co będzie średnią w przypadku). W każdej iteracji będziemy, biorąc pod uwagę A i B, tworzyć losowe warianty rozkładu beta dla każdej grupy. Następnie porównamy je i dowiemy się, czy , dając wartość PRAWDA lub FAŁSZ (1 lub 0). Pod koniec serii zakończyliśmy 15000 iteracji i otrzymaliśmy 15000 wartości PRAWDA / FAŁSZ. Średnia z nich da pojedynczą wartość z (w przybliżeniu normalnego) rozkładu próbkowania proporcji s i m U L t i o n s r i m e s I m u ł a t i o n u n d e r l y i n g B E t a A >simulationunderlying simulationprime s i m u l a t i o nu n d e r l y i n g simulatio n u n d e r l y i n g B E t a A > B e t a BBetaA>BetaB simulationunderlying BetaA>BetaB .
Z wyjątkiem teraz wybierze 5000 wartości A i B. A i B rzadko są dokładnie równe, ale typowe różnice w liczbie sukcesów A i B są zmniejszone przez całkowitą wielkość próby A i B. Typowe As i Bs przyniosą więcej ściągnięć z ich rozkładu próbkowania proporcji , ale te na krawędziach dystrybucji A / B również zostaną pociągnięte.B e t a A > B e t a Bsimulationprime BetaA>BetaB
Tak więc, w zasadzie wyciągamy wiele przebiegów SIM, jest to kombinacja rozkładów próbkowania dla kombinacji A i B (z większą ilością ściągnięć z rozkładów próbkowania wykonanych ze wspólnych wartości A i B niż nietypowe wartości A i B). Daje to w wyniku mieszaniny rozkładów normalnych. Kiedy połączysz je w małym pojemniku (co jest domyślną funkcją histogramu, której użyłeś i która została określona bezpośrednio w oryginalnym kodzie), otrzymujesz coś, co wygląda jak jednolity rozkład.BetaA>BetaB
Rozważać:
źródło
rbinom
, które zwracają wektor. Późniejsze wywołanie dorbeta
wewnątrzreplicate
jest wektoryzowane, więc wewnętrzna (wewnętrzna) pętla używa różnych i B dla każdej z 15000 wygenerowanych zmiennych losowych (owija się wokół końcowych 5000 od twojego ). Zobacz więcej. Różni się od kodu @ Cam tym, że ma jeden stały A i B używany we wszystkich 15000 wywołań losowych dla każdej z 5000 pętli próbkowania ( ).NSIM = 10000
?rbeta
replicate
Aby uzyskać intuicję w tym, co się dzieje, nie krępujmy się, aby bardzo duży, a tym samym ignorując zachowanie O ( 1 / N ) i wykorzystując asymptotyczne twierdzenia, które stwierdzają, że zarówno rozkład beta, jak i dwumianowy stają się w przybliżeniu normalne. (Przy pewnym problemie wszystko to można uczynić rygorystycznym.) Kiedy to robimy, wynik wyłania się z określonej zależności między różnymi parametrami.N. O(1/N)
Ponieważ planujemy stosować przybliżenia normalne, zwrócimy uwagę na oczekiwania i wariancje zmiennych:
Jako dwumianowego zmiennych towarzyszących, n i n B mają oczekiwania p N a wariancje p ( 1 - p ) N . W związku z tym α = n / N i β = N B / N mieć oczekiwania p i wariancji p ( 1 - p ) / N .(N, p ) nZA nb pN p(1−p)N α=nA/N β=nB/N p p(1−p)/N
Ponieważ zmienia się Beta , P A ma oczekiwane ( n A + 1 ) / ( N + 2 ) i wariancję ( n A + 1 ) ( N + 1 - n A ) / [ ( N + 2 ) 2 ( N + 3)(nA+1,N+1−nA) PA (nA+1)/(N+2) . Przybliżając, stwierdzamy, że P A ma oczekiwania(nA+1)(N+1−nA)/[(N+2)2(N+3)] PA
i wariant
z podobnymi wynikami dla .PB
Niech się więc w przybliżeniu rozkładów i P B z normalnymi ( alfa , alfa ( 1 - alfa ) / N ) i Normal ( β , β ( 1 - P ) / N ) dystrybucji (gdzie drugi parametr wyznacza odchylenie ) . W związku z tym rozkład P A - P B jest w przybliżeniu normalny; dowcipPA PB (α,α(1−α)/N) (β,β(1−β)/N) PA−PB
W przypadku bardzo dużego wyrażenie α ( 1 - α ) + β ( 1 - β ) nie różni się znacznie od p ( 1 - p ) + p ( 1 - p ) = 2 p ( 1 - p ), z wyjątkiem bardzo niskiej prawdopodobieństwo (inny niedoceniany termin O ( 1 / N ) ). Odpowiednio, pozwalając Φ być standardowym normalnym CDF,N α(1−α)+β(1−β) p(1−p)+p(1−p)=2p(1−p) O(1/N) Φ
Ale ponieważ ma zerową średnią i wariancję 2 p ( 1 - p ) / N , Z = α - βα−β 2p(1−p)/N, Z=α−β2p(1−p)/N√ Φ Φ(Z)
źródło