This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/bootstrap/lecture/bootstrap.tex

197 lines
9.6 KiB
TeX

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{\tr{Bootstrap Methods}{Bootstrap Methoden}}
Beim Bootstrap erzeugt man sich die Verteilung von Statistiken durch Resampling
aus der Stichprobe. Das hat mehrere Vorteile:
\begin{itemize}
\item Weniger Annahmen (z.B. muss eine Stichprobe nicht normalverteilt sein).
\item H\"ohere Genauigkeit als klassische Methoden.
\item Allgemeing\"ultigkeit: Bootstrap Methoden sind sich sehr
\"ahnlich f\"ur viele verschiedene Statistiken und ben\"otigen nicht
f\"ur jede Statistik eine andere Formel.
\end{itemize}
\begin{figure}[tp]
\includegraphics[width=0.8\textwidth]{2012-10-29_16-26-05_771}\\[2ex]
\includegraphics[width=0.8\textwidth]{2012-10-29_16-41-39_523}\\[2ex]
\includegraphics[width=0.8\textwidth]{2012-10-29_16-29-35_312}
\caption{\label{statisticalpopulationfig}\tr{Why can we only measure a sample of the
population?}{Warum k\"onnen wir nur eine Stichprobe der
Grundgesamtheit messen?}}
\end{figure}
Zur Erinnerung: In der Statistik interessieren wir uns f\"ur
Eigenschaften einer Grundgesamtheit. z.B. die mittlere L\"ange von
sauren Gurken (\figref{statisticalpopulationfig}). Aus der
Grundgesamtheit wird eine Stichprobe (simple random sample, SRS)
gezogen, da niemals die gesamte Grundgesamtheit gemessen werden kann.
Dann wird aus dieser einzigen Stichprobe die gew\"unschte Gr\"o{\ss}e
berechnet (die mittlere Gr\"o{\ss}e der sauren Gurken) und man hofft,
dass die erhaltene Zahl an der entsprechenden unbekannten Gr\"o{\ss}e
der Grundgesamtheit (der Populationsparameter) m\"oglichst nah dran
ist. Eine Aufgabe der Statistik ist es, herauszubekommen wie gut der
Populationsparameter abgesch\"atzt worden ist.
Wenn wir viele Stichproben ziehen w\"urden, dann k\"onnte man f\"ur
jede Stichprobe den gew\"unschten Parameter berechnen, und von diesen
die Wahrscheinlichkeitsverteilung \"uber ein Histogramm bestimmen ---
die ``Stichprobenverteilung'' (sampling distribution,
\subfigref{bootstrapsamplingdistributionfig}{a}).
\begin{figure}[tp]
\includegraphics[height=0.2\textheight]{srs1}\\[2ex]
\includegraphics[height=0.2\textheight]{srs2}\\[2ex]
\includegraphics[height=0.2\textheight]{srs3}
\caption{\label{bootstrapsamplingdistributionfig}Bootstrap der
Stichprobenvertielung (a) Von der Grundgesamtheit (population) mit
unbekanntem Parameter (z.B. Mittelwert $\mu$) zieht man
Stichproben (SRS: simple random samples). Die Statistik (hier
Bestimmung von $\bar x$) kann f\"ur jede Stichprobe berechnet
werden. Die erhaltenen Werte entstammen der
Stichprobenverteilung. Meisten wird aber nur eine Stichprobe
gezogen! (b) Mit bestimmten Annahmen und Theorien kann man auf
die Stichprobenverteilung schlie{\ss}en ohne sie gemessen zu
haben. (c) Alternativ k\"onnen aus der einen Stichprobe viele
Bootstrap-Stichproben generiert werden (resampling) und so
Eigenschaften der Stichprobenverteilung empirisch bestimmt
werden. Aus Hesterberg et al. 2003, Bootstrap Methods and
Permuation Tests}
\end{figure}
In Wirklichkeit haben wir aber nur eine Stichprobe. Wir behelfen uns
dann mit Theorien, die meistens bestimmte Annahmen \"uber die Daten
machen (z.B. Normalverteilung), und uns erlauben etwas \"uber die
Genaugigkeit unserer Sch\"atzung aus der Stichprobe auszusagen
(z.B. die Formel $\sigma/\sqrt{n}$ f\"ur den Standardfehler des
Mittelwerts, die uns die Standardabweichung angibt, mit dem die
Mittelwerte der Stichproben um den Populationsmittelwert streuen
\subfigref{bootstrapsamplingdistributionfig}{b}).
Wir k\"onnen aber auch aus der einen Stichprobe die wir haben durch
Resampling viele neue Stichproben generieren (Bootstrap). Von diesen
k\"onnen wir jeweils die gew\"unschte Gr\"o{\ss}e berechnen und ihre
Verteilung bestimmen (Bootstrap Verteilung,
\subfigref{bootstrapsamplingdistributionfig}{c}). Diese Verteilung ist
interessanterweise in ihrer Breite und Form der Stichprobenverteilung
sehr \"ahnlich. Nur streut sie nicht um den Populationswert sonder um
die Sch\"atzung aus der Stichprobe. Wir k\"onnen die
Bootstrapverteilung aber benutzen um Aussagen \"uber die Genauigkeit
unserer Sch\"atzung zu treffen (z.B. Standardfehler,
Konfidenzintervalle).
Beim Bootstrap erzeugen wir durch Resampling neue Stichproben und
benutzen diese, um die Stichprobenverteilung einer Statistik zu
berechnen. Die Bootstrap Stichproben haben jeweils den gleichen Umfang
wie die urspr\"unglich gemessene Stichprobe und werden durch Ziehen
mit Zur\"ucklegen gewonnen. Jeder Wert der urspr\"unglichen Stichprobe
kann also einmal, mehrmals oder gar nicht in einer Bootstrap
Stichprobe vorkommen.
\section{Bootstrap des Standardfehlers}
Am besten l\"asst sich die Bootstrap Methode am Beispiel des
Standardfehlers des Mittelwertes veranschaulichen. Aus der Stichprobe
k\"onnen wir den Mittelwert berechnen. Der Standardfehler des
Mittelwerts gibt die Standardabweichung an, mit der wir erwarten, dass
der gemessene Mittelwert um den Populationsmittelwert streut.
\begin{figure}[tp]
\includegraphics[width=1\textwidth]{bootstrapsem}
\caption{\label{bootstrapsemfig}Bootstrap des Standardfehlers des
Mittelwertes. Die --- normalerweise unbekannte ---
Stichprobenverteilung des Mittelwerts (rot) ist um den
Populationsmittelwert bei $\mu=0$ zentriert. Die
Bootstrap-Verteilung (blau), die durch Resampling aus einer
Stichprobe gewonnen worden ist, hat die gleiche Form und Breite
wie die Stichprobenverteilung, ist aber um den Mittelwert der
Stichprobe zentriert. Die Standardabweichung der
Bootstrapverteilung kann also als Sch\"atzer f\"ur den
Standardfehler des Mittelwertes verwendet werden.}
\end{figure}
Durch Bootstrap k\"onnen wir unsere Stichprobe resamplen und dadurch
eine ganze Verteilung von Mittelwerten generieren
(\figref{bootstrapsemfig}). Die Standardabweichung dieser Verteilung
ist dann der gesuchte Standardfehler des Mittelwerts.
\begin{exercise}{bootstrapsem.m}{bootstrapsem.out}
Erzeuge die Verteilung der Mittelwerte einer Stichprobe durch Bottstrapping,
um daraus den Standardfehler des Mittelwerts zu bestimmen.
\begin{enumerate}
\item Ziehe 1000 normalverteilte Zufallszahlen und berechne deren
Mittelwert, Standardabweichung und Standardfehler
($\sigma/\sqrt{n}$).
\item Resample die Daten 1000 mal (Ziehen mit Zur\"ucklegen) und
berechne jeweils den Mittelwert.
\item Plotte ein Histogramm dieser Mittelwerte, berechne deren
Mittelwert und Standardabweichung und vergleiche mit den Werten
der Grundgesamtheit und der Stichprobe.
\end{enumerate}
\end{exercise}
\section{Permutationstests}
Bei statistischen Tests wird nach der Wahrscheinlichkeit, ob die
beobachtete Me{\ss}gr\"o{\ss}e einer Stichprobe aus der Nullhypothese
kommt, gefragt. Ist diese Wahrscheinlichkeit kleiner als das
Signifikanzniveau, kann die Nullhypothese verworfen werden.
Traditionell werden diese Wahrscheinlichkeiten \"uber theoretisch
hergeleitete Wahrscheinlichkeitsverteilungen berechnet. Dabei gehen
immer gewisse Annahmen \"uber die Daten ein und es mu{\ss} der zu den
Daten passende Test ausgew\"ahlt werden.
Alternativ kann die Wahrscheinlichkeits(dichte)verteilung der
Nullhypothese aus den Daten selbst gewonnen werden. Dabei m\"ussen die
Daten entsprechend der Nullhypothese neu aus der Stichprobe gezogen
werden.
Diese ``Permutationstests'' haben den Vorteil, dass nur die
Eigenschaft von Interesse zerst\"ort wird, um die Nullhypothese zu
generieren. Alle anderen Eigenschaften der Daten bleiben erhalten.
\begin{figure}[tp]
\includegraphics[width=1\textwidth]{permutecorrelation}
\caption{\label{permutecorrelationfig}Permutationstest f\"ur
Korrelationen. Der Korrelationskoeffizient eines Datensatzes mit
200 Datenpaaren ist $\rho=0.21$. Die Nullhypothesenverteilung der
aus den permutierten, unkorrelierten Datens\"atzen berechneten
Korrelationskoeffizienten ergibt die gelbe Verteilung, die um Null
streut. Der gemessene Korrelationskoeffizient ist deutlich
gr\"o{\ss}er als das 95\,\%-Perzentil der
Nullhypoothesenverteilung und darum eine signifikante
Korrelation.}
\end{figure}
Sehr sch\"on lassen sich Permutationstest am Beispiel von
Korrelationen veranschaulichen. Gegeben sind Datenpaare $(x_i, y_i)$.
Daraus k\"onnen wir den Korrelationskoeffizienten berechnen. Wir
wissen dann aber noch nicht, ob der berechnete Wert tats\"achlich eine
Korrelation anzeigt. Die Nullhypothese ist, dass die Daten nicht
miteinander korreliert sind. Indem wir die $x$-Werte und die $y$-Werte
unabh\"angig voneinander permutieren (ihre Reihenfolge zuf\"allig neu
anordnen), werden die Korrelationen der Datenpaare zerst\"ort. Wenn
wir das viele Male wiederholen, bekommen wir die Verteilung der
Korrelationskoeffizienten f\"ur nichtkorrelierte Daten. Aus dieser
Verteilung der Nullhypothese k\"onnen wir dann dann die Signifikanz
der tats\"achlich gemessenen Korrelation bestimmen.
\begin{exercise}{correlationsignificance.m}{correlationsignificance.out}
Bestimme die Signifikanz eines Korrelationskoeffizienten.
\begin{enumerate}
\item Erzeuge korrelierte Daten indem zu zuf\"allig gezogenen
$x$-Werten $y$-Werte gem\"a{\ss} $y=0.2 \cdot x$ berechnet werden,
zu denen weitere normalverteilte Zufallszahlen addiert werden.
\item Berechne den Korrelationskoeffizient dieser Datenpaare.
\item Generiere die Verteilung der Nullhypothese ``unkorrelierte
Daten'' indem die $x$- und $y$-Daten 1000-mal unabh\"angig
permutiert werden \matlabfun{randperm} und jeweils der
Korrelationskoeffizient berechnet wird.
\item Bestimme aus den Nullhypothesendaten das 95\,\%-Perzentil und
vergleiche es mit dem tats\"achlichen Korrelationskoeffizienten.
\end{enumerate}
\end{exercise}