Seminararbeit - FAM @ TU Vienna

Werbung
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
Herunterladen