Kehre die Box-Mueller-Technik um : Aus jedem Normalenpaar können zwei unabhängige Uniformen als (im Intervall ) und (im Intervall ).atan2 ( Y , X ) [ - π , π ] exp ( - ( X 2 + Y 2 ) / 2 ) [ 0 , 1 ]( X, Y)atan2 ( Y, X)[ - π, π]exp( - ( X2+ Y2) / 2 )[ 0 , 1 ]
Nehmen Sie die Normalen in Zweiergruppen und Sie ihre Quadrate, um eine Folge von Variablen . Die Ausdrücke aus den Paaren erhalten Y 1 , Y 2 , … , Y i , …χ22Y.1,Y2, … , Yich, …
Xich= Y2 iY.2 i - 1+ Y2 i
wird eine -Verteilung haben, die einheitlich ist.Beta ( 1 , 1 )
Dass dies nur grundlegende, einfache Arithmetik erfordert, sollte klar sein.
Da die exakte Verteilung des Pearson - Korrelationskoeffizienten einer 4 - Paar - Stichprobe aus einer bivariaten Standardnormalverteilung gleichmäßig auf verteilt ist , können wir die Normalen einfach in Gruppen von 4 Paaren (dh 8 Werten in jede Menge) und geben den Korrelationskoeffizienten dieser Paare zurück. (Dies beinhaltet einfache Arithmetik plus zwei Quadratwurzeloperationen.)[ - 1 , 1 ]
Seit der Antike ist bekannt, dass eine zylindrische Projektion der Kugel (eine Fläche im Dreiraum) flächengleich ist . Dies impliziert, dass bei der Projektion einer gleichmäßigen Verteilung auf die Kugel sowohl die horizontale Koordinate (entsprechend dem Längengrad) als auch die vertikale Koordinate (entsprechend dem Breitengrad) gleichmäßige Verteilungen aufweisen. Da die trivariate Normalverteilung sphärisch symmetrisch ist, ist ihre Projektion auf die Kugel gleichmäßig. Das Erhalten des Längengrads ist im Wesentlichen dieselbe Berechnung wie der Winkel in der Box-Müller-Methode ( siehe ), aber der projizierte Breitengrad ist neu. Die Projektion auf die Kugel normalisiert lediglich ein Dreifach der Koordinaten und an diesem Punktz X 3 i - 2 , X 3 i - 1 , X 3 i( x , y, z)zist der projizierte Breitengrad. Nehmen Sie also die Normalvariablen in Dreiergruppen, , und berechnen SieX3 i - 2, X3 i - 1, X3 i
X3 iX23 i - 2+ X23 i - 1+ X23 i----------------√
für .i = 1 , 2 , 3 , ...
Da die meisten Computersysteme Zahlen in repräsentieren binären , in der Regel einheitliche Zahlenerzeugung beginnt durch gleichmäßig verteilte Erzeugung ganze Zahlen zwischen und (oder einer hohen Leistung von bis Computer - Wortlänge bezogen) und Neuskalierung sie nach Bedarf. Solche Ganzzahlen werden intern als Zeichenfolgen mit Binärziffern dargestellt. Wir können unabhängige Zufallsbits erhalten, indem wir eine Normalvariable mit ihrem Median vergleichen. Es reicht also aus, die Normal-Variablen in Gruppen zu unterteilen, die der gewünschten Anzahl von Bits entsprechen, diese mit ihrem Mittelwert zu vergleichen und die resultierenden Folgen von Wahr / Falsch-Ergebnissen zu einer Binärzahl zusammenzusetzen. Schreiben2 32 - 1 2 32 k H H ( x ) = 1 x > 0 H ( x ) = 0 [ 0 , 1 )0232- 1232kfür die Anzahl der Bits und für das Vorzeichen (d. h. wenn und andernfalls) können wir den resultierenden normierten einheitlichen Wert in mit ausdrücken FormelHH( x ) = 1x > 0H( x ) = 0[ 0 , 1 )
∑j = 0k - 1H( Xk i - j) 2- j - 1.
Die Variablen können aus jeder stetigen Verteilung gezogen werden, deren Median (z. B. eine Standardnormalverteilung). Sie werden in Gruppen von wobei jede Gruppe einen solchen pseudoeinheitlichen Wert erzeugt. 0 kXn0k
Die Rückweisungsabtastung ist eine standardmäßige, flexible und leistungsstarke Methode, um Zufallsvariablen aus beliebigen Verteilungen zu ziehen. Angenommen, die Zielverteilung hat PDF . Ein Wert wird gemäß einer anderen Verteilung mit PDF gezeichnet . Im Zurückweisungsschritt wird unabhängig von ein einheitlicher Wert , der zwischen und liegt, und mit verglichen : Wenn er kleiner ist, wird beibehalten, andernfalls wird der Vorgang wiederholt. Dieser Ansatz scheint jedoch kreisförmig zu sein: Wie erzeugen wir eine einheitliche Variable mit einem Prozess, der zunächst eine einheitliche Variable benötigt?Y g U 0 g ( Y ) Y f ( Y ) YfY.GU0G( Y)Y.f( Y)Y.
Die Antwort ist, dass wir eigentlich keine einheitliche Variable benötigen, um den Ablehnungsschritt auszuführen. Stattdessen können wir (unter der Annahme von ) eine faire Münze werfen, um zufällig eine oder zu erhalten . Dies wird als erstes Bit in der Binärdarstellung einer einheitlichen Variablen im Intervall ] interpretiert . Wenn das Ergebnis ist, bedeutet dies ; ansonsten . Die Hälfte der Zeit reicht aus, um den Ablehnungsschritt zu entscheiden: Wenn , die Münze jedoch , sollte akzeptiert werden; wenn0 1 U [ 0 , 1 ) 0 0 ≤ U < 1 / 2 1 / 2 ≤ U < 1 f ( Y ) / g ( Y ) ≥ 1 / 2 0 Y f ( Y ) / g ( Y ) < 1 / 2 1 Y U fG( Y) ≤ 001U[ 0 , 1 )00 ≤ U< 1 / 21 / 2 ≤ U< 1f( Y) / g( Y) ≥ 1 / 20Y.f( Y) / g( Y) < 1 / 2 aber die Münze ist , sollte abgelehnt werden; Andernfalls müssen wir die Münze erneut werfen, um das nächste Bit von . Weil - egal welchen Wert hat - es eine Chance gibt, nach jedem anzuhalten, beträgt die erwartete Anzahl von nur .1Y.U1 / 2 1 / 2 ( 1 ) + 1 / 4 ( 2 ) + 1 / 8 ( 3 ) + ⋯ + 2 - n ( n ) + ⋯ = 2f( Y) / g( Y)1 / 21/2(1)+1/4(2)+1/8(3)+⋯+2−n(n)+⋯=2
Die Auswahl der Ablehnungen kann sich lohnen (und effizient sein), vorausgesetzt, die erwartete Anzahl von Ablehnungen ist gering. Dies erreichen wir, indem wir das größtmögliche Rechteck (das eine gleichmäßige Verteilung darstellt) unter eine normale PDF-Datei einfügen.
Wenn Sie Calculus verwenden, um die Fläche des Rechtecks zu optimieren, sollten die Endpunkte bei , wobei die Höhe , wodurch die Fläche etwas kleiner wird größer als . Indem Sie diese Standardnormaldichte als und alle Werte außerhalb des Intervalls automatisch verwerfen und ansonsten das Verwerfungsverfahren anwenden, erhalten Sie gleichmäßige Variationen in effizient:exp ( - 1 / 2 ) / √±10,48g[-1,1][-1,1]exp(−1/2)/2π−−√≈0.2419710.48g[−1,1][−1,1]
In einem Bruchteil von der Zeit liegt die jenseits von und wird sofort verworfen. ( ist die normale Standard-CDF.)[ - 1 , 1 ] Φ2Φ(−1)≈0.317[−1,1]Φ
In dem verbleibenden Teil der Zeit muss die binäre Zurückweisungsprozedur befolgt werden, wobei durchschnittlich zwei weitere Normalvariablen erforderlich sind.
Die Gesamtprozedur erfordert durchschnittlich Schritte.1/(2exp(−1/2)/2π−−√)≈2.07
Die erwartete Anzahl von Normalvariablen, die benötigt werden, um jedes einheitliche Ergebnis zu erzielen, wird berechnet
2eπ−−−√( 1 - 2 Φ ( - 1 ) ) ≈ 2,82137.
Obwohl dies ziemlich effizient ist, ist zu beachten, dass (1) für die Berechnung des normalen PDF- Dokuments die Berechnung eines Exponentials erforderlich ist und (2) der Wert ein für alle Mal vorberechnet werden muss. Es ist immer noch etwas weniger berechnend als die Box-Müller-Methode ( vgl. ).Φ ( - 1 )
Die Ordnungsstatistik einer Gleichverteilung weist exponentielle Lücken auf. Da die Summe der Quadrate von zwei Normalen (mit dem Mittelwert Null) exponentiell ist, können wir eine Realisierung von unabhängigen Uniformen erzeugen, indem wir die Quadrate von Paaren solcher Normalen summieren, die kumulative Summe davon berechnen und die Ergebnisse neu skalieren, damit sie in das Intervall fallen und den letzten fallen lassen (der immer gleich ). Dies ist ein erfreulicher Ansatz, da nur Quadrieren, Summieren und (am Ende) eine einzige Division erforderlich ist.[ 0 , 1 ] 1n[ 0 , 1 ]1
Die Werte werden automatisch in aufsteigender Reihenfolge angezeigt. Wenn eine solche Sortierung gewünscht wird, ist diese Methode allen anderen rechnerisch überlegen , da sie die -Kosten einer Sortierung vermeidet . Wenn jedoch eine Folge unabhängiger Uniformen benötigt wird, reicht es aus, diese Werte zufällig zu sortieren . Da (wie in der Box-Müller-Methode zu sehen ist, siehe ) die Verhältnisse jedes Normalenpaares unabhängig von der Summe der Quadrate jedes Paares sind, haben wir bereits die Möglichkeit, diese zufällige Permutation zu erhalten: Ordnen Sie die kumulativen Summen nach den entsprechenden Verhältnissen . (Wenn sehr groß ist, könnte dieser Prozess in kleineren Gruppen vonO ( n log ( n ) ) n n k 2 ( k + 1 ) k k O ( n log ( k ) ) , O ( n ) 2 N ( 1 + 1 / k ) nnO ( n log( n ) )nnkmit geringem Wirkungsgradverlust, da jede Gruppe nur Normalen benötigt, um einheitliche Werte zu erzeugen . Für festes ist der asymptotische Rechenaufwand daher = , wobei Normalvariablen erforderlich sind, um einheitliche Werte zu erzeugen .)2 ( k + 1 )kkO ( n log( k ) )O ( n )2 n ( 1 + 1 / k )n
In hervorragender Näherung sieht jede normale Variation mit einer großen Standardabweichung über Bereiche mit viel kleineren Werten gleichmäßig aus. Wenn wir diese Verteilung in den Bereich rollen (indem wir nur die Bruchteile der Werte nehmen), erhalten wir eine Verteilung, die für alle praktischen Zwecke einheitlich ist. Dies ist äußerst effizient und erfordert eine der einfachsten Rechenoperationen von allen: Runden Sie einfach jede Normalvariable auf die nächste ganze Zahl ab und behalten Sie den Überschuss bei. Die Einfachheit dieses Ansatzes wird überzeugend, wenn wir eine praktische Implementierung untersuchen:[ 0 , 1 ]R
rnorm(n, sd=10) %% 1
erzeugt zuverlässig n
einheitliche Werte im Bereich auf Kosten von nur normalen Variationen und fast keiner Berechnung.[ 0 , 1 ]n
(Selbst wenn die Standardabweichung , weicht das PDF dieser Annäherung von einem einheitlichen PDF, wie in der folgenden Abbildung gezeigt, um weniger als einen Teil von . Um es zuverlässig zu erkennen, wäre eine Stichprobe von erforderlich values - das übersteigt bereits die Möglichkeiten eines Standard-Zufallstests. Bei einer größeren Standardabweichung ist die Ungleichmäßigkeit so gering, dass sie nicht einmal berechnet werden kann. Zum Beispiel bei einer SD von wie im Code gezeigt, das Maximum Abweichung von einem einheitlichen PDF beträgt nur .)10 8 10 16 10 10 - 857110810161010- 857
In jedem Fall können normale Variablen "mit bekannten Parametern" leicht neu zentriert und in die oben angenommenen Standardnormalen skaliert werden. Anschließend können die resultierenden gleichmäßig verteilten Werte neu zentriert und skaliert werden, um jedes gewünschte Intervall abzudecken. Diese erfordern nur Grundrechenarten.