<- 100000
n <- rnorm(n, mean=10, sd=3) x
7 Grenzwertsätze
In diesem Kapitel gehen wir davon aus, dass eine Zufallsvariable immer wieder neu gezogen wird. Als Ausgangspunkt der Überlegungen dient eine Folge von unabhängigen, identisch verteilten (engl. independent and identically distributed, i.i.d.) Zufallsvariablen
7.1 Gesetz der großen Zahl
Aus den Elementen der Folge von Zufallsvariablen berechnen wir für jedes
Achtung: Es handelt sich bei
Da der Durchschnitt
und
Mit anderen Worten: Wenn man den Durchschnitt aus immer mehr Folgenelementen bildet, dann ist der Erwartungswert des Durchschnitts immer
Diese Einsicht lässt sich mathematisch präzise formulieren.
Als alternative Notation findet man oft
Für die Gültigkeit des Gesetzes der großen Zahl müssen einige Voraussetzungen erfüllt sein. Die Folgenelemente müssen identisch und unabhängig verteilt sein. Außerdem muss der Erwartungswert der Zufallsvariable
Das Gesetz der großen Zahl gilt nicht nur für den Erwartungswert, sondern auch für andere wichtige Kenngrößen der Zufallsvariablen. So konvergiert die Varianz der Folgenelemente gegen die Varianz der Zufallsvariable; die empirische Verteilungsfunktion der Folgenelemente konvergiert gegen die Verteilungsfunktion der Zufallsvariable; die Quantile der Folgenelemente konvergieren gegen die Quantile der Zufallsvariable; und das Histogramm der Folgenelmente konvergiert gegen die Dichte der Zufallsvariable.
7.2 Monte-Carlo (I)
Das Gesetz der großen Zahl hat eine weitreichende Konsequenz, denn daraus folgt: Um die Verteilung einer Zufallsvariable zu kennen, muss man nicht unbedingt die Verteilungsfunktion, Dichte oder Wahrscheinlichkeitsfunktion kennen, sondern es reicht aus, wenn man einen Algorithmus zur Verfügung hat, der viele unabhängige Ziehungen aus der Zufallsvariable liefert. Solche Algorithmen gibt es - und viele davon sind in R implementiert. Die Ziehungen, die vom Computer generiert werden, nennt man Zufallszahlen (engl. random numbers). Verfahren, die auf solchen Algorithmen beruhen, werden Monte-Carlo-Simulationen genannt, weil das Casino von Monte Carlo früher als Inbegriff von Zufälligkeit galt.
Die R-Funktionen zum Erzeugen von Zufallszahlen haben alle die Form
rVERTEILUNG(n, PARAMETER)
Dabei gibt n
an, wie viele Folgenelemente gezogen werden sollen. Für die Standardverteilungen, die in Kapitel 4 behandelt wurden, lauten die Funktionsnamen:
rbinom(n, size, prob)
rpois(n, lambda)
rnorm(n, mean, sd)
rexp(n, rate)
runif(n, min, max)
rt(n, df)
Für die Paretoverteilung gibt es keinen vorgefertigten Algorithmus. Das Paket distributionsrd
stellt jedoch die Funktion
rpareto(n, k, xmin)
bereit, mit der Zufallszahlen aus einer Paretoverteilung gezogen werden können.
Die Vorgehensweise einer Monte-Carlo-Simulation versteht man am einfachsten anhand eines Beispiels: Einige Kennzahlen einer Normalverteilung mit Erwartungswert
Achtung: Die R-Funktionen zur Normalverteilung erwarten als Parameter für die Streuung nicht die Varianz, sondern die Standardabweichung. Zuerst werden x
geschrieben.
Der Erwartungswert wird approximiert durch den Durchschnitt der 100000 Zufallszahlen. In diesem Beispiel ergibt sich aus den Ziehungen
mean(x)
[1] 9.99398
Dieser Wert liegt sehr nahe an dem theoretischen Erwartungswert
Die Varianz der Zufallszahlen ist
var(x)
[1] 8.967859
Der Wert weicht nur wenig von der theoretischen Varianz
Als 0.75-Quantil erhält man
quantile(x, 0.75)
75%
12.01152
Zum Vergleich: Das theoretische 0.75-Quantil der
qnorm(0.75, mean=10, sd=3)
[1] 12.02347
Auch hier ist die Approximation durch die Monte-Carlo-Simulation also sehr präzise.
Der folgende Plot zeigt das Histogramm der Zufallszahlen zusammen mit der theoretischen Dichtefunktion der Normalverteilung, die als rote Linie ergänzt ist.
hist(x, breaks=100, probability=TRUE,
main="Histogramm der N(0,1)-Zufallszahlen")
<- seq(from=0, to=20, length=200)
g lines(g, dnorm(g, mean=10, sd=3), col="red")
Eine Beschreibung des Befehls hist
findet man im Kapitel A.5. Dort wird auch erklärt, wie man die Funktion lines
einsetzt.
Im folgenden Plot sieht man die empirische Verteilungsfunktion der Ziehungen ecdf
. Es handelt sich zwar um eine Treppenfunktion, aber die Stufen sind so klein (nämlich jeweils lines
wird die theoretische Verteilungsfunktion der Normalverteilung als rote Linie ergänzt.
plot(ecdf(x),
main="Verteilungsfunktion")
<- seq(from=-5, to=25, length=200)
g lines(g, pnorm(g, mean=10, sd=3), col="red")
Die beiden Linien stimmen praktisch perfekt überein. Man kann also die theoretische Verteilungsfunktion beliebig genau bestimmen, indem man eine große Zahl von Zufallszahlen generiert und ihre empirische Verteilungsfunktion bestimmt.
Offensichtlich ist es nicht sinnvoll, eine Monte-Carlo-Simulation durchzuführen, um Erwartungswert, Varianz, Quantile und Histogramm einer Verteilung zu finden, für die man diese Größen auch einfach theoretisch herleiten oder irgendwo nachschlagen kann. Monte-Carlo-Simulationen sind jedoch immer dann extrem hilfreich,
- wenn es zwar schwierig oder aufwendig ist, die theoretischen Größen zu bestimmen,
- wenn man aber sehr leicht und schnell Zufallszahlen erzeugen kann aus der Verteilung, die einen interessiert.
Das passiert beispielsweise, wenn wir uns für eine Zufallsvariable interessieren, die zwar nicht unmittelbar einer Standardverteilung folgt, die sich aber aus einer anderen Zufallsvariable ergibt, welche wiederum einer Standardverteilung folgt. Das nächste Beispiel zeigt das.
Die Zufallsvariable
<- 100000
n <- rnorm(n, mean=8, sd=0.5)
x <- exp(x)
y <- ifelse(y <= 2000, 0, 0.35*(y-2000))
s <- y-s
z mean(z)
[1] 2865.98
Zur Erläuterung: Die Funktion ifelse
erwartet als Argumente drei Vektoren gleicher Länge. Der erste Vektor ist ein Vektor logischer Ausdrücke (TRUE
/FALSE
). Für jedes Element mit dem Wert TRUE
gibt die Funktion als Output den entsprechenden Wert des zweiten Vektors (der if
-Vektor), für jedes Element mit dem Wert FALSE
ist der Output der entsprechende Wert des dritten Vektors (der else
-Vektor). In diesem Beispiel gibt die Funktion also als Steuerlast eine 0 aus, wenn die Bedingung y <= 2000
wahr ist. Wenn die Bedingung falsch ist, wird die Steuerlast nach der Flat-Rate-Formel berechnet.
Die Dichte des Nettolohns kann durch das Histogramm approximiert werden. Diese Form der Dichte entspricht keiner bekannten Standardverteilung.
hist(z, probability=TRUE, breaks=100, xlim=c(0, 10000),
main="Histogramm des Nettolohns")
Das Beispiel zeigt, wie man aus einer Zufallsvariable x
eine andere Zufallsvariable z
berechnet. Die Berechnungen wie z.B. y <- exp(x)
werden in R automatisch für alle Elemente des Vektors x
durchgeführt und in die entsprechenden Elemente des Vektors y
geschrieben. Intern wird in R eine Schleife durchlaufen, die für jedes einzelne Element des Vektors die Berechnung ausführt. Diese Schleife lässt sich auch explizit schreiben, z.B. als for
-Schleife. Das hat den Vorteil, dass das Programm den Ablauf der Simulation genauer abbildet. Außerdem kann man in einer for
-Schleife auch komplexe Berechnungen durchführen, für die es in R keine Funktionen gibt, die mit Vektoren arbeiten. Ein gewisser Nachteil einer for
-Schleife ist jedoch die längere Rechenzeit.
Der folgende R-Code wiederholt das letzte Beispiel und zeigt, wie man eine for
-Schleife einsetzt.
<- 100000
n <- rep(n, 0)
z
for(i in 1:n){
<- rnorm(1, mean=8, sd=0.5)
x <- exp(x)
y if(y <= 2000){
<- 0
s else {
} <- 0.35*(y-2000)
s
}<- y-s
z[i]
}mean(z)
[1] 2862.214
Vor dem Start der Schleife wird der Vektor z
initialisiert, also so vorbereitet, dass er die Ergebnisse der einzelnen Schleifendurchläufe aufnehmen kann. Es ist gleichgültig, welche Werte anfangs in z
stehen, da sie ohnehin überschrieben werden. In diesem Beispiel ist z
zu Beginn ein Vektor aus Nullen.
7.3 Zentraler Grenzwertsatz
Der zentrale Grenzwertsatz (engl. central limit theorem) ist aus zwei Gründen relevant. Zum einen liefert er eine mathematische Begründung dafür, warum in der Realität so viele Verteilungen zu finden sind, die gut durch eine Normalverteilung modelliert werden können. Zum zweiten ist er der Ausgangspunkt für die Herleitung von Konfidenzintervallen (Kapitel 10) und Hypothesentests (Kapitel 11 und Kapitel 12).
Für den zentralen Grenzwertsatz betrachtet man nicht die Folge von Zufallsvariablen
Die Folge der standardisierten Durchschnitte bezeichnen wir mit
Etwas weniger präzise - aber dafür leichter verständlich - sagt der zentrale Grenzwertsatz: Der standardisierte Durchschnitt von vielen Zufallsvariablen folgt im Limes einer Standardnormalverteilung. Natürlich ist
Wenn der standardisierte Durchschnitt approximativ standardnormalverteilt ist, dann ist der Durchschnitt selber approximativ normalverteilt. Für ausreichend große
Die intuitive Bedeutung des zentralen Grenzwertsatzes lautet also: Wenn man viele unabhängige Zufallsvariablen addiert oder ihren Durchschnitt berechnet, dann ist die Summe bzw. der Durchschnitt ebenfalls eine Zufallsvariable, und zwar mit einer Normalverteilung. Das Besondere daran ist, dass die Verteilung der Summanden nicht normal sein muss. Die Normalverteilung ergibt sich quasi “aus dem Nichts”!
Auf den Beweis des zentralen Grenzwertsatzes gehen wir in diesem Kurs nicht ein, er wird in dem Bachelor-Wahlpflichtmodul Advanced Statistics vorgestellt. Der zentrale Grenzwertsatz kann erheblich verallgemeinert werden. Er gilt z.B. auch dann noch, wenn die Zufallsvariablen nicht unabhängig sind, sondern eine (nicht zu starke) Abhängigkeit aufweisen. Die Summanden müssen auch nicht unbedingt identisch verteilt sein. Die Verallgemeinerungen des zentralen Grenzwertsatzes sind aber fortgeschrittene Materie, sie werden beispielsweise in dem Master-Modul Time Series Analysis behandelt.
7.4 Monte-Carlo (II)
Wie lässt sich der zentrale Grenzwertsatz durch eine Monte-Carlo-Simulation illustrieren? Um das zu verstehen, muss man sich zunächst klar machen, dass die Folge
Um die Verteilung von
Bevor man die Schleife durchlaufen lässt, initialisiert man einen Vektor, der die Ergebnisse der Schleifendurchläufe aufnimmt. Welche Werte in diesem Vektor stehen, ist gleichgültig, da sie in der Schleife anschließend überschrieben werden. Es geht also nur darum, Platz für die Ergebnisse vorzubereiten. Hier wird der Vektor mit Nullen gefüllt.
<- 10000
R <- rep(0, R) u
Innerhalb der Schleife werden nun in jedem Durchlauf die Zufallszahlen
Der R-Code sieht folgendermaßen aus:
<- 1/2
mu <- 1/2
sigma <- 50
n
for(r in 1:R){
<- rexp(n, rate=2)
x <- mean(x)
xquer <- sqrt(n)*(xquer - mu)/sigma
u[r]
}
Zur Erklärung: Der Laufindex der Schleife r
durchläuft alle Werte von 1 bis R
. Bei jedem Durchlauf wird zuerst die Folge x
vom Umfang n
aus der Exponentialverteilung gezogen. Anschließend wird der Durchschnitt der Elemente der Folge gebildet und unter dem Namen xquer
abgespeichert. In der letzten Zeile der Schleife wird der Durchschnitt standardisiert und an die r
-te Stelle des Vektors u
geschrieben.
Das Histogramm der
hist(u, probability=TRUE, breaks=50,
main="Verteilung von U_50")
<- seq(from=-4, to=4, length=200)
g lines(g, dnorm(g), col="red")
Reduziert man die Länge der Folge auf nur
<- 5
n
for(r in 1:R){
<- rexp(n, rate=2)
x <- mean(x)
xquer <- sqrt(n)*(xquer - 1/2)/sqrt(1/4)
u[r]
}hist(u, prob=TRUE, breaks=50,
main="Verteilung von U_5")
<- seq(from=-3, to=5, length=200)
g lines(g, dnorm(g), col="red")
Wie viele Elemente die Folge