Seminararbeit Erzeugung von Zufallszahlen Institut für Finanz- und Versicherungsmathematik an der Technischen Universität Wien Verfasser: Jan Draskovits Betreuer: Assoc. Prof. Dipl. - Ing. Dr. techn. Stefan Gerhold 11. Feb 2016 Inhaltsverzeichnis 1 Einleitung 2 2 Allgemeines 3 2.1 The Law of Large Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Fehlerschranke und Konfidenzintervall . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Parallel Monte Carlo Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Generieren von gleichverteilten Zufallsvariablen 7 3.1 Uniform Probability Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Linearer Kongruenzgenerator 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Generieren von nicht gleichverteilten Zufallszahlen 4.1 4.2 12 Inversion Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.1.1 Inverse Verteilungsfunktion . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.2 The Chop-Down Search Method . . . . . . . . . . . . . . . . . . . . . . . 15 Composition Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2.1 Mixture of PDFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5 Anwendungsgebiete 19 1 Kapitel 1 Einleitung Diese Arbeit, die sich mit der Erzeugung von Zufallszahlen für die Monte-Carlo-Methode beschäftigt, soll dem Leser allgemeines Wissen und verschiedene Methoden der Erzeugung näher bringen. Die erste Idee für die Monte-Carlo-Methode, auch Monte-Carlo-Simulation genannt, hatte Enrico Fermi in den 1930er Jahren. Diese Idee wurde von Stanislaw Ulam und John von Neumann während sie an dem Manhattan-Projekt arbeiteten, ausgeführt. Sie wollten damit die verschiedenen Ausgangsmöglichkeiten einer Kernspaltung simulieren. Die Monte-Carlo-Methode hat ihren Namen von dem gleichnamigen Stadtteil des Stadtstaates Monaco, es soll eine Anspielung auf das Casino sein. Der erste Teil dieser Seminararbeit geht auf die zwei Gesetze, die für die Erzeugung von Zufalls-, beziehungsweise Pseudo-Zufallszahlen fundamental sind, ein. Später wird auf allgemeine Informationen und Erzeugungsmethoden von gleichverteilten Zufallszahlen eingegangen. Im letzten Teil werden nicht gleichverteilte Zufallszahlen und Methoden zum Erzeugen von nicht gleichverteilten Zufallszahlen behandelt. 2 Kapitel 2 Allgemeines Die Monte-Carlo-Methode basiert auf zwei grundlegenden Gesetzen. „The Law of Large Numbers“ (LLN) und „The Central Limit Theorem“ (CLT), auch genannt „Das Gesetz der großen Zahlen“ und „Der Zentralen Grenzverteilungssatz“. 2.1 The Law of Large Numbers Es existieren mehrere Versionen des LLN. Im Folgenden zitiere ich einige davon: Satz 2.1 (Borel’s LLN) Suppose that an experiment with an uncertain outcome is repeated a large number of times independently and under identical conditions. Then, for any event E we have P(E) = lim n→∞ NE (n) , n where NE (n) is the number of times the event E occurs in the first n trails. Satz 2.2 (Chebyshev’s Weak LLN) p It is true that X̄n → − µX , as n → ∞. That is, ∀ε > 0P(|X̄n − µX | > ε) → 0, as n → ∞. Satz 2.3 (Kolmogorov’s Strong LLN) a.s. It is true that X̄n −−→ µX , as n → ∞. That is, P({ω|X̄n (ω) → µX as n → ∞}) = 1 3 2.2 Fehlerschranke und Konfidenzintervall Als nächstes möchten wir die Fehlerschranke bestimmen. Dafür verwenden wir „The Central Limit Theorem“ (CLT), auch genannt „Der Zentrale Grenzverteilungssatz“. Satz 2.4 (The Central Limit Theorem) 2 Consider a sequence {Xk }k≥1 of i.i.d. variates with finite common variance σX and expected value µX . Then, X̄n − µX σX √ n That is, P X̄ − µX n σX √ n d → − Norm(0, 1), as n → ∞. ≤ z → N (z), as n → ∞, for all z ∈ R. Mithilfe des CLT, können wir ein Konfidenzintervall für µX bilden. Wir verwenden, P X̄ − µX n σX √ n ≤ z → P(|Z| ≤ z) = 2N (z) − 1 ∀z ∈ R. Ziel ist es, diese Wahrscheinlichkeit so nah wie möglich an 1 anzunähern. Wir setzen das Konfidenzintervall gleich 1 − α ∈ (0, 1) mit α 1. Wir lösen 2N (z) − 1 = 1 − α ⇐⇒ N (z) = 1 − α 2 nach z auf. Da N eine streng monotone Funktion von z ist, ist die Lösung eindeutig. Das sogenannte (1 − α2 )-quantile der N orm(0, 1); kurz z α2 . 4 Tabelle 2.1 beinhaltet häufig verwendete Quantile. Tabelle 2.1: Konfidenz Level (%) α 90 0.1 95 0.05 95.46 0.0454 99 0.01 99.74 0.0026 99.9 0.001 z α2 1.645 1.960 2.000 2.576 3.000 3.29 Für sehr große n, strebt X̄n gegen die Normalverteilung. Durch Anwendung des CLT erhalten wir, z α2 σX |X̄n − µX | ≤ √ n mit Wahrscheinlichkeit ≈ 1 − α. ! ! 3 µX mit dem Konfidenz Level (1 − α) z α2 σX z α2 σX , X̄n + √ 3 µX ≈ 1 − α. Ersetzt man nun den Mittelwert X̄n Somit ist P X̄n − √ n n mit der Stichprobe x̄n erhält man ein Konfidenzintervall für µX : z α2 σX z α2 σX x̄n − √ , x̄n + √ n n ! 2 Normalerweise ist die Varianz σX unbekannt, dennoch kann man sie durch die „Sample Varian- ce“annähern: 2 σX ≈ s2n := n n 1X 1X (xk − x̄n )2 = x2 − x̄2n . n k=1 n k=1 k z α σX Wie man an der Formel des Konfidenzintervalls erkennen kann, ist der relative Error √2 nµX der Ordnung O(n−0,5 ), mit n → ∞. Diese Tatsache zeigt den größten Nachteil der Monte Carlo Methode, die langsame Konvergenzgeschwindigkeit. Will man zum Beispiel den Error um den Faktor 10 verkleinern, muss man die Anzahl der Stichproben verhundertfachen. 5 2.3 Parallel Monte Carlo Method Der größte Vorteil der Monte Carlo Methode ist die Möglichkeit der Parallelisierung. Voneinander unabhängige CPUs können Erwartungswerte berechnen und der head CPU berechnet dann den endgültigen Mittelwert und das Konfidenzintervall. Angenommen man hat CPUs, die numeriert sind von 1 bis ` und CPU #i generiert ni unabhängige draws, {xi1 , . . . , xini }. Nun errechnet der CPU Teile des Mittels x̄ (i) xi1 + xi2 + · · · + xini = ni und ȳ (i) (xi1 )2 + (xi2 )2 + · · · + (xini )2 = ni und schickt deren Ergebnis an den head CPU. Die Gesamtzahl der draws ist n = n1 + n2 + · · · + nk . Um nun das Konfidenzintervall zu dem Mittelwert zu konstruieren, muss man nur den Stichprobenmittelwert x̄n und die Stichprobenvarianz s2n , wie folgt, berechnen: ni ` ` X 1X 1X (i) xij x̄n = ni x̄ = n i=1 n i=1 j=1 s2n = ni ` ` X 1X 1X ni ȳ (i) − x̄2 = (xi )2 − x̄2n n i=1 n i=1 j=1 j Man beachte, dass die Zahlen ni , i = 1, 2, . . . , `, so gewählt werden können, dass alle CPUs gleichzeitig fertig werden. Wenn alle CPUs, mit denen gerechnet wird, die selbe Rechenstärke besitzen kann man einfach n1 = n2 = · · · = n` setzen. 6 Kapitel 3 Generieren von gleichverteilten Zufallsvariablen Das Kernstück einer stochastischen Simulation ist die Generierung von Zufallsvariablen, mit diesen eine Folge von unabhängigen Stichproben oder draws einer gegebenen Verteilung simuliert, beziehungsweise berechnet werden. Wie wir gleich sehen werden, kann man durch Anwendung verschiedenster Methoden, z.B. der Verwerfungsmethode oder auch der Transformationsmethode, Stichproben von einer nichtgleichverteilten (Wahrscheinlichkeits-) Verteilung zu Stichproben einer gleichverteilten Verteilung auf (0, 1) reduzieren - hier als „Unif(0, 1)“geschrieben. Als Erstes beschäftigen wir uns mit der Erzeugung von unabhängigen (Pseudo-) Zufallszahlen, die gleichverteilt auf (0, 1) sind. Es existieren tausende physikalische Generatoren, die Zufallszahlen mit unterschiedlichsten Methoden erzeugen. Die einfachste Erzeugung von Zufallszahlen ist mithilfe von Münzwürfen, Würfeln oder Roulette. Es gibt natürlich auch komplexere Verfahren um Zufallszahlen zu erzeugen, mithilfe von Physikalischen Phänomenen, wie z.B. Wärmerauschen (thermal noise). Doch all diese „Hardware“ Generatoren haben große Nachteile, sie sind langsam und es ist unmöglich ihre draws zu reproduzieren. Darum verwendet man Algorithmen, Software, um Zufallszahlen zu erzeugen. Zufallszahlen, die mit solchen Algorithmen erzeugt werden, ahmen richtige Zufallszahlen nur nach, darum werden sie auch Pseudo-Zufallszahlen (pseudo-random numbers PRNs) genannt. 7 3.1 Uniform Probability Distribution Die Verteilung einer stetigen Zufallsvariablen X kann entweder als PDF, „probability density function“ beziehungsweise Wahrscheinlichkeitsdichtefunktion, angegeben als fX , oder als CDF, „cumulatice distribution function“ beziehungsweise kumulative Verteilungsfunktion, angegeben als FX , dargestellt werden. Für eine stetige Zufallsvariable U die gleichverteilt ist auf (0, 1) gilt: 0 x ≤ 0, FU (x) = = x 0 < x < 1, −∞ 1 1 ≤ x. 1 if 0 < x < 1, fU (x) = I(0,1) (x) = 0 sonst, Z x Der Erwartungswert und die Varianz von U sind: E [U ] = Z ∞ −∞ xfU (x) dx = Z 1 0 1 x dx = , 2 h i Var(U ) = E U 2 − (E [U ])2 = 1 1 1 − = 3 4 12 Um nun die stetige Gleichverteilung auf dem Intervall (a, b), mit a < b, geschrieben als Unif(a, b) auf das Intervall (0, 1) zu reduzieren geht man wie folgt vor: Angenommen X ∼ Unif(a, b) und U ∼ Unif(0, 1), nun hat man: d X = a + (b − a)U, FX (x) = FU x−a , b−a 1 1 x−a fX (x) = fU = I(a,b) (x). b−a b−a b−a Betrachten wir nun den multidimensionalen Fall. Angenommen, dass ein Punkt X zufällig aus D ⊂ Rm , mit endlichem Volumen |D|, gewählt wird, so dass X in ganz D mit der selben Wahrscheinlichkeit liegt. Weiters soll der Zufallsvektor X = [X1 , X2 , . . . , Xm ]> eine multivariate Gleichverteilung in D haben. Dessen PDF ist: fX (x) = m Y fXi (xi ) = i=1 m Y 1 I(ai ,bi ) (xi ). i=1 bi − ai Da die multivariate PDF fX ein Produkt von m univariaten PDFs fk = 1 I bi −ai (ai ,bi ) ist, sind die Einträge des Vektors X unabhängige, gleichverteilte Zufallsvariablen. Daraus folgt, dass die Simulation von einem gleichverteiltem Vektor in einem Hyperparallelepiped auf Stichproben einer Unif(0, 1) Verteilung reduziert wird. 8 3.2 Linearer Kongruenzgenerator Die meisten Algorithmen zur Erzeugung von gleichverteilten Pseudo-Zufallszahlen (kurz PRNs) haben die Form der sogenannten „iterative rule“, ut+1 = F (ut ), t = 0, 1, . . . , wobei Bildmenge und Dimension von F aus [0, 1] und der Anfangswert u0 ∈ [0, 1] gegeben ist. Angenommen man generiert PRNs {ut }t≥0 mit dieser Regel und kombiniert diese in Paare damit man Punkte (ut , ut−1 ) ∈ [0, 1]2 , t = 1, 3, 5, . . . erhält. Einerseits liegen diese Punkte auf der Kurve y = F (x). Andererseits sind sie in [0, 1]2 gleichverteilt, sodass sie das Quadrat ohne Sprungstellen füllen. Satz 3.1 (Voitishek and Mikhaĭlov 2006) Consider the transformation y = {M x + a} where {x} denotes the fractional part of x, and M ∈ Z and a ∈ R are positive constants. 1. If U ∼ Unif(0, 1), then {M U + a} ∼ Unif(0, 1). 2. Let U0 ∼ Unif(0, 1) and the sequence {Uk }k≥1 be generated from the rule Uk+1 = {M Uk }. Then, Uk ∼ Unif(0, 1) and Corr(U0 , Uk )= Corr(Un , Un+k ) = M −k ∀n ≥ 0 and k ≥ 0. Nach Satz 3.1, kann man mit einer Zufallszahl U0 ∼ Unif(0, 1) und unter Verwendung der Regel Ut = {M Ut−1 } für t ≥ 1 eine Reihe von Zufallszahlen {Ut , t = 0, 1, . . . }, die in (0, 1) gleichverteilt ist, generiert werden. Man nennt diese Methode „multiplicative method“. Obwohl die erhaltenen Zahlen abhängig sind, ist die Korrelation zwischen zwei Gliedern aus der Reihe vernachlässigbar beziehungsweise strebt sie gegen 0 wenn die Distanz zwischen den Zahlen sich vergrößert. Dadurch kann man die Transformation y = {M x+a} für ein passendes M und a verwenden um Pseudo-Zufallszahlen mit guten statistischen Eigenschaften, wie Unabhängigkeit und Gleichverteilung, zu erzeugen. 9 Der „linear congruential generator“ (LCG) von PRNs ist eine der ältesten und simpelsten Methoden. Sie wurde von Lehmer im Jahr 1951 entwickelt. Dieser Algorithmus basiert auf der Funktion y = {M x + a}, um aber Rundungsfehler zu vermeiden wurde die generating rule in einer anderen Art und Weise geschrieben. Es wird folgende Funktion angenommen y = {M x} wobei x = {M s } m = Ms m − b Mms c s m ist: M s − b Mms cm M s mod m = = . m m s mod m := s − b s c·m m Diese Operation nennt man Modulo. Der LCG funktioniert so, dass man eine Reihe st , t = 0, 1, . . . generiert. Der Anfangswert s0 wird von dem User selbst gewählt und alle folgenden Glieder st werden durch st = (M st−1 + a) mod m, t = 0, 1, . . . berechnet. Dadurch liegen alle Zahlen st zwischen 0 und m − 1. Die Pseudo-Zufallszahlen erhält man indem man st durch m dividiert: ut = st m t = 0, 1, 2, . . . Beispiel In diesem Beispiel erzeugen wir PRNs mit dem LCG und M = 11, m = 16, a = 5, und s0 = 0. st Es wird folgende LCG Regel verwendet: ut = , wobei st = (11st−1 + 5) mod 16. 16 10 Als Erstes berechnen wir die Reihe st , t = 1, 2, . . . : • s1 = (11 · 0 + 5) mod 16 = 5 mod 16 = 5 • s2 = (11 · 5 + 5) mod 16 = 60 mod 16 = 12 • s3 = (11 · 12 + 5) mod 16 = 137 mod 16 = 9 • s4 = (11 · 9 + 5) mod 16 = 104 mod 16 = 8 • s5 = (11 · 8 + 5) mod 16 = 93 mod 16 = 13 • s6 = (11 · 13 + 5) mod 16 = 148 mod 16 = 4 • s7 = (11 · 4 + 5) mod 16 = 49 mod 16 = 1 • s8 = (11 · 1 + 5) mod 16 = 16 mod 16 = 0 • s9 = (11 · 0 + 5) mod 16 = 5 mod 16 = 5 • etc. Wie man sieht wiederholt sich diese Reihe nach 8 Schritten. Die PRNs ut = st ,t m ≥ 0 sind: 5 12 9 8 13 4 1 5 0, 16 , 16 , 16 , 16 , 16 , 16 , 16 , 0, 16 ,... Die Qualität des LCG hängt natürlich von der Wahl der Parameter M , a und m ab. Wenn a = 0 gilt, wird der Generator auch „multiplicative congruential generator“ (MCG) genannt. Für m werden normalerweise Primzahlen verwendet. Hier ein paar beliebte Auswahlmöglichkeiten für m, M für solche MCGs: • m = 231 − 1 und M = 16807 (Park und Miller (1988)); • m = 240 und M = 517 (Ermakov und Mikhailov (1982)); • m = 2128 und M = 55100109 mod 2128 (Dyadkin und Kenneth (2000)). 11 Kapitel 4 Generieren von nicht gleichverteilten Zufallszahlen Wir haben nun einen PRN-Generator für gleichverteilte PRN in Unif (0, 1). Doch unser Ziel ist es, Stichproben von jeder gegebenen Verteilung zu erhalten. Das erreichen wir durch Transformation der gleichverteilen Zufallszahlen in nicht gleichverteilte Zufallszahlen. Die TransformationsMethode sollte so schnell und effizient wie möglich sein, dennoch sollte sie wenig Computerspeicher in Anspruch nehmen. Ich gehe auf folgende 2 Methoden genauer ein: „Inversion Method“ und „Composition Method“. 4.1 Inversion Method Die „Inversion Method“ um nicht gleichverteilte Zufallszahlen zu erzeugen, basiert auf analytischen und numerischen Inversionen von „cumulative distribution functions“ (CDFs). Diese Methode kann nicht nur bei diskreter, sondern auch bei stetiger Verteilung verwendet werden. Die Effizienz, im Vergleich zu anderen Methoden, hängt davon ab wie schnell die inverse CDF berechnet werden kann. 12 4.1.1 Inverse Verteilungsfunktion Angenommen eine Zufallsvariable X hat eine stetig und streng monoton wachsende CDF F . Die Inverse Funktion F −1 ist wohldefiniert und wie F auch streng monoton steigend. Wir suchen nun die Verteilungsfunktion von Y := F (X). Durch die Definition von einer CDF und einer inversen Funktion erhalten wir: FY (y) = P(F (X) ≤ y) = P(F −1 (F (X)) ≤ F −1 (y)) = P(X ≤ F −1 (y)) = F (F −1 (y)) = y ∀y ∈ (0, 1) Wie man sieht ist die Funktion FY die CDF von einer stetigen Zufallsvariablen, die gleich verteilt ist auf (0, 1) ⇒ F (X) ∼ Unif(0, 1). Dieses Ergebnis liefert uns einen simplen Algorithmus für Stichproben von stetigen, streng monoton wachsenden CDFs. Beispiel Unter Verwendung dieser Methode finde eine Formel für... 1. die Gleichverteilung Unif (a, b), a < b; 2. die Exponentialverteilung Exp(λ), λ > 0; 3. die Weibull distribution mit PDF f (x) = αβ xα−1 e− xα β IR+ (x), α, β > 0. Lösung x−a x−a für x ∈ (a, b). Nun muss man = u mit b−a b−a u ∈ (0, 1) nach x auflösen um die inverse CDF zu erhalten: F −1 (u) = a + (b − a)u. Also 1. Die CDF von Unif (0, 1) ist F (x) = ist die erzeugende Formel: X = a + (b − a)U. 2. Die CDF von einer Exponentialverteilung mit λ > 0 ist F (x) = 1 − e−λx , x > 0. Nun löst man 1 − e−λx = u nach x. Dadurch erhält man x = − λ1 ln(1 − u). Wenn U ∼ Unif (0, 1), dann ist auch 1 − U ∼ Unif (0, 1). Die erzeugende Formel für X ∼ Exp(λ) ist vereinfacht: X=− 13 lnU . λ 3. Die CDF ist: F (x) = R x α α−1 − xα x e β dx 0 β = 1 − e− xα β für x > 0. 1 Die Inverse F −1 (u) = (−βln(1 − u)) α . Dadurch erhalten wir: 1 X = F −1 (1 − U ) = (−βlnU ) α . Damit wir diese Methode auf jede gegebene Wahrscheinlichkeitsverteilung anwenden können, definieren wir uns eine allgemeine inverse CDF F −1 : (0, 1) → R: F −1 (u) = inf{x ∈ R : u ≤ F (x)}. Wir müssen noch 2 Spezialfälle behandeln, damit die Methode allgemein verwendet werden kann: 1. Angenommen die CDF F von einer Zufallsvariable X hat eine Sprungstelle bei x0 , das heißt F (x0 −) < F (x0 ). Dadurch gilt: P(X = x0 ) = F (x0 ) − F (x0 −) 6= 0. Durch die Inverse CDF von oben erhalten wir: F −1 (u) = x0 f ür F (x0 −) ≤ u ≤ F (x0 ), F −1 (u) < x0 f ür u < F (x0 −), F −1 (u) > x0 f ür u > F (x0 ). Die Wahrscheinlichkeit der Zufallsvariable F −1 (U ) in x0 ist ungleich 0 und es gilt: P(F −1 (U ) = x0 ) = F (x0 ) − F (x0 −). 2. Nun nehmen wir an F hat ein Flachstück [x0 , x1 ] mit x0 < x1 . Es existiert u0 ∈ [0, 1] so, dass F (x) = u0 für x ∈ (x0 , x1 ), F (x) ≤ u0 für x ≤ x0 , und F (x) ≥ u0 für x ≥ x1 gilt. In diesem Fall haben wir P(x0 < X < x1 ) = F (x1 −) − F (x0 ) = 0. 14 Mit Wahrscheinlichkeit = 0 ist die Zufallsvariable F −1 (U ) in (x0 , x1 ). Wie man nun erkennen kann, lässt sich die Formel X = F −1 (U ), U ∼ Unif(0, 1) mit der allgemeinen inversen CDF F −1 (u) = inf{x ∈ R : u ≤ F (x)} auf jede beliebige CDF F anwenden, sogar jene mit Sprungstellen oder Flachstücken. 4.1.2 The Chop-Down Search Method Für diese Methode benötigen wir diskrete Zufallsvariablen mit einem abzählbaren Träger S = {xj }j≥1 und Wahrscheinlichkeiten {pj }j≥1 , wobei pj = P(X = xj ) > 0 und P j≥1 pj = 1. Die CDF F von solch einer Wahrscheinlichkeitsverteilung ist eine stückweise konstante Funktion. Weiter gehen wir davon aus, dass die Punkte xj der Größe nach sortiert sind: x1 < x2 < . . . und die CDF ist gegeben mit F (x) = P j:xj ≤x pj . Demnach wird die allgemeine inverse CDF so berechnet: F −1 (u) = inf{xk ∈ S : u ≤ k X pj } = {xk ∈ S : k−1 X j=1 j=1 pj < u ≤ k X pj } j=1 Hierfür können wir aber jede Anordnung von {xj }j≥1 annehmen, da die Stichproben von X equivalent zu den Stichproben von einem Zufallsindex K ∈ N mit Wahrscheinlichkeit P(K = j) = pj , j ≥ 1 sind. Als Erstes generieren wir U ∼Unif(0, 1). Danach brauchen wir den Index K ≥ 1, so dass: K−1 X pj < U ≤ j=1 K X j=1 15 pj . Zu guter Letzt setzen wir X = xK . Die Wahrscheinlichkeit, dass U die obere Ungleichung löst ist genau pK . Eine der möglichen Implementierungen dieses Ansatzes wäre der „chop-down search“(CDS) Algorithmus. Algorithm 1 Die Chop-Down Search (CDS) Methode input: Die Punkte {xj }j≥1 und die Wahrscheinlichkeiten {pj }j≥1 generate U ← Unif(0, 1) set K ← 0 repeat set K ← K + 1 set U ← U − pK until U ≤ 0 return X = xK Beispiel Gesucht ist der Rechenaufwand für die CDS Methode für die Poisson Verteilung Pois(λ) mit P(X = j) = λj −λ e , j ≥ 0, λ > 0. j! Lösung Wir berechnen die Erwartung E = P∞ E= j=1 ∞ X jpj . Der gesamte Rechenaufwand ist cU + cI E. (j + 1) j=0 λj −λ e = λ + 1. j! 16 4.2 Composition Method Die Composition Method versucht die gesuchte Wahrscheinlichkeitsverteilung als mixture von einfacheren Verteilungen darzustellen. Für die Stichproben von einer gemischten mixture Verteilung sind 2 Schritte notwendig. 1. Eine der Verteilungen wird zufällig gewählt. 2. Eine Stichprobe wird von der ausgewählten Verteilung gezogen. (z.B. durch die Nutzung eines Inversion Algorithmus). Im Vergleich zu der „inverse CDF Methode“, die einen draw von Unif (0,1) benötigt, braucht die Composition Method mindestens 2 gleichmäßige Zufallszahlen. Jedenfalls erlaubt uns die Composition Method eine Wahrscheinlichkeitsverteilung. 4.2.1 Mixture of PDFs Angenommen wir haben eine stetige Zufallsvariable X mit einer PDF f . Wir gehen davon aus, dass f durch linear Kombinationen aus m PDFs f1 , f2 , . . . , fm mit m positiven Skalare w1 , w2 , . . . , 2m so, dass w1 + · · · + wm = 1: f (x) = m X wj fj (x), x∈R j=1 Diese PDF f wird „mixture PDF “genannt. Algorithm 2 The Composition Sampling Method input: {wj }j≥1 and {fj }j≥1 generate K from the probabilities P(K = j) = wj , j ≥ 1 generate X from the PDF fK return X 17 Beweis von Algorithmus 2: Wir versuchen nun die Verteilungsfunktion von X mit Hilfe von Algorithmus 2 zu generieren. Durch das total probability law erhalten wir: P(X ≤ x) = m X P(X ≤ x; K = j) = j=1 = Z x X m −∞ j=1 m X P(K = j)P(X ≤ x|K = j) = j=1 wj fj (x)dx = Z x −∞ m X j=1 wj Z x −∞ fj (x)dx f (x)dx = FX (x) für alle x ∈ R 18 Kapitel 5 Anwendungsgebiete Die Monte Carlo Methode wird in vielen Bereichen der Mathematik angewendet. Sie wird als Alternative zur analytischen Lösung von Problemen verwendet, wie zum Beispiel die Approximation der Zahl Pi (siehe Grafik) oder die Berechnung des Integrals einer Funktion über dem Intervall [0; 1]. Ein anderes Anwendungsgebiet ist, wie schon in der Einleitung angesprochen wurde, die Nachbildung komplexer Prozesse, wie Wetter und Klima der Erde oder das Rekonstruktionsverfahren in der Nuklearmedizin. Außerdem kann man mit der Monte Carlo Methode Probleme mit statistischem Verhalten simulieren. Diese sind besonders in der Physik gefragt. Es lässt sich der Weg eines einzelnen Regentropfens simulieren. Nach einer Simulation von mehreren konkreten Tropfen sind Aussagen über die durchschnittliche Tropfengröße möglich oder auch zu Temperatur und Tröpfchendichte, bei denen Schnee oder Hagel entstehen. Abbildung 5.1: Approximation von Pi im Einheitskreis 19 Literaturverzeichnis [1] Giuseppe Campolieti, Roman N. Makarov: Financial Mathematics: A Comprehensive Treatment (Kap. 17), CRC Press, 2014. [2] Kurt Binder: Monte Carlo methods in statistical physics, Springer, 1979. [3] Martin Neumann: Computational Physics I: Grundlagen (Kap. 6), Institut für Experimentalphysik der Universität Wien, 2013. [4] Wikipedia: http://de.wikipedia.org/wiki/Wikipedia [5] Palisade: http://www.palisade.com/risk/de/monte carlo simulation.asp 20