Wir untersuchen statistische Tests nach Bayes und stoßen auf ein merkwürdiges (zumindest für mich) Phänomen.
Betrachten Sie den folgenden Fall: Wir sind daran interessiert zu messen, welche Population A oder B eine höhere Conversion-Rate aufweist. Für eine Plausibilitätsprüfung setzen wir , dh die Konversionswahrscheinlichkeit ist in beiden Gruppen gleich. Wir erzeugen künstliche Daten mit einem Binomialmodell, zB
Wir versuchen dann, das Verwendung eines Bayes'schen Beta-Binomial-Modells zu schätzen , sodass wir Posterioren für jede Conversion-Rate erhalten, z. B.
Unsere Teststatistik wird durch Berechnung von S = P ( P A > P B berechnet über Monte Carlo.
Was mich überraschte, war, dass wenn , dann . Meine Gedanken waren, dass es um 0,5 zentriert sein und sogar auf 0,5 konvergieren würde, wenn die Stichprobengröße wächst.
Meine Frage ist, warum ist wenn ?
Hier ist ein Python-Code zur Veranschaulichung:
%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()
quelle
R
Ich entschieden nicht-einheitliche Histogramme für kleine bekommen .Antworten:
TL; DR: Gemische mit Normalverteilungen können bei großen Behältern einheitlich aussehen.
Diese Antwort stammt aus @ whubers Beispielcode (was ich zuerst für einen Fehler hielt, aber im Nachhinein wahrscheinlich für einen Hinweis).
Die zugrunde liegenden Verhältnisse in der Bevölkerung sind gleich:
a = b = 0.5
.Jede Gruppe, A und B beträgt 10000 Mitglieder:
N = 10000
.Wir werden 5000 Replikaten einer Simulation durchzuführen:
for i in range(5000):
.Tatsächlich das , was wir tun , ist a von a s i m u l a t i o n u n d e r l y i n g . In jedem der 5000 Iterationen s ich bin u l a t i o n p r i m e wir tun isimulationprime simulationunderlying simulationprime .simulationunderlying
In jeder Iteration von werden wir eine Zufallszahl von A und B simulieren , die 'Erfolge' (AKA umgewandelt) gegeben sind die gleichen zugrundeliegenden Anteile zuvor definiert: . Normalerweise ergibt dies A = 5000 und B = 5000, aber A und B variieren von Simulationslauf zu Simulationslauf und werden unabhängig und (ungefähr) normal auf die 5000 Simulationsläufe verteilt (wir werden darauf zurückkommen).simulationprime
A = np.random.binomial(N, a); B = np.random.binomial(N, b)
Lassen Sie sich nun Schritt für Schritt durch für eine einzige Iteration s i m u l a t i o n p r i m e , in der A und B gleich viele Erfolge erzielt (wie im Durchschnitt der Fall sein wird). In jeder Iteration von s i m u l a t i o n usimulationunderlying simulationprime werden wir, gegeben A und B erstellen Zufallszahl der BetaVerteilung für jede Gruppe. Dann werden wir sie vergleichen und herausfinden, ob B e t a A > B e t a B ist , was WAHR oder FALSCH (1 oder 0) ergibt. Am Ende eines Laufs vonsimuleinemtio n u n d e r l y i n gsimulationunderlying BetaA>BetaB simulationunderlying haben wir 15000 Iterationen abgeschlossen und 15000 TRUE / FALSE-Werte. Der Durchschnitt dieser einen einzigen Wert aus dem (ungefähr normal) Stichprobenverteilung des Anteils der Fließ .BetaA>BetaB
Aber jetzt wird ausgewählt 5000 A und B - Werte. A und B werden selten exakt gleich sein, aber die typischen Unterschiede in der Anzahl der A- und B-Erfolge werden durch die Gesamtstichprobengröße von A und B in den Schatten gestellt. Typische As und Bs ergeben aus ihrer Stichprobenverteilung der Anteile von B e mehr Zugkraft t a A > B e t ein B , sondern auch erhalten diejenigen an den Rändern der A / B - Verteilung gezogen.simulationprime BetaA>BetaB
Also, was im Grunde ziehen wir über viele SIM - Läufe ist eine Kombination aus Stichprobenverteilungen von für Kombinationen von A und B (mit mehr Zügen aus den Stichprobenverteilungen aus den gemeinsamen Werten von A und B als die ungewöhnlichen Werte von A und B). Dies führt zu Gemischen normaler Verteilungen. Wenn Sie sie über eine kleine Bin-Größe kombinieren (wie es die Standardeinstellung für die verwendete Histogrammfunktion ist, die direkt in Ihrem ursprünglichen Code angegeben wurde), erhalten Sie etwas, das wie eine gleichmäßige Verteilung aussieht.BetaA>BetaB
Erwägen:
quelle
rbinom
, which returns a vector. The subsequent call torbeta
insidereplicate
is vectorized, so the inner (internal) loop is using a differentNSIM = 10000
). See?rbeta
for more. This differs from @Cam's code with has a single fixedreplicate
) loops.To get some intuition for what is going on, let us feel free to makeN very large and in so doing ignore O(1/N) behavior and exploit asymptotic theorems that state both Beta and Binomial distributions become approximately Normal. (With some trouble, all this can be made rigorous.) When we do this, the result emerges from a specific relationship among the various parameters.
Because we plan to use Normal approximations we will pay attention to the expectations and variances of the variables:
As Binomial(N,p) variates, nA and nB have expectations of pN and variances of p(1−p)N . Consequently α=nA/N and β=nB/N have expectations of p and variance p(1−p)/N .
As a Beta(nA+1,N+1−nA) variate, PA has an expectation of (nA+1)/(N+2) and a variance of (nA+1)(N+1−nA)/[(N+2)2(N+3)] . Approximating, we find that PA has an expectation of
and a variance of
with similar results forPB .
Let us therefore approximate the distributions ofPA and PB with Normal(α,α(1−α)/N) and Normal(β,β(1−β)/N) distributions (where the second parameter designates the variance). The distribution of PA−PB consequently is approximately Normal; to wit,
For very largeN , the expression α(1−α)+β(1−β) will not vary appreciably from p(1−p)+p(1−p)=2p(1−p) except with very low probability (another neglected O(1/N) term). Accordingly, letting Φ be the standard normal CDF,
But sinceα−β has zero mean and variance 2p(1−p)/N, Z=α−β2p(1−p)/N√ is a standard Normal variate (at least approximately). Φ is its probability integral transform; Φ(Z) is uniform.
quelle