@wolfies Kommentar, und mein Versuch, darauf zu antworten, ergab ein wichtiges Problem mit meiner anderen Antwort, auf die ich später eingehen werde.
Sonderfall (n = 16)
Es gibt eine ziemlich effiziente Möglichkeit, die vollständige Verteilung zu codieren, indem der "Trick" verwendet wird, bei der Berechnung Zahlen zur Basis 2 (binär) zu verwenden. Es erfordert nur 4 Zeilen R Code die vollständige Verteilung zu erhalten wobei P r ( Z i = 1 ) = p i . Grundsätzlich gibt es insgesamt 2 n Möglichkeiten des Vektors z = ( z 1 , … , z n ) , den die binären Variablen Z i habenY=∑ni=1ZiPr(Zi=1)=pi2nz=(z1,…,zn)Zinehmen könnte. Nehmen wir nun an, wir nummerieren jede einzelne Auswahl von bis 2 n . Dies ist für sich genommen nichts Besonderes, aber nun nehmen wir an, dass wir die "Auswahlzahl" mit der Basis 2-Arithmetik darstellen. Nehmen Sie jetzt n = 3, damit ich alle Auswahlmöglichkeiten aufschreiben kann, sodass es 2 3 = 8 Auswahlmöglichkeiten gibt. Dann wird 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 in "gewöhnlichen Zahlen" zu 1 , 10 , 11 , 100 , 10112nn=323=81,2,3,4,5,6,7,8 in "Binärzahlen". Nehmen wir nun an, wir schreiben diese als vierstellige Zahlen, dann haben wir 0001 , 0010 , 0011 , 0100 , 0101 , 0110 , 0111 , 1000 . Schauen Sie sich nun die letzten 3 Ziffern jeder Zahl an - 001 kann man sich vorstellen als ( Z 1 = 0 , Z 2 = 0 , Z 3 = 1 )1,10,11,100,101,110,111,10000001,0010,0011,0100,0101,0110,0111,10003001 usw. Das Zählen in binärer Form bietet eine effiziente Möglichkeit, die Summierung zu organisieren. Glücklicherweise gibt es eine R-Funktion, die diese Binärkonvertierung für uns durchführen kann. Sie heißtund wir konvertieren die rohe Binärform in ein numerisches Via. Dann erhalten wir einen Vektor mit 32 Elementen, wobei jedes Element die Ziffer der Basis 2-Version von ist unsere Nummer (von rechts nach links gelesen, nicht von links nach rechts). Mit diesem Trick in Kombination mit einigen anderen R-Vektorisierungen können wir die Wahrscheinlichkeit von y = 9 in 4 Zeilen R-Codeberechnen:(Z1=0,Z2=0,Z3=1)⟹Y=1intToBits(x)
as.numeric(intToBits(x))
32y=9
exact_calc <- function(y,p){
n <- length(p)
z <- t(matrix(as.numeric(intToBits(1:2^n)),ncol=2^n))[,1:n] #don't need columns n+1,...,32 as these are always 0
pz <- z%*%log(p/(1-p))+sum(log(1-p))
ydist <- rowsum(exp(pz),rowSums(z))
return(ydist[y+1])
}
Einstecken des Uniformgehäuses und der Quadratwurzel-Fallp ( 2 ) i = √p(1)i=i17 ergibt eine vollständige Verteilung für y als:p(2)i=i√17
y012345678910111213141516Pr ( Y= y| pich= i17)0,00000,00000,00030,00260,01390,04910,11810,19830,23530,19830,11810,04910,01390,00260,00030,00000,0000Pr ( Y= y| pich= i√17)0,05580,17840,26520,24300,15360,07100,02480,00670,00140,00020,00000,00000,00000,00000,00000,00000,0000
So für das spezifische Problem der Erfolge in 16 Studien, sind die genauen Berechnungen direkt. Dies funktioniert auch für eine Reihe von Wahrscheinlichkeiten bis zu etwa n = 20 - darüber hinaus treten wahrscheinlich Speicherprobleme auf, und es sind verschiedene Computertricks erforderlich.y16n = 20
Man beachte, dass durch Anwenden meiner vorgeschlagenen "Beta-Verteilung" Parameterschätzungen von und dies eine Wahrscheinlichkeitsschätzung ergibt, die in y nahezu einheitlich ist , was einen ungefähren Wert von p r ( y = 9 ) = 0,06799 ≈ 1 ergibtα = β= 1,3206y . Dies erscheint merkwürdig, da eine Dichte einer Beta-Verteilung mitα=β=1,3206dem Histogramm derpi-Werte sehr nahe kommt. Was schief gelaufen ist?p r ( y= 9 ) = 0,06799 ≈ 117α = β= 1,3206pich
Allgemeiner Fall
Ich werde nun den allgemeineren Fall diskutieren und erläutern, warum meine einfache Beta-Approximation fehlgeschlagen ist. Grundsätzlich durch Schreiben und dann Mischen über P mit einer anderen Verteilung p ~ f ( θ ) ist tatsächlich eine wichtige Annahme, - dass wir die tatsächliche Wahrscheinlichkeit approximieren mit einer einzigen Binomialwahrscheinlichkeit - das einzige verbleibende Problem ist, welcher Wert von p( y|n,p)∼Binom(n,p)pp∼f(θ)pbenutzen. Eine Möglichkeit, dies zu sehen, besteht darin, die Mischungsdichte zu verwenden, die über den tatsächlichen diskret gleichförmig ist . So wir die Beta - Verteilung ersetzen p ~ B e t a ( a , b ) mit einer Dichte von diskreter p ~ Σ 16 i = 1 w i δ ( p - p i ) . Dann kann die Verwendung der Mischungsnäherung in Worten ausgedrückt werden, indem ein p i -Wert mit der Wahrscheinlichkeit w i gewählt wirdpip∼Beta(a,b)p∼∑16i=1wiδ(p−pi)piwiund nehmen an, dass alle Bernoulli-Versuche diese Wahrscheinlichkeit haben . Damit eine solche Annäherung gut funktioniert, sollten die meisten -Werte einander ähnlich sein. Dies bedeutet im Grunde, dass für @wolfies gleichmäßige Werteverteilung p i = i istpi führt bei Verwendung der Beta-Mischungsverteilung zu einer äußerst schlechten Näherung. Dies erklärt auch, warum die Approximation fürpi= √ viel besser istpi=i17 - sie sind weniger ausgebreitet.pi=i√17
Das Mischen verwendet dann das beobachtete um über alle möglichen Auswahlen eines einzelnen p zu mitteln . Jetzt, da "Mischen" wie ein gewichteter Durchschnitt ist, kann es unmöglich besser sein, als das einfach beste p zu verwenden . Wenn also die p i ausreichend verteilt sind, kann es kein einzelnes p geben, das eine gute Annäherung an alle p i liefern könnte .pi pppippi
Eine Sache, die ich in meiner anderen Antwort gesagt habe, war, dass es vielleicht besser ist, eine Mischung von Beta-Verteilungen über einen begrenzten Bereich zu verwenden - aber das hilft hier immer noch nicht weiter, da dies immer noch über eine einzelne mischt . Sinnvoller ist es, das Intervall ( 0 , 1 ) in Teile aufzuteilen und in jedem Teil ein Binom zu haben. Zum Beispiel könnten wir ( 0 , 0.1 , 0.2 , … , 0.9 , 1 ) als unsere Aufteilungen wählen und neun Binome in jede 0.1 einpassenp(0,1)(0,0.1,0.2,…,0.9,1)0.1Wahrscheinlichkeitsbereich. Grundsätzlich würden wir innerhalb jeder Teilung eine einfache Näherung anpassen, beispielsweise die Verwendung eines Binoms mit einer Wahrscheinlichkeit, die gleich dem Durchschnitt des in diesem Bereich ist. Wenn wir die Intervalle klein genug machen, wird die Approximation beliebig gut. Beachten Sie jedoch, dass wir uns nur mit einer Summe unabhängiger Binomialversuche mit unterschiedlichen Wahrscheinlichkeiten befassen müssen , anstatt mit Bernoulli- Versuchen. Der vorherige Teil dieser Antwort hat jedoch gezeigt, dass wir die genauen Berechnungen durchführen können, vorausgesetzt, die Anzahl der Binome ist ausreichend klein, etwa 10-15.pi
Um die auf Bernoulli basierende Antwort auf eine auf Binomialbasis zu erweitern, "interpretieren" wir einfach neu, was die -Variablen sind. Wir stellen einfach fest, dass Z i = I ( X i > 0 ) - dies reduziert sich auf das ursprüngliche bernoulli-basierte Z i , sagt aber jetzt, aus welchen Binomen die Erfolge stammen. Der Fall ( Z 1 = 0 , Z 2 = 0 , Z 3 = 1 ) bedeutet nun, dass alle "Erfolge" aus dem dritten Binomial stammen und keiner aus den ersten beiden.ZiZi=I(Xi>0)Zi(Z1=0,Z2=0,Z3=1)
Beachten Sie, dass dies immer noch „exponentiell“ ist, dass die Anzahl der Berechnungen ist so etwas wie wobei g die Zahl der Binome ist, und k ist die Gruppengröße - so haben Sie Y & ap ; & Sgr; g j = 1 X j wobei X j ~ B i n ( k , p j ) . Dies ist jedoch besser als die 2 g k , mit denen Sie mit Hilfe von Bernoulli-Zufallsvariablen umgehen würden. Angenommen, wir teilen n = 16kggkY≈∑gj=1XjXj∼Bin(k,pj)2gkn=16Wahrscheinlichkeiten in Gruppen mit k = 4 Wahrscheinlichkeiten in jeder Gruppe. Dies ergibt 4 4 = 256 Berechnungen, verglichen mit 2 16 = 65536g=4k=444=256216=65536
Durch die Wahl Gruppen, und die Feststellung , dass die Grenze im Begriff war , n = 20 , die im Begriff ist , 10 7 Zellen, können wir effektiv mit dieser Methode das Maximum zu erhöhen , n zu n = 50 .g=10n=20107nn=50
gng=5n125