Likelihood-Schaetzung, Bayes-Statistik

Werbung
Universität Potsdam
Institut für Physik und Astronomie
VL: Udo Schwarz
Ü: Udo Schwarz
Scientific Computing, SS 2011
http://www.stat.physik.uni-potsdam.de/cp10
[email protected]
Übungsblatt 8 – Abgabe bis Montag 4.7.2011
Likelihood (Plausibilität) & Bayes-Schätzung (Glaubwürdigkeit)
Bayesianer bevorzugen gegenüber Frequentisten den Begriff Glaubwürdigkeit statt Vertrauen. Das
Bayes-Theorem als logischer Schlüssel und computationaler Mechanismus für sequenzielles Lernen
(Spam-Filter).
Frequentisten oder Fisher-Statistiker: Wahrscheinlichkeit eines Ereignisses ist seine relative Häufigkeit
für den Fall ∞-oft wiederholbarer Experimente. Was aber, wenn die ∞ Wiederholbarkeit nicht gegeben ist, aber zusätzlich Erfahrung zum Problem existiert? Beispiel: Schätzung zu den Parametern
kosmologischer Modelle.
Statistisches Schließen - Erschließe Eigenschaften einer unbekannten Verteilung auf alleiniger Grundlage von Stichproben-Daten: Gegeben eine Menge beobachteter Realisierungen S = {x1 , x2 , . . . , xN }, xj ∈
|Rn einer ZV X wird auf die zugrundeliegende Wahrscheinlichkeitsverteilung geschlossen, die auf die
Stichprobe S führt. Statistische Modellierung und Analyse schließt Beschreibung und zugrundeliegenden Datenaufnahme-Vorgang ein. Sie liegt wissenschaftlicher Modellierung und empirischem Testen
zugrunde.
Von einem Modell spricht man erst, wenn die Verteilung einer Zufallsvariablen nicht exakt präzisiert werden kann, sondern innerhalb einer Familie von zulässigen Verteilungen frei wählbar ist. Bei
parametrischen Modellen ist das z.B. die mögliche Schar von Parametern der Verteilungen.
Der Frequentist geht von verteilungsfreien Methoden aus. Verfahren und Aussagen sind gültig ohne
einschränkende Annahmen über die im Modell auftretenden Verteilungen. Der Frequentist glaubt
an wahre Parameter der Verteilungen, wogegen der Bayesianer auch die Parameter wegen Ignoranz
(Mangel an Information) als Zufallsvariable betrachtet.
Begriffe zur Erinnerung
Beim Lernen
geht das Subjekt aus von einem momentanen Wissen über A, dass in der Apriori-Verteilung P (A) quantifiziert wird. Dann wird eine Info B geliefert. P (B|A) ist die Wahrscheinlichkeit von B im Licht des Vorwissens A.
P (A|B) ist die A-posteriori-Verteilung: Sie quantifiziert das Wissen des Subjektes NACH
dem Experiment. Lernen: P (A) → P (A|B) → P (A|BC) → . . . Die Umrechnung von A-priori- in
A-posteriori-Wahrscheinlichkeiten passiert mit dem Satz von Bayes:
P (Aj |B) =
P (B|Aj )P (Aj )
P (B|Aj )
P (Aj ) = Pn
P (B)
i=1 P (B|Ai )P (Ai )
Der Subjektivist oder Bayesianer quantifiziert also sein Vorwissen und seine subjektive Bewertung mit einer A-priori-Wahrscheinlichkeitsverteilung Diese wird auf Basis von späteren Beobachtungen mittels Bayes-Regel aktualisiert. Es gibt nur bedingte Wahrscheinlichkeiten P ! P (A|B) ist
die Einschätzung über das Eintreten von A auf der Basis des subjektiven momentanen Wissens B.
Das Weglassen von B bedeutet stillschweigend das gesamte Wissen des jeweils Sprechenden.
So wird relevantes Vorwissen und Erkenntnisse aus Experimenten/Beobachtungen in möglichst einfacher, operational durchsichtiger Form zur Modellierung und Vorhersage für nicht wiederholbare
Einzelfall-Situationen benutzt.
Bayes-Idee: posterior ∝ Likelihood (Stichproben-Info, Ausbeute zum Parameter) × prior
(Vorwissen zur Parameterverteilung), wobei alle Ausdrücke Funktionen der Parameter sind.
Beispiel: stochastische parametrische Modell X ∼ f (·, θ), θ ∈ Θ mit der A-priori-Dichte des Parameters
πΘ (·). Ziel: Nach Stichprobennahme D = {x1 , · · · , xn } kann diese Info mit A-priori-Dichte verknüpft
werden, um aktualisierte/verbesserte Parameterverteilung zu bekommen:
π(Θ|x1 , · · · , xn ) ∝ l(Θ; x1 , · · · , xn ) × π(θ)
mit der
Likelihood/Plausibilitäts-Funktion
l(Θ; x1 , · · · , xn ) = Πni=1 f (xi |Θ)
die sagt wie wahrscheinlich die beobachtete Stichprobe als Funktion der Parameter ist. Die gesamte
Stichproben-basierte Info über den Parameter ist in der Likelihood enthalten!
Mittels A-priori-Dichte kann eine aktuelle Dichte für X bestimmt werden, die Prädiktivdichte:
Z
dθ f (x|θ) π(θ|D)
f (x|D) =
θ
In dieser Prädiktivdichte sind alle Informationen aus dem stochastischen Modell, der A-priori-Dichte
und den beobachteten Daten verarbeitet.
Achillesferse der Bayesianischen Statistik ist die Bestimmung der A-priori-Wahrscheinlichkeit!
Literatur: http://de.wikipedia.org/wiki/Bayestheorem,
http://www.scholarpedia.org/article/Bayesian statistics,
http://de.wikipedia.org/wiki/Bayesscher Wahrscheinlichkeitsbegriff,
http://www.cl.uni-heidelberg.de/kurs/skripte/stat/html/page023.html,
Koch: Einführung in die Bayes-Statistik;
D.S. Sivia: Data analysis: a Bayesian tutorial for scientists and engineers;
Bishop: Pattern recognition and machine learning, 2006;
Held: Methoden der statistischen Inferenz: Likelihood und Bayes 2008;
Aufgaben
1. Likelihood-Funktion für gauß-verteilte Stichprobe mit Mittelwert 2 und StandardAbweichung 0.4
Plotten Sie die Likelihood-Funktion für 4 gauß-verteilte Stichprobe mit den Stichproben-Umfängen
4, 10, 50 und 100 als Funktion des Mittelwerts L(µ), der Standardabweichung L(σ) oder beider
Momente L(µ, σ).
Hilfreich für die zweieinhalb dimensionale Darstellung der Likelihood-Funktion über Mittelwert
und Standardabweichung ist
imshow(L,extent=[meanx[0],meanx[M-1],stdy[0],stdy[M-1]],origin=’lower’)
Diskutieren Sie das Ergebnis.
2. Bayes-Schätzung zum Münzwurf
Machen Sie sich mit dem Vorgehen bei der Bayes-Schätzung anhand des unten aufgeführten python-Codes vertraut, indem Sie den Einfluss der unterschiedlichen prior-Annahmen in
Abhängigkeit von der Anzahl der Wurfwiederholungen N untersuchen.
(a) Eine faire Münze werde nur einmal, zweimal oder 10-mal geworfen.
(b) Eine mit π(K) = 0.001 gezinkte Münze werde 100 mal geworfen.
(c) Entdecken Sie interessante Fälle.
Vergleichen Sie mit dem frequentistischen Vorgehen.
### Code von Nadine Schuetz ###
import numpy, math
import matplotlib.pylab as py
import matplotlib.pyplot as plt
# Simulation eines Münzwurfs
def Muenzwurf(N,pi_true):
K=0; Z=0
data = numpy.random.random_sample((N))
for i in xrange(N):
if data[i] < pi_true:
data[i] = 1
K = K+1
else:
data[i] = 0
Z = Z+1
return K
# uniformer Prior = keine Hintergrundinformation
def uniformPrior():
prior = 1.0
return prior
# verzerrter Prior = Annahme einer stark gezinkter Münze, die entweder nur
Kopf oder Zahl ergibt
def biasedPrior(x):
prior = pow(x,-0.8)*pow((1-x),-0.8)/80.
return prior
# Gauss’scher Prior = Annahme einer fairen Münze, die gleichwahrscheinlich
Kopf & Zahl ergibt
def fairPrior(x):
prior = numpy.exp(-pow((0.5-x),2)/(2*pow(0.05,2)))
# Gauss-Funktion um 0.5 mit Standardabweichung = 0.05
return prior
if __name__==’__main__’:
# Simulation eines Münzwurs
N = 10
# Anzahl aller Würfe
pi_true = 0.5
# wahre Wahrscheinlickeit um
Kopf zu werfen -> 0.5 = faire Münze
K = Muenzwurf(N,pi_true)
# Anzahl der observierten Kopf-Würfe
print ’Es wurde ’,K, ’ mal Kopf und ’,N-K, ’ mal Zahl geürfelt.’
# Intervall möglicher pi-Werte
# (wegen des biased Priors sind 0 & 1 Polstellen, ohne biased Prior
kann der Bereich 0 & 1 einschliessen!)
pi_min = 0.01
pi_max = 0.99
npi = 100
pi_interval=numpy.linspace(pi_min,pi_max,npi)
# Likelihood-Funktion
Likelihood = pow(pi_interval,K)*pow((1-pi_interval),N-K)
# angenommene Prior-Funktion
priorflat = uniformPrior()
priorfair = fairPrior(pi_interval)
priorbiased = biasedPrior(pi_interval)
# Posterior-Dichte (zur Anschaulichkeit reskaliert)
posteriorflat = numpy.multiply(Likelihood,priorflat)
maxiflat = posteriorflat.max()
posteriorflat = numpy.divide(posteriorflat, maxiflat)
posteriorfair = numpy.multiply(Likelihood,priorfair)
maxfair = posteriorfair.max()
posteriorfair = numpy.divide(posteriorfair, maxfair)
posteriorbiased = numpy.multiply(Likelihood,priorbiased)
maxbiased = posteriorbiased.max()
posteriorbiased = numpy.divide(posteriorbiased, maxbiased)
# Plotten der Posterior-Dichten & der Prior-Funktionen
plt.subplots_adjust(wspace=0.4)
plt.subplot(121)
py.plot(pi_interval,posteriorflat,’b-’)
py.plot(pi_interval,posteriorfair,’g-’)
py.plot(pi_interval,posteriorbiased,’r-’)
py.xlabel(’$\pi$ Wlkt. fuer Kopf’,fontsize = 15, weight= ’bold’)
py.ylabel(’Posterior Dichte p($\pi$|Wuerfe)’,fontsize = 15, weight= ’bold’)
plt.subplot(122)
py.plot(pi_interval,0.5*numpy.ones(npi),’b-’)
py.plot(pi_interval,priorfair,’g-’)
py.plot(pi_interval,priorbiased,’r-’)
py.xlabel(’$\pi$ Wlkt. fuer Kopf’,fontsize = 15, weight= ’bold’)
py.ylabel(’Prior Funktionen p($\pi$|Info)’,fontsize = 15, weight= ’bold’)
Herunterladen