Datenanalyse (PHY231) Herbstsemester 2016 Olaf Steinkamp 36-J-22 [email protected] 044 63 55763 Vorlesungsprogramm ● ● ● ● ● ● ● ● Einführung, Messunsicherheiten, Darstellung von Messdaten Grundbegriffe der Wahrscheinlichkeitsrechnung und Statistik - Mittelwert, Standardabweichung, Kovarianz und Korrelation Fehlerfortpflanzungsgesetz Wahrscheinlichkeitsverteilungen - diskrete Verteilungen, kontinuierliche Verteilungen - zentraler Grenzwertsatz Monte-Carlo Methode Wahrscheinlichkeitsverteilungen II - Faltung zweier Verteilungen - Verteilungen zweier Variablen Stichproben und Schätzfunktionen - Maximum-Likelihood Methode - Methode der kleinsten Quadrate Interpretation von Messergebnissen - Konfidenzintervalle, Testen von Hypothesen Datenanalyse HS16 Monte-Carlo Methode (2) Beispielprogramme im Verzeichnis /disk/puma/da/vorl/mc O. Steinkamp “Monte-Carlo” Simulation Erzeugung von “Pseudozufallszahlen” mittels Computeralgorithmen ● zur Simulation stochastischer Prozesse ● ● z.B. radioaktiver Zerfall, Messfehler … zur numerischen Lösung komplexer Prozesse ● z.B. komplizierte Fehlerfortpflanzung Bereits mehrmals in Vorlesungsbeispielen genutzt ● Kopf oder Zahl: “Münzen werfen” mit dem Computer ● “Messfehler”: gaußverteilte Abweichungen vom wahren Wert Datenanalyse HS16 Monte-Carlo Methode (3) O. Steinkamp “Monte-Carlo” Simulation Teilchenphysik: detaillierte Simulation kompletter Experimente ● ● ● Planungsphase: - Optimierung des Experimentaufbaus Vorbereitungsphase: - Entwicklung von Analyse-Algorithmen Datennahme/Auswertung: - Verständnis der gemachten Beobachtungen Simulation des Zerfalls eines schwarzen Lochs in ATLAS am LHC Simulation verschiedenster physikalischer Prozesse statistischer Natur ● Anzahl, Art, Richtung, Impuls der bei einer Kollision erzeugten Teilchen ● Zerfall instabiler Teilchen ● Wechselwirkung der Teilchen im Detektormaterial (Energieverlust, Streuung) ● Signalerzeugung im Detektor, Rauschen der Ausleseelektronik ● Messunsicherheiten: zusätzliches “verschmieren” simulierter oder rekonstruierter Grössen (z.B. addiere Abweichungen gemäß Gaussverteilung) Datenanalyse HS16 Monte-Carlo Methode (4) O. Steinkamp Erzeugen gleichverteilter Zufallszahlen Häufig verwendeter Algorithmus x i +1 = (a ⋅ x i + c) mod m ● a, c, m x0 : ganzzahlige Konstanten : ganzzahliger Startwert erzeugt bei guter Wahl von a, c und m eine zwischen 1 und m gleichverteilte Zahlenfolge ● gute Werte sind z.B. a = 7 5 = 16'807, c = 0, m = 231-1 = 2'147'483'647 ● nicht so gute Werte sind z.B. a = 1, c = 0, m = 2 ● xi /m ergibt eine zwischen 0 und 1 gleichverteilte Zahlenfolge ● aufgepasst: gleicher Startwert x0 ergibt die gleiche Zahlenfolge ● ● ● Wiederholung vermeiden: letzten Wert einer erzeugten Zahlenfolge merken, als Startwert für die nächste Zahlenfolge benutzen (machen Software-Pakete intern) Reproduzierbarkeit bei gleichem Startwert kann aber auch nützlich sein Erzeugung wirklich zufälliger Zufallszahlen: z.B. Rauschsignal eines Widerstands pylab Funktion random.rand erzeugt (Pseudo-)zufallszahlen die zwischen 0 und 1 gleichverteilt sind Datenanalyse HS16 Monte-Carlo Methode (5) O. Steinkamp Erzeugung einer Gaußverteilung Benutze zentralen Grenzwertsatz (siehe letzte Woche) ● ● die Summe vieler unabhängiger gleichverteilter Zufallszahlen nähert sich einer Gaußverteilung an nur für Gaußverteilung geeignet und ineffizient (für jede Zufallszahl der Gaussverteilung müssen viele gleichverteilte Zufallszahlen erzeugt werden) Datenanalyse HS16 Monte-Carlo Methode (6) O. Steinkamp “Hit-and-miss” Methode Erzeuge Zufallszahlen x mit a≤x≤b gemäß Wahrscheinlichkeitsdichte p(x) ● bestimme den maximalen Wert pmax , den p(x) über das Intervall [a,b] annimmt ● pmax → erzeuge voneinander unabhängige Zufallszahlenpaare ( xi , yi ) ● xi gleichverteilt zwischen a und b, ● yi gleichverteilt zwischen 0 und pmax ● akzeptiere xi wenn yi ≤ p(xi) ● verwerfe xi wenn yi > p(xi) 0→ a b die akzeptierten Zahlen xi sind gemäß p(x) verteilt ● funktioniert für beliebige Verteilungen p(x), Effizienz hängt von der Form von p(x) ab Datenanalyse HS16 Monte-Carlo Methode (7) O. Steinkamp Invertieren der Verteilungsfunktion Erzeuge zwischen 0 und 1 gleichverteilte Zufallszahlen ui , führe Variablentransformation u → x aus, so dass x gemäß p(x) verteilt ist ● kumulative Verteilungsfunktion für p(x) x P (x ) = ● ∫ −∞ 0 ≤ P (x ) ≤ 1 p ( x ' ) dx ' Wahrscheinlichkeitsdichte und kumulative Verteilungsfunktion für u u g (u) = 1 G (u ) = ⇒ ∫ g (u ' ) du ' = u 0 ● Erhaltung der Wahrscheinlichkeit bei der Variablentransformation p ( x ) dx = g (u ) du P (x) = ⇒ ⇒ ● ∫ p ( x ' ) dx ' = ∫ g (u ' ) du ' = u −1 x i = P (ui ) ist gemäß p(x) verteilt sehr effizient und funktioniert für alle p(x), für die P(x) umkehrbar ist Datenanalyse HS16 Monte-Carlo Methode (8) O. Steinkamp Beispiel Gleichverteilung p(x) g(u) 1 1 (b-a) 0 ● 1 0 u 1 b−a f ür x a ≤ x ≤ b kumulative Verteilungsfunktion x P (x ) = ∫ p ( x ' )dx = a ● b gewünschte Wahrscheinlichkeitsdichte p(x) = ● a 1 ⋅( x −a) ≡ u b−a erzeuge ui gleichverteilt zwischen 0 und 1 ⇒ x i = P −1 (ui ) = (b − a)⋅u i + a sind gleichverteilt zwischen a und b Datenanalyse HS16 Monte-Carlo Methode (9) O. Steinkamp Beispiel Gleichverteilung p(x) g(u) 1 Erhaltung der Wahrscheinlichkeit: → Flächen gleich groß 1 (b-a) 0 ● 1 0 u 1 b−a f ür x a ≤ x ≤ b kumulative Verteilungsfunktion x P (x ) = ∫ p ( x ' )dx = a ● b gewünschte Wahrscheinlichkeitsdichte p(x) = ● a 1 ⋅( x −a) ≡ u b−a erzeuge ui gleichverteilt zwischen 0 und 1 ⇒ x i = P −1 (ui ) = (b − a)⋅u i + a sind gleichverteilt zwischen a und b Datenanalyse HS16 Monte-Carlo Methode (10) O. Steinkamp Beispiel Gaußverteilung P(x) u = P(x) g(u) ● p(x) kumulative Verteilungsfunktion der Gaußverteilung (μ=0, σ=1) P ( x ) = (1/ 2)⋅ ( 1 + erf ( x / √ 2 ) ) ● erzeuge ui gleichverteilt ⇒ −1 −1 x i = P (ui ) = √ 2⋅erf ( 2 u i −1 ) x = P-1(u) sind gemäß Gaußverteilung mit μ=0 und σ=1 verteilt Datenanalyse HS16 Monte-Carlo Methode (11) O. Steinkamp Beispiel Exponentialverteilung ● Wahrscheinlichkeitsdichte: p ( x ) = λ ⋅e ● kumulative Verteilungsfunktion: P (x ) = ● x ∫0 λ ⋅e−λ x ' dx ' = 1−e−λ x ≡ u Umkehrfunktion x = − ● −λ x ln (1−u ) λ #!/usr/bin/env python exp_invert.py from pylab import * import scipy.stats as stats hold(True) # # erzeuge exponentialverteilte Zufallszahlen # lambda = 0.56 n = 10000 x = -log(rand(n)) / lambda # # histogrammiere und zeichne wahre Kurve # nbins = 30 ; xmin = 0.0 ; xmax = 6.0 hist(x,,nbins,(xmin,xmax)) # # zeichne wahre Kurve # xf = frange(xmin,xmax,0.02) plot(xf,n*bin*stats.expon.pdf(xf,0,lambda)) erzeuge ui gleichverteilt zwischen 0 und 1 ⇒ ln u i xi = − λ sind gemäss Exponentialfunktion verteilt Datenanalyse HS16 Monte-Carlo Methode (12) O. Steinkamp Python: from scipy import stats ● stats.binom.rvs - Binomialverteilung ● stats.poisson.rvs - Poissonverteilung ● stats.cauchy.rvs - Breit-Wigner Verteilung (“Cauchyverteilung”) ● stats.chi2.rvs - ²-Verteilung ● stats.expon.rvs - Exponentialverteilung ● stats.norm.rvs - Gaußverteilung (“normal distribution”) ● stats.uniform.rvs - Gleichverteilung (“uniform distribution”) … und viele mehr siehe docs.scipy.org/doc/scipy/reference/stats.html Datenanalyse HS16 Monte-Carlo Methode (13) O. Steinkamp Beispiel: gaußverteilte Messfehler Simuliere histogrammierten Messdaten mit statistischer Unsicherheit ● statistische Unsicherheit auf der Anzahl Einträge ni in einem Intervall des Histogramms folgt Poissonverteilung mit Erwartungswert ni ● ni nicht zu klein benutze gaußsche Näherung (zentraler Grenzwertsatz) ● simuliere Unsicherheit auf ni durch addieren gaußverteilter Zufallszahlen mit Erwartungswert 0 und Standardabweichung √ni ● Beispiel: Breit-Wigner mit quadratisch fallendem Untergrund Datenanalyse HS16 #!/usr/bin/env python bwquad.py from pylab import * import scipy.stats as stats hold(True) # # zeichne Breit-Wigner mit quadratisch fallendem Untergrund # a = [50,-1.5,0.01,400,19,2.5] x = frange (0,40,0.1) y = a[0]+a[1]*x+a[2]*x*x+a[3]*stats.cauchy(a[4],a[5]).pdf(x) plot(x,y) # # simuliere Messpunkte mit gaussverteilten Abweichungen # x = frange(1,39,2) y = a[0]+a[1]*x+a[2]*x*x+a[3]*stats.cauchy(a[4],a[5]).pdf(x) y = y + stats.norm(0,sqrt(y)).rvs(size(y)); errorbar(x,y,sqrt(y),fmt='ro') Monte-Carlo Methode (14) O. Steinkamp Beispiel: Bestimmung von π Ansatz analog zur “hit-and-miss” Methode ● erzeuge N Zufallszahlenpaare (xi,yi) ● xi und yi jeweils gleichverteilt zwischen 0 und 1 ● xi und yi statistisch unabhängig voneinander ● ● Paare (xi,yi) sind gleichverteilt über Quadrat mit Kantenlänge 1 und Fläche = 1 bestimme Anzahl NK der Zahlenpaare mit 2 i x +y ● ● 2 i < 1 liegen in ¼-Kreis mit Radius 1 und Fläche = /4 Gesetz grosser Zahlen: N → ∞ ⇒ Datenanalyse HS16 Nk π /4 → N 1 ⇔ 4 Nk → π N Monte-Carlo Methode (15) calpi.py #!/usr/bin/env python from pylab import * import scipy.stats as stats # # erzeuge n Zufallszahlenpaare # n = 5000 x = stats.uniform.rvs(size=n) y = stats.uniform.rvs(size=n) # # zaehle Anzahl Paare in ¼-Kreis # und berechne pi # acc = x*x+y*y<=1 mcpi = 4.0*sum(acc)/n O. Steinkamp Unsicherheit auf der Bestimmung von π Unsicherheit mit Fehlerfortpflanzung ● viele Experimente mit jeweils N Zahlenpaaren ⇒ Nk binomialverteilt mit p = /4 σ (N k ) = √ N ⋅ p ⋅(1−p) = ● π 4 ) Fehlerfortpflanzung: σ (π) = ● √ N ⋅ π4 ⋅ (1 − | | π 4 ⋅σ (N K ) = ⋅σ (N K ) = NK N √ π ⋅(4−π ) N fur N = 1000 : calpi2.py #!/usr/bin/env python from pylab import * import scipy.stats as stats # # erzeuge nexp mal n Zahlenpaare # n = 1000 nexp = 100 x = rand(nexp,n) y = rand(nexp,n) # # zaehle Anzahl Paare in ¼-Kreis # und berechne pi nexp mal # acc = x*x+y*y<=1 mcpi = 4.0*sum(acc,1)/n # # Mittelwert std der Resultate # mean(mcpi) std(mcpi) σ (π) = 0.052 Unsicherheit mit Simulation ● simuliere 100 Experimente mit jeweils N = 1000 Zahlenpaaren und berechne Standardabweichung der Resultate Datenanalyse HS16 Monte-Carlo Methode (16) n = 1000, nexp = 100 mean = 3.140, std = 0.054 O. Steinkamp