Mainz, May 12, 2015 Statistics, Data Analysis, and Simulation SS 2015 08.128.730 Statistik, Datenanalyse und Simulation Dr. Michael O. Distler <distler@uni-mainz.de> Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 1 / 20
2. Monte Carlo-Methoden 2.1 Zufallszahlen - Warum? 2.2 Zahlendarstellung im Rechner 2.3 Generatoren 2.3.1 Linear kongruente Generatoren (LCG) 2.3.2 Multiplikativ linear kongruente Generatoren (MLCG) Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 2 / 20
Techniques for producing numbers from various distributions The inverse transform sampling method: Let X be a random variable whose distribution can be described by the cumulative distribution function F. We want to generate values of X which are distributed according to this distribution. The inverse transform sampling method works as follows: 1 Generate a random number u from the standard uniform distribution in the interval [0, 1]. 2 Compute the value x such that F(x) = u. 3 Take x to be the random number drawn from the distribution described by F. Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 3 / 20
Inverse transform sampling Generator gives: 0 X n < m 0 X n m < 1 Uniform distribution: U(0, 1) Transformation: f (x) dx = U(0, 1) du CDF: x f (t) dt = F(x) = u x = F ( 1) (u) Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 4 / 20
2.4. Qualität von Generatoren 2.4.1 Spektraltest Bilde Paare aus benachbarten Zahlen (x j, x j+1 ) j = 0, 1,..., n 1 Darstellung als Punkte in einem 2dim kartesischen Koordinatensystem: a = 3, m = 7 : 1, 3, 2, 6, 4, 5, 1,... (1, 3), (3, 2), (2, 6), (6, 4), (4, 5), (5, 1) Punkte eines MLCG bilden regelmäßiges Gitter. Warum? Im Wertebereich 0 x j < m gibt es m 2 Zahlenpaare. MLCG liefert aber nur m 1 Zahlenpaare Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 5 / 20
Beispiele: Spektraltest 6 a=3 m=7 5 4 x i+1 3 2 1 0 0 1 2 3 4 5 6 x i Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 6 / 20
Beispiele: Spektraltest 90 a=29 m=97 80 70 60 x i+1 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 x i Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 7 / 20
Beispiele: Spektraltest 90 a=23 m=97 80 70 60 x i+1 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 x i Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 8 / 20
Beispiele: 1 Spektraltest a=29 m=97 0.8 0.6 x i+1 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 x i Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 9 / 20
Beispiele: 1 Spektraltest a=23 m=97 0.8 0.6 x i+1 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 x i Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 10 / 20
Umrechnung auf Gitter 0 x j m < 1. Voll besetztes Gitter hat Linienabstand d = 1 m Unser Gitter hat bei gleichmäßiger Verteilung bestenfalls: d m 1/2 für 2 Dimensionen Ungleichmäßige Abstände: d m 1/2 Theoretische Überlegungen liefern obere Grenzen für die kleinstmöglichen Gitterabstände in t Dimensionen: d t d t = c t m 1/t c 2 = 4 3/4, c 3 = 6 1/2, c 4 = 4 1/2, c 5 = 2 0.3 Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 11 / 20
2.4.2 Test auf gleichmäßige Verteilung Das Intervall [0, 1] wird in k gleiche Unterintervalle der Länge 1/k unterteilt. N Zufallszahlen werden erzeugt. N i fallen in das Unterintervall i. k Ni = N, N i = N k, (N i N/k) 2 = χ 2 N/k i=1 sollte einer χ 2 -Verteilung mit (k 1) Freiheitsgraden folgen. Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 12 / 20
2.4.3 Sequenz-(up-down-)Test Vergleiche x i und x i+1 { 1 für xi < x Erzeuge Bitfolge mit i+1 0 für x i > x i+1 Zähle die Folgen von Nullen und Einser der Länge k: N(k) N k N(k) = N für N + 1 Zufallszahlen k=1 Für unkorrelierte Zufallszahlen erwartet man: N(1) = 5N+1 12 N(2) = 11N 14 60 N(3) = 19N 47 360 N(k) = (k 2 +3k+1)N (k 3 +3k 2 k 4) (k+3)!/2 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 1 2 2 2 2 3 N(1) = 5 (6.75) N(2) = 4 (2.75) N(3) = 1 (0.58) Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 13 / 20
2.4.4 Random Walk-Test Wähle ein kleine Zahl 0 < α 1. Bilde eine große Zahl von Zufallszahlen und registriere die Zahl r der Fälle, in denen eine Zufallszahl kleiner α erscheint. Man erwartet eine Binomialverteilung für r mit p = α. Diese Test sollte auch gemacht werden für Zufallszahlen, die größer als (1 α) sind. Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 14 / 20
2.4.5 Lücken-(gap)Test Wähle zwei Zahlen 0 α < β 1. Erzeuge (r + 1) Zufallszahlen im Intervall [0, 1]. Die Wahrscheinlichkeit, dass die ersten r Zahlen ausserhalb des Intervalls (α, β) liegen und die (r + 1)ste innerhalb, sollte sein: P r = p (1 p) r Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 15 / 20
2.4.6 Collision-Test Teile das Intervall [0, 1) in d gleiche Segmente. Teile entsprechend [0, 1) t in k = d t Hyperkuben. Erzeuge n zufällige Punkte in [0, 1) t. Wir definieren eine neue Zufallsvariable C, in dem wir zählen, wie oft wir eine Zahl in eine Hyperkubus füllen, der schon besetzt ist. Wir erwarten für C eine Poisson-Verteilung um den Mittelwert: λ C = n2 (k groß) 2k Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 16 / 20
2.4.7 Birthday-Spacing-Test Teile den Wertebereich in k gleich Intervalle (Hyperkuben). Definiere eine Ordnungsfunktion für die Zellen, damit für die gefüllten Zellen gilt: I (1) I (2)... I (n) Definiere den Abstand S j = I (j+1) I (j) j = 1,..., n 1. Die neue Zufallsvariable Y zählt die Fälle (Kollisionen), für die gilt: S (j+1) = S (j). Wir erwarten für Y eine Poisson-Verteilung um den Mittelwert: λ Y = n3 (k groß) 4k Der Name stammt von dem Geburtstagsparadoxon (n Personen, das Jahr hat k Tage). http://www.iro.umontreal.ca/~lecuyer/myftp/ papers/wsc01rng.pdf Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 17 / 20
Markov chain Monte Carlo Metropolis-Hastings Algorithmus Aufgabe: Bestimmen Sie Mittelwert, Varianz und Schiefe der Wahrscheinlichkeitsdichte ( p(x) = C exp 1 ) (x 3.2)(x 2)(x 1.1)(x + 0.9)(x + 2)(x + 3.3) 50 mit einer MCMC Methode (Metropolis-Hastings Algorithmus). 0.4 0.3 0.2 Dazu erzeugen Sie eine Folge von Zahlen x t, t = 1,..., N (Markov chain), die der Dichte p(x) folgen. Nach den Regeln der MC Integration gilt dann für den Erwartungswert 0.1 A 1 N N A(x t ). t=1 Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 18 / 20
Metropolis-Hastings Algorithmus 1 Wählen Sie einen Startwert und legen Sie die Kettenlänge fest, z.b. x 1 = 1 und N = 10000. 2 Wählen Sie eine Vorschlagsdichte q(x x), z.b. die Normalverteilung N (µ, σ 2 ). Setzen Sie σ 2 = 2. Je ähnlicher die Vorschlagsdichte der Dichte p(x) ist, desto besser funktioniert der Algorithmus. 3 Generieren Sie zufällig einen Vorschlag x für x t+1 aus der Vorschlagsdichte N (x t, σ 2 ). 4 Generieren Sie eine gleichverteilte Zufallszahl u aus U(0, 1). 5 Der Vorschlag x wird akzeptiert, falls: p(x ) p(x t ) q(x t x ) q(x x t ) u Für den Fall einer symmetrischen Vorschlagsdichte (hier Normalverteilung) gilt q(x t x )/q(x x t ) = 1. 6 Wird der Vorschlag nicht akzeptiert, setzen Sie x t+1 = x t. 7 Fahren Sie mit Punkt 3. fort, bis die gewünschte Kettenlänge N erreicht ist. Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 19 / 20
Metropolis-Hastings Algorithmus Mögliche Optimierungen: Wenn der Startwert ungünstig gewählt wurde, dann benötigt der Algorithmus einige Zeit um einzuschwingen (sog. burn-in). In der Praxis werden die ersten 100 oder 1000 Werte verworfen und so das " Gedächtnis" (d.h. die Abhängigkeit vom Startwert) gelöscht. Variieren Sie die Varianz der Vorschlagsdichte, z.b. σ 2 = 0.1, 2, 10 und betrachten Sie jeweils den Anteil der akzeptierten Vorschläge und plotten einen Ausschnitt von 1000 Werten der Kette. In der Praxis bewährt sich ein Anteil von 50%. Wählen Sie eine ganz andere Vorschlagsdichte, z.b. U( 2 + x t, 2 + x t ). Funktioniert der Algorithmus damit? (siehe auch http://de.wikipedia.org/wiki/metropolisalgorithmus) Dr. Michael O. Distler <distler@uni-mainz.de> Statistics, Data Analysis, and Simulation SS 2015 20 / 20