Weiter zum Inhalt

Einführung in Monte-Carlo-Methoden

In diesem Tutorial lernst du die Monte-Carlo-Methodik und ihre Anwendungen in der Datenwissenschaft kennen, etwa Integrationsnäherung und Parameterschätzung.
Aktualisiert 18. Sept. 2026  · 6 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Einführung

\n

Zwei große Klassen numerischer Probleme, die in der Datenanalyse auftreten, sind Optimierungs- und Integrationsprobleme. Die zu einem Modell gehörenden Schätzer lassen sich nicht immer analytisch berechnen, daher greifen wir häufig zu numerischen Verfahren. Eine Möglichkeit, dieses Problem zu umgehen, ist die Simulation. Bei der Monte-Carlo-Schätzung werden hypothetische Ziehungen aus einer Wahrscheinlichkeitsverteilung simuliert, um wichtige Kenngrößen dieser Verteilung zu berechnen.

\n

Die Grundidee der Monte-Carlo-Methode besteht darin, das Integral als Erwartungswert bezüglich einer geeigneten Wahrscheinlichkeitsverteilung zu schreiben und diesen anschließend mit dem Momentenmethode-Schätzer zu approximieren ($E[g(X)] \\approx \\overline{g(X)} = \\dfrac{1}{n}\\sum g(X_{i})$).

\n

Haben wir eine stetige Funktion $g(\\theta)$ und wollen über das Intervall (a,b) integrieren, können wir das Integral als Erwartungswert einer gleichverteilten Zufallsvariablen $U \\sim U[a,b]$ umschreiben, also:

\n
\"function\"
\n

Mit dem Momentenmethode-Schätzer ergibt sich für die Integrationsnäherung:

\n
\"function\"
\n

Wobei die

\n
\"values\"
\n

simulierte Werte aus einer Gleichverteilung sind.

\n

Beispiel 1: Exponentielle Integrationsnäherung

\n

1) Gegeben sei die Funktion $f(x)= e^{x}$. Das Integral über das Intervall [3,5] ist:

\n
\"function\"
\n

Die Monte-Carlo-Näherung des Integrals ist:

\n
#       Declaring the desired function
f = function(x){return(exp(x))}
#       Declaring the absolute error function
error = function(x,y){return(abs(x-y))}
#       The actual integral answer
ans = exp(5)-exp(3)

set.seed(6971)
#       number of iterations
n = 10^2
#       simulated uniform data
x= runif(n,3,5)
#       MonteCarlo approximation
MCa= (5-3)*mean(f(x))
#       Approximation error
e = error(ans,MCa)

rest =  data.frame(n = n,MCapprox = MCa,error = e)
set.seed(6971)
for(k in 3:6){
  n = 10^k
  x = runif(n,3,5)
  mca = (5-3)*mean(f(x))
  rest = rbind(rest,c(n,mca,error(ans,mca) ) )
}

kable(rest,digits = 5,align = 'c',caption = \"Integral Monte Carlo approximation results\",
      col.names =c(\"Number of simulations\",\"Monte Carlo approximation\",\"Error approximation\"))
\n

Generalisierte Monte-Carlo-Näherung

\n

Im allgemeinen Fall lautet die Integrationsnäherung für eine gegebene Verteilung f:

\n
\"function\"
\n

Ein Algorithmus zur Konstruktion von $\\widehat{I}$ lässt sich in folgenden Schritten beschreiben:

\n

1) Erzeuge \"values\" aus einer f-Verteilung.

\n

2) Berechne: \"function\"

\n

3) Bestimme den Stichprobenmittelwert: $$\\overline{I} = \\dfrac{1}{n}\\sum_{k=1}^{n}\\dfrac{g(\\theta_k)}{f(\\theta_k)}$$

\n

Im nächsten Abschnitt zeigen wir eine einfache Monte-Carlo-Funktion, um zu veranschaulichen, wie der Algorithmus arbeitet. Dabei sind a und b die Parameter der Gleichverteilung, n die Anzahl der gewünschten Simulationen und f die zu integrierende Funktion.

\n
# The simple Monte Carlo function
MCaf = function(n,a,b,f){
x = runif(n,a,b)
MCa = (b-a)*mean(f(x))
return(MCa)
}
\n

Monte-Carlo-Methoden in der Bayesianischen Datenanalyse

\n

Die Grundidee der Bayesianischen Datenanalyse ist, ein Modell ( z. B. ein Regressions- oder Zeitreihenmodell ) mit einem Ansatz der Bayesianischen Inferenz zu schätzen. Wir nehmen an, dass unsere interessierenden Parameter eine theoretische Verteilung haben. Diese Verteilung (Posterior) wird mithilfe der Verteilung der beobachteten Daten (Likelihood) und der vorherigen bzw. externen Informationen über unsere Parameter (Prior-Verteilung) mittels des Satzes von Bayes aktualisiert.

\n

$$p(\\theta / X) \\text{ } \\alpha\\text{ } p(X/\\theta)p(\\theta)$$ Dabei gilt:

\n

$p(\\theta/X)$ ist die Posterior-Verteilung des Parameters.

\n

$p(X/\\theta)$ ist die Stichprobenverteilung der beobachteten Daten ( Likelihood ).

\n

$p(\\theta)$ ist die Prior-Verteilung des Parameters.

\n

Das Hauptproblem im Bayesianischen Ansatz ist die Schätzung der Posterior-Verteilung. Markov-Chain-Monte-Carlo-Methoden ( mcmc ) erzeugen eine Stichprobe aus der Posterior-Verteilung und approximieren Erwartungswerte, Wahrscheinlichkeiten oder Quantile mithilfe von Monte-Carlo-Methoden.

\n

In den nächsten beiden Abschnitten geben wir zwei Beispiele, um Wahrscheinlichkeiten und Quantile einer theoretischen Verteilung zu approximieren. Das oben skizzierte Vorgehen entspricht den gängigen Methoden im Bayesianischen Ansatz.

\n

Beispiel 2: Wahrscheinlichkeitsnäherung einer Gammaverteilung

\n

Angenommen, wir möchten die Wahrscheinlichkeit berechnen, dass eine Zufallsvariable $\\theta$ zwischen 0 und 5 liegt, also $P(0 < \\theta < 5)$, wobei $\\theta$ gammaverteilt ist mit den Parametern a = 2 und b = 1/3 ($\\theta \\sim Gamma(a = 2,b = 1/3)$). Dann gilt für die Wahrscheinlichkeit:

\n
\"function\"
\n

Wobei $I_{[0,5]}(\\theta) = 1$ ist, falls $\\theta$ im Intervall [0,5] liegt. Die Idee der Monte-Carlo-Näherung ist, die Anzahl der Beobachtungen zu zählen, die in [0,5] fallen, und diese durch die Gesamtzahl der simulierten Daten zu teilen.

\n
set.seed(6972)
#       number of iterations
n = 10^2
#       simulated uniform data
x= rgamma(n,shape = 2,1/3)
#       MonteCarlo approximation
MCa= mean(x <= 5)
#       Approximation error
e = error(pgamma(5,2,1/3),MCa)

rest =  data.frame(n = n,MCapprox = MCa,error = e)

for(k in 3:6){
  n = 10^k
  x= rgamma(n,shape = 2,1/3)
  mca= mean(x <= 5)
 rest = rbind(rest,c(n,mca,error(pgamma(5,2,1/3),mca) ) )
}

kable(rest,digits = 5,align = 'c',caption = \"Probability Monte Carlo approximation results\",
      col.names =c(\"Number of simulations\",\"Monte Carlo approximation\",\"Error approximation\"))
\n

Beispiel 3: Quantilsnäherung einer Normalverteilung

\n

Angenommen, wir möchten das 0,95-Quantil einer Zufallsvariable $\\theta$ berechnen, die normalverteilt ist mit $\\mu = 20$ und $\\sigma = 3$ ($\\theta \\sim normal(\\mu = 20,\\sigma^{2} = 9)$). Dann lautet das 0,95-Quantil:

\n
\"function\"
\n

Die Grundidee ist, den größten Stichprobenwert zu finden, dessen Wahrscheinlichkeit höchstens 0,95 beträgt. Die Monte-Carlo-Quantilsnäherung wird geschätzt, indem wir das Quantil der simulierten Daten mit quantile() berechnen.

\n
set.seed(6973)
#       number of iterations
n = 10^2
#       simulated uniform data
  x= rnorm(n,20,3)
#       MonteCarlo approximation
MCa= quantile(x,0.95)
#       Approximation error
e = error(qnorm(0.95,20,3),MCa)

rest =  data.frame(n = n,MCapprox = MCa,error = e)

for(k in 3:6){
  n = 10^k
  x= rnorm(n,20,3)
  mca= quantile(x,0.95)
 rest = rbind(rest,c(n,mca,error(qnorm(0.95,20,3),mca) ) )
}

kable(rest,digits = 5,align = 'c',caption = \"Quantile Monte Carlo approximation results\",
      col.names =c(\"Number of simulations\",\"Monte Carlo approximation\",\"Error approximation\"),row.names = FALSE)
\n

Diskussion und Fazit

\n

Monte-Carlo-Näherungen sind ein alternatives Werkzeug zur Integrationsnäherung und in der Bayesianischen Inferenz unverzichtbar, insbesondere bei anspruchsvollen, komplexen Modellen. Wie alle drei Beispiele zeigen, liefern Monte-Carlo-Methoden exzellente Approximationen, erfordern dafür jedoch sehr viele Simulationen, um den Approximationsfehler nahe null zu bringen.

\n

Literatur

\n

1) Introducing Monte Carlo methods with R, Springer 2004, Christian P. Robert and George Casella.

\n

2) Handbook of Markov Chain Monte Carlo, Chapman and Hall, Steve Brooks, Andrew Gelman, Galin L. Jones, and Xiao-Li Meng.

\n

3) Introduction to mathematical Statistics, Pearson, Robert V. Hogg, Joseph W. Mckean, and Allen T. Craig.

\n

4) Statistical Inference An Integrated Approach, Chapman and Hall, Helio S. Migon, Dani Gamerman, Francisco Louzada.

Themen
R
Datenwissenschaft