Statistik, Datenanalyse und Simulation Dr. Michael O. Distler [email protected] Mainz, 17. Mai 2009 Statistik, Datenanalyse und Simulation 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) 2.3.3 Kombination mehrerer MLCGs Statistik, Datenanalyse und Simulation 2.4. Qualität von Generatoren 2.4.1 Spektraltest Bilde Paare aus benachbarten Zahlen (xj , xj+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 ≤ xj < m gibt es m2 Zahlenpaare. MLCG liefert aber nur m − 1 Zahlenpaare Statistik, Datenanalyse und Simulation Beispiele: Spektraltest a=3 m=7 6 5 xi+1 4 3 2 1 0 0 1 2 3 xi 4 5 6 Statistik, Datenanalyse und Simulation Beispiele: Spektraltest a=29 m=97 90 80 70 xi+1 60 50 40 30 20 10 0 0 10 20 30 40 50 xi 60 70 80 90 Statistik, Datenanalyse und Simulation Beispiele: Spektraltest a=23 m=97 90 80 70 xi+1 60 50 40 30 20 10 0 0 10 20 30 40 50 xi 60 70 80 90 Statistik, Datenanalyse und Simulation Beispiele: Spektraltest 1 a=29 m=97 0.8 xi+1 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 xi Statistik, Datenanalyse und Simulation 1 Beispiele: Spektraltest 1 a=23 m=97 0.8 xi+1 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 xi Statistik, Datenanalyse und Simulation 1 x Umrechnung auf Gitter 0 ≤ mj < 1. 1 Voll besetztes Gitter hat Linienabstand d = 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: dt ≥ dt∗ = ct m−1/t p p p c2 = 4 3/4, c3 = 6 1/2, c4 = 4 1/2, c5 = 2−0,3 Statistik, Datenanalyse und Simulation 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. Ni fallen in das Unterintervall i. k X P (Ni − N/k )2 N Ni = N, hNi i = k , = χ2 N/k i=1 sollte einer χ2 -Verteilung mit (k − 1) Freiheitsgraden folgen. Statistik, Datenanalyse und Simulation 2.4.3 Sequenz-(up-down-)Test Vergleiche xi und xi+1 1 für xi < xi+1 Erzeuge Bitfolge mit 0 für xi > xi+1 Zähle die Folgen von Nullen und Einser der Länge k : N(k ) N X k · N(k ) = N für N + 1 Zufallszahlen k =1 Für unkorrelierte Zufallszahlen erwartet man: N(1) = 5N+1 N(2) = 11N−14 N(3) = 19N−47 12 60 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) Statistik, Datenanalyse und Simulation 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. Statistik, Datenanalyse und Simulation 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: Pr = p (1 − p)r Statistik, Datenanalyse und Simulation 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: n2 (k groß) λC = 2k Statistik, Datenanalyse und Simulation 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 Sj = 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: n3 (k groß) λY = 4k Der Name stammt von dem Geburtstagsparadoxon (n Personen, das Jahr hat k Tage). http://www.iro.umontreal.ca/~lecuyer/myftp/ papers/wsc01rng.pdf Statistik, Datenanalyse und Simulation