Reorganized statistic exercises and added soultions

This commit is contained in:
Jan Benda 2015-10-21 18:06:55 +02:00
parent 69b9afbc80
commit 4bb3d6dc56
16 changed files with 321 additions and 483 deletions

View File

@ -1,25 +0,0 @@
p = 0.5;
nsteps = 100;
nwalks = 1000;
y = zeros( nwalks, nsteps/10 );
for k = 1:length( y )
x = randomwalk( nsteps, p );
for j = 1:nsteps/10
y(k,j) = x((j-1)*10+1);
end
%plot( x )
%pause( 1 )
if rem(k,100) == 0
%[h1,b1] = hist( y(1:k,1), [-50:2:50] );
%[h2,b2] = hist( y(1:k,2), [-50:2:50] );
%bar( b1, h1, 1.0, 'b' );
%hold on;
%bar( b2, h2, 'FaceColor', 'r' );
%hold off;
sdev = var( y(1:k,:), 1 );
plot( sdev )
pause( 1.0 );
end
end

View File

@ -0,0 +1,34 @@
TEXFILES=$(wildcard statistics??.tex)
EXERCISES=$(TEXFILES:.tex=.pdf)
SOLUTIONS=$(EXERCISES:statistics%=solutions%)
.PHONY: pdf exercises solutions watch watchexercises watchsolutions clean
pdf : $(SOLUTIONS) $(EXERCISES)
exercises : $(EXERCISES)
solutions : $(SOLUTIONS)
$(SOLUTIONS) : solutions%.pdf : statistics%.tex instructions.tex
{ echo "\\documentclass[answers,12pt,a4paper,pdftex]{exam}"; sed -e '1d' $<; } > $(patsubst %.pdf,%.tex,$@)
pdflatex -interaction=scrollmode $(patsubst %.pdf,%.tex,$@) | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $(patsubst %.pdf,%.tex,$@) || true
rm $(patsubst %.pdf,%,$@).[!p]*
$(EXERCISES) : %.pdf : %.tex instructions.tex
pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
watch :
while true; do ! make -q pdf && make pdf; sleep 0.5; done
watchexercises :
while true; do ! make -q exercises && make exercises; sleep 0.5; done
watchsolutions :
while true; do ! make -q solutions && make solutions; sleep 0.5; done
clean :
rm -f *~ *.aux *.log *.out
cleanup : clean
rm -f $(SOLUTIONS) $(EXERCISES)

View File

@ -1,132 +0,0 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Bootstrap}}{{\bfseries\large 21. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.benda@uni-tuebingen.de}
\runningfooter{}{\thepage}{}
\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass sie
auch wirklich das macht, was sie machen soll! Teste dies mit kleinen
Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der folgenden Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
\item Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen zuerst mit einer kleinen
Anzahl von Wiederholungen, und benutze erst am Ende, wenn alles
stimmt, eine gro{\ss}e Anzahl von Wiederholungen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von matlab und das Internet, um
herauszufinden wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
\item Auch zu inhaltlichen Konzepten bietet das Internet oft viele Antworten!
\end{itemize}
\begin{questions}
\question \qt{Bootstrap des Standardfehlers}
\begin{parts}
\part Lade von Ilias die Datei \code{thymusglandweights.dat} herunter.
Darin befindet sich ein Datensatz vom Gewicht der Thymus Dr\"use in 14-Tage alten
H\"uhnerembryos in mg.
\part Lade diese Daten in Matlab (\code{load} Funktion).
\part Bestimme Histogramm, Mittelwert und Standardfehler aus den ersten 80 Datenpunkten.
\part Bestimme den Standardfehler aus den ersten 80 Datenpunkten durch 500 Mal Bootstrappen.
\part Bestimme das 95\,\% Konfidenzintervall f\"ur den Mittelwert
aus der Bootstrap Verteilung (\code{quantile()} Funktion) --- also
das Interval innerhalb dessen mit 95\,\% Wahrscheinlichkeit der
wahre Mittelwert liegen wird.
\part Benutze den ganzen Datensatz und die Bootstrapping Technik, um die Abh\"angigkeit
des Standardfehlers von der Stichprobengr\"o{\ss}e zu bestimmen.
\part Vergleiche mit der bekannten Formel f\"ur den Standardfehler $\sigma/\sqrt{n}$.
\end{parts}
\continue
\question \qt{Student t-Verteilung}
\begin{parts}
\part Erzeuge 100000 normalverteilte Zufallszahlen.
\part Ziehe daraus 1000 Stichproben vom Umfang $m$ (3, 5, 10, 50).
\part Berechne den Mittelwert $\bar x$ der Stichproben und plotte die Wahrscheinlichkeitsdichte
dieser Mittelwerte.
\part Vergleiche diese Wahrscheinlichkeitsdichte mit der Gausskurve.
\part Berechne ausserdem die Gr\"o{\ss}e $t=\bar x/(\sigma_x/\sqrt{m}$
(Standardabweichung $\sigma_x$) und vergleiche diese mit der Normalverteilung mit Standardabweichung Eins. Ist $t$ normalverteilt, bzw. unter welchen Bedingungen ist $t$ Normalverteilt?
\end{parts}
\question \qt{Korrelationen}
\begin{parts}
\part Erzeuge 1000 korrelierte Zufallszahlen $x$, $y$ durch
\begin{verbatim}
n = 1000
a = 0.2;
x = randn(n, 1);
y = randn(n, 1) + a*x;
\end{verbatim}
\part Erstelle einen Scatterplot der beiden Variablen.
\part Warum ist $y$ mit $x$ korreliert?
\part Berechne den Korrelationskoeffizienten zwischen $x$ und $y$.
\part Was m\"usste man tun, um die Korrelationen zwischen den $x$-$y$
Paaren zu zerst\"oren?
\part Mach genau dies 1000 mal und berechne jedes Mal den Korrelationskoeffizienten.
\part Bestimme die Wahrscheinlichkeitsdichte dieser Korrelationskoeffizienten.
\part Ist die Korrelation der urspr\"unglichen Daten signifikant?
\part Variiere den Parameter $a$ und \"uberpr\"ufe auf gleiche Weise die Signifikanz.
\end{parts}
\end{questions}
\end{document}

View File

@ -0,0 +1,72 @@
%% central limit theorem
n = 10000;
m = 10; % number of loops
%% (b) a single random number:
x = rand( n, 1 );
%% (c) plot probability density:
%histogram( x, 'Normalization', 'pdf' );
[h,b] = hist( x, 20 );
h = h/sum(h)/(b(2)-b(1)); % normalization
bar(b, h)
title('A uniform distribution')
xlabel('x')
ylabel('probability density')
pause( 2.0 )
%% (d) sum of two random numbers:
y = rand( n, 1 );
x = x + y;
%histogram( x, 'Normalization', 'pdf' );
[h,b] = hist( x, 20 );
h = h/sum(h)/(b(2)-b(1)); % normalization
bar(b, h)
title('Sum of two uniform distributions')
xlabel('x')
ylabel('probability density')
pause( 2.0 )
%% (f) sum up more distributions:
x = zeros( n, 1 );
means = zeros( m, 1 );
stds = zeros( m, 1 );
for i=1:m
y = rand( n, 1 ); % new uniform distributed numbers
x = x + y; % add them to the sum
mu = mean(x); % compute mean
sd = std(x); % compute standard deviation
means(i) = mu; % store mean
stds(i) = sd; % store standard deviation
%xx = min(x):0.01:max(x);
xx = -1:0.01:i+1; % x-axis values for plot of pdf
p = exp(-0.5*(xx-mu).^2/sd^2)/sqrt(2*pi*sd^2); % pdf
plot(xx, p, 'r', 'linewidth', 6 )
ns = sprintf( 'N=%d', i );
text( 0.1, 0.9, ns, 'units', 'normalized' )
hold on
%histogram( x, 20, 'Normalization', 'pdf' );
[h,b] = hist( x, 20 );
h = h/sum(h)/(b(2)-b(1)); % normalization
bar(b, h)
hold off
xlabel( 'x' )
ylabel( 'summed pdf' )
if i < 6
pause( 3.0 )
end
end
%% (h) mean and standard deviation in dependence on number of summed up distributions:
nx = 1:m;
plot( nx, means, 'b', 'linewidth', 4 );
hold on
plot( nx, stds, 'r', 'linewidth', 4 );
xx = 0:0.01:m;
sdu = 1.0/sqrt(12); % standarad deviation of the uniform distribution
plot( xx, sqrt(xx)*sdu, 'k' )
legend( 'mean', 'std', 'theory' )
xlabel('N')
hold off

View File

@ -1,162 +0,0 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Deskriptive Statistik}}{{\bfseries\large 19. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.grewe@uni-tuebingen.de}
\runningfooter{}{\thepage}{}
\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
% Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
% Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
% werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
% im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
% ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
% voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
% ``variablen\_datentypen\_\{nachname\}.m'' benannt werden
% (z.B. variablen\_datentypen\_mueller.m).
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass sie
auch wirklich das macht, was sie machen soll! Teste dies mit kleinen
Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der folgenden Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
\item Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen zuerst mit einer kleinen
Anzahl von Wiederholungen, und benutze erst am Ende, wenn alles
stimmt, eine gro{\ss}e Anzahl von Wiederholungen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von matlab und das Internet, um
herauszufinden wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
\item Auch zu inhaltlichen Konzepten bietet das Internet oft viele Antworten!
\end{itemize}
\begin{questions}
\question \qt{Wahrscheinlichkeiten eines W\"urfels I}
Der Computer kann auch als W\"urfel verwendet werden!
\begin{parts}
\part Simuliere 10000 W\"urfe mit dem W\"urfel durch Erzeugung von
ganzzahligen Zufallszahlen mit den Augenzahlen $x_i = 1, 2, \ldots 6$ .
\part Berechne die Wahrscheinlichkeit $P(3)$
des Auftretens der Augenzahl drei durch Bestimmung der Anzahl der Dreien im Datensatz.\\
Entspricht das Ergebnis deiner Erwartung?\\
\"Uberpr\"ufe auch die Wahrscheinlichkeit $P(x_i)$ der anderen Zahlen.\\
Ist das ein fairer W\"urfel?
\part Speicher die berechneten Wahrscheinlichkeiten $P(x_i)$ f\"ur das Auftreten der
gew\"urfelten Zahlen in einem Vektor und benutze die \code{bar} Funktion,
um diese Wahrscheinlichkeiten als Funktion der Augenzahl zu plotten.
\part Erstelle in einem weiterem Plot ein entsprechendes normiertes Histogramm
mit der \code{hist} Funktion.
\part \extra Wie k\"onnte man einen gezinkten W\"urfel simulieren, bei dem die sechs
dreimal so h\"aufig wie die anderen Zahlen gew\"urfelt wird?\\
Fertige von diesem W\"urfel ein Histogram aus 10000 W\"urfen an.
\end{parts}
\continue
\question \qt{Wahrscheinlichkeiten eines W\"urfels II}
Wir werten nun das Verhalten mehrerer W\"urfel aus.
\begin{parts}
\part Simuliere 20 W\"urfel, von denen jeder 100 mal geworfen wird
(jeder W\"urfel wird mit dem gleichen Zufallsgenerator simuliert).
\part Berechne aus diesem Datensatz f\"ur jeden W\"urfel ein normiertes Histogramm.
\part Bestimme den Mittelwert und die Standardabweichung f\"ur jede
Augenzahl gemittelt \"uber die W\"urfel.
\part Stelle das Ergebnis mit einem S\"aulenplot mit Fehlerbalken dar
(\code{bar} mit \code{errorbar} Funktionen).
\end{parts}
\question \qt{Wahrscheinlichkeiten der Normalverteilung}
Mit den folgenden Aufgaben wollen wir bestimmen, welcher Anteil eines
normalverteilten Datensatzes in bestimmten Grenzen symmetrisch um den
Mittelwert enthalten ist.
\begin{parts}
\part Erzeuge einen Datensatz $X = (x_1, x_2, ... x_n)$ aus
$n=10000$ normalverteilten Zufallszahlen mit Mittelwert $\mu=0$ und
Standardabweichung $\sigma=1$.
\part \label{onesigma} Wieviele dieser Daten sind maximal eine Standardabweichung vom Mittelwert entfernt?\\
D.h. wieviele Datenwerte $x_i$ haben den Wert $-\sigma < x_i < +\sigma$?\\
Wie gro{\ss} ist also die Wahrscheinlichkeit $P_{\pm\sigma}$ einen
Wert in diesem Interval zu erhalten?
\part \label{probintegral} Berechne numerisch diese
Wahrscheinlichkeit aus dem entsprechenden Integral
\[ P_{\pm\sigma}=\int_{x=\mu-\sigma}^{x=\mu+\sigma} p_g(x) \, dx \]
\"uber die Normalverteilung
\[ p_g(x) =
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \; . \]
\"Uberpr\"ufe zuerst, ob tats\"achlich
\[ \int_{-\infty}^{+\infty} p_g(x) \, dx = 1 \; . \]
Warum muss das so sein?
\part Welcher Anteil der Daten ist in den Intervallen $\pm2\sigma$ sowie $\pm3\sigma$
enthalten?
\part \label{givenfraction} Finde heraus in welchem Interval symmetrisch um den Mittelwert
50\,\%, 90\,\%, 95\,\% bzw. 99\,\% der Daten enhalten sind.
\part Was passiert mit der Wahrscheinlichkeit eine Zahl in einem bestimmten Interval
zu ziehen, wenn dieses Intervall immer kleiner wird?\\
Schreibe ein Programm, das dies illustriert.\\
Wie gro{\ss} ist die Wahrscheinlichkeit $P(x_i=0.1234)$?
\part \extra Modifiziere den Code der Teilaufgaben \pref{onesigma}
-- \pref{givenfraction} so, dass er f\"ur Datens\"atze mit
beliebigen Mittelwerten und Standardabweichungen funktioniert.\\
Teste den Code mit entsprechenden Zufallszahlen.\\
Wie bekommt man mit \code{randn} Zufallszahlen mit beliebiger
Standardabweichung und Mittelwerten?
\end{parts}
\end{questions}
\end{document}

View File

@ -1,164 +0,0 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 2}}{{\bfseries\large Deskriptive Statistik}}{{\bfseries\large 19. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.grewe@uni-tuebingen.de}
\runningfooter{}{\thepage}{}
\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
% Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
% Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
% werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
% im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
% ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
% voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
% ``variablen\_datentypen\_\{nachname\}.m'' benannt werden
% (z.B. variablen\_datentypen\_mueller.m).
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass sie
auch wirklich das macht, was sie machen soll! Teste dies mit kleinen
Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der folgenden Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
\item Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen zuerst mit einer kleinen
Anzahl von Wiederholungen, und benutze erst am Ende, wenn alles
stimmt, eine gro{\ss}e Anzahl von Wiederholungen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von matlab und das Internet, um
herauszufinden wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
\item Auch zu inhaltlichen Konzepten bietet das Internet oft viele Antworten!
\end{itemize}
\begin{questions}
\question \qt{Zentraler Grenzwertsatz}
Der Zentrale Grenzwertsatz besagt, dass die Summe von unabh\"angigen
und identisch verteilten (i.i.d. = independent and identically
distributed) Zufallsvariablen gegen die Normalverteilung konvergiert.
Den Zentralen Grenzwertsatz wollen wir uns im Folgenden veranschaulichen.
\begin{parts}
\part Versuche dir klar zu machen, was der Zentrale Grenzwertsatz
bedeutet, und wie du vorgehen k\"onntest ein Programm zu
schreiben, das den Grenzwertsatz illustriert.
\part Erzeuge 10000 zwischen 0 und 1 gleichverteilte Zufallszahlen
(Funktion \code{rand}).
\part Plotte deren Wahrscheinlichkeitsdichte (normiertes Histogram).
\part Erzeuge weitere 10000 gleichverteilte Zufallszahlen und
addiere diese zu den bereits vorhandenen auf.
\part Plotte die Wahrscheinlichkeitsdichte der aufsummierten
Zufallszahlen.
\part Wiederhole Schritt (d) und (e) viele Male.
\part Vergleiche in einer Grafik die Wahrscheinlichkeitsdichte der
aufsummierten Zufallszahlen mit der Gaussfunktion
\[ p_g(x) =
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}\]
mit dem Mittelwert $\mu$ und der Standardabweichung $\sigma$ der
aufsummierten Zufallszahlen.
\part Wie \"andert sich der Mittelwert und die
Standardabweichung/Varianz
der aufsummierten Zufallszahlen?\\
Wie h\"angen diese mit den Werten der urspr\"unglichen Verteilung
zusammen?
\part \extra \"Uberpr\"ufe den Grenzwertsatz in gleicher Weise mit exponentiell
verteilten Zufallszahlen (Funktion \code{rande}).
\end{parts}
\question \qt{Random Walk}
Im folgenden wollen wir einige Eigenschaften des Random Walks bestimmen.
\begin{parts}
\part Schreibe eine Funktion, die einen einzelnen Random Walk mit
Startwert 0 f\"ur $n$ Schritte und Wahrscheinlichkeit $p$ f\"ur
einen positiven Schritt als Vektor zur\"uckgibt.
\part Visualisiere jeweils 10 Random Walks mit $p=0.5$ zusammen in einem Plot
f\"ur $n=100$, $n=1000$ und $n=10000$ (drei Plots).\\
Sch\"atze aus den Abbildungen ab, wie sich der Mittelwert und die Standardabweichung
des Random Walks mit der Zeit (Schritte) sich entwickelt.
\part \"Uberpr\"uefe deine Hypothese zum Mittelwert und zur
Standardabweichung, indem du von $m$ Random Walks ($m \ge 10$) f\"ur
jeden z.B. zehnten Schritt den Mittelwert und die Standardabweichung
\"uber die Positionen der $m$ Random Walks berechnest.\\
Wie h\"angt also die Standardabweichung von der Anzahl der Schritte
ab? Wie entwickelt sich die Standardabweichung f\"ur eine sehr
gro{\ss}e Anzahl von Schritten?
\part \extra Erstelle eine Grafik, die die Verteilung der Position eines Random Walkers
zu drei verschiedenen Zeitpunkten zeigt.
\end{parts}
\question \qt{\extra 2D Random Walk}
Bisher hat sich unser Random Walker nur in einer Dimension bewegt
(nur vorw\"arts oder r\"uckw\"arts). Er kann aber auch in mehreren Dimensionen laufen!\\
In zwei Dimensionen wird dazu in jedem Schritt eine weitere
Zufallszahl gezogen, die bestimmt ob er einen Schritt nach links oder
rechts gemacht hat. Die Bewegung nach vorne/hinten bzw. links/rechts
sind unabh\"angig voneinander.
\begin{parts}
\part Wie kann unter Verwendung unserer Funktion f\"ur den
eindimensionalen Random Walk ein zweidimensionaler Random Walk
simuliert werden?
\part Erstelle h\"ubsche Bilder, die zweidimensionalen Random
Walks verschiedener L\"ange (bis zu mindestens $n=1000000$) illustrieren.
\part Animationen sind auch sch\"on! z.B. mit dem \code{pause} Befehl.
\part Anstatt einfach den Weg des Random Walks zu zeichnen, kann man
sich auch merken, wie oft er an jeder Stelle vorbeigekommen ist und
mit einem Farbcode plotten.
\end{parts}
\end{questions}
\end{document}

View File

@ -0,0 +1,39 @@
n = 10000;
%% (a) simulate n times rolling a die:
x = rollthedie( n );
%% (b) probability P(3):
P3 = sum(x == 3)/length(x);
fprintf( 'P(3)=%.3f, expected is %.3f\n', P3, 1/6 );
for i =1:6
P = sum(x == i)/length(x);
fprintf( 'P(%d)=%.3f, expected is %.3f\n', i, P, 1/6 );
end
%% (c) P(i)
P = zeros(1, 6);
for i =1:6
P(i) = sum(x == i)/length(x);
end
subplot( 1, 2, 1 )
plot( [0 7], [1/6 1/6], 'r', 'linewidth', 6 )
hold on
bar( P );
hold off
xlim( [ 0 7 ] );
xlabel('Eyes');
ylabel('Probability');
%% (d) histogram of x
subplot( 1, 2, 2 );
diehist( x );
%% (e) loaded die
% eye 1 to 5 have P=1/8, eye 6 has P = 3/8 !
x = randi( 8, 1, n ); % random numbers from 1 to 8
x(x>6) = 6; % set numbers 7 and 8 to 6
diehist( x );

View File

@ -0,0 +1,24 @@
ndies = 20;
n = 100;
P = zeros(ndies, 6);
for i = 1:ndies
% (a) roll a single die:
x = rollthedie( n );
% (b) compute normalized histogram:
[h,b] = hist( x, 1:6 );
h = h/sum(h); % normalization
% (c) store the histograms:
P(i,:) = h;
end
% (c) mean and standard deviation for each eye:
m = mean(P, 1);
s = std(P, 1);
% (d) plot results:
bar(m, 'facecolor', [0.8 0 0]); % darker red
hold on;
errorbar(m, s, '.k', 'linewidth', 2 ); % k is black
xlim( [ 0, 7 ] );
xlabel('Eyes');
ylabel('Probability');
hold off;

View File

@ -0,0 +1,13 @@
function diehist( x )
% plots a normalized histogram of random numbers x drawn from rolling a
% die.
[h,b] = hist( x, 1:6 );
h = h/sum(h); % normalization
plot( [0 7], [1/6 1/6], 'r', 'linewidth', 6 )
hold on
bar( b, h );
hold off
xlim( [ 0, 7 ] );
xlabel('Eyes');
ylabel('Probability');
end

View File

@ -0,0 +1,41 @@
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
\ifprintanswers%
\else
% Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
% Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
% werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
% im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
% ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
% voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
% ``variablen\_datentypen\_\{nachname\}.m'' benannt werden
% (z.B. variablen\_datentypen\_mueller.m).
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass
sie auch wirklich das macht, was sie machen soll! Teste dies mit
kleinen Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen, Vektoren, Matrizen
zuerst mit einer kleinen Anzahl von Wiederholungen oder kleiner
Gr\"o{\ss}e, und benutze erst am Ende, wenn alles \"uberpr\"uft
ist, eine gro{\ss}e Anzahl von Wiederholungen oder Elementen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von \code{matlab} (\code{help
commando} oder \code{doc commando}) und das Internet, um
herauszufinden, wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
Auch zu inhaltlichen Konzepten bietet das Internet oft viele
Antworten!
\end{itemize}
\fi

View File

@ -0,0 +1,43 @@
%% (a) generate normal distributed random numbers:
n = 10000;
x = randn( n, 1 );
%% (b)
nsig = sum((x>=-1.0)&(x<=1.0));
Psig = nsig/length(x);
fprintf('%d of %d data elements, i.e. %.2f%% are contained in the interval -1 to +1\n\n', ...
nsig, length(x), 100.0*Psig );
%% (c)
dx = 0.01;
xx = -10:dx:10; % x-values
pg = exp(-0.5*xx.^2)/sqrt(2*pi); % y-values Gaussian pdf
% integral over the whole range:
P = sum(pg)*dx;
fprintf( 'Integral over the Gaussian pdf is %.3f\n', P );
% integral from -1 to 1:
P = sum(pg((xx>=-1.0)&(xx<=1.0)))*dx; % we need to use xx, not the random numbers x!
fprintf( 'Integral over the Gaussian pdf from -1 to 1 is %.4f\n', P );
%% (d)
P = sum(pg((xx>=-2.0)&(xx<=2.0)))*dx;
fprintf( 'Integral over the Gaussian pdf from -2 to 2 is %.4f\n', P );
P = sum(pg((xx>=-3.0)&(xx<=3.0)))*dx;
fprintf( 'Integral over the Gaussian pdf from -3 to 3 is %.4f\n\n', P );
%% (e) probability of small ranges
nr = 50;
xs = zeros(nr, 1); % size of integration interval
Ps = zeros(nr, 1); % storage
for i = 1:nr
% upper limit goes from 4.0 down to 0.0:
xupper = 3.0*(nr-i)/nr;
xs(i) = xupper;
% integral from 0 to xupper:
Ps(i) = sum(pg((xx>=0.0)&(xx<=xupper)))*dx;
end
plot( xs, Ps, 'linewidth', 3 )
ylim([0 0.55])
xlabel('Integration interval')
ylabel('Probability')
fprintf('The probability P(0.1234) = %.4f\n\n', sum(x == 0.1234)/length(x) );

View File

@ -0,0 +1,51 @@
p = 0.5;
%% (b)
nwalks = [100 1000, 10000];
for i=1:length(nwalks)
subplot( 3, 1, i );
for k=1:10
x = randomwalk( nwalks(i), p );
plot( x );
hold on;
end
text( 0.05, 0.8, sprintf( 'N=%d', nwalks(i)), 'units', 'normalized' )
xlabel( 'Number of steps' );
ylabel( 'Position of walker' )
hold off;
end
pause( 5.0 )
nsteps = 100;
nwalks = 10000;
subplot( 1, 1, 1 )
y = zeros( nwalks, nsteps );
for k = 1:nwalks
x = randomwalk( nsteps, p );
y(k,:) = x; % store random walk
end
ns = 1:nsteps;
mu = mean(y, 1);
sdev = std(y, 1);
plot( ns, mu, 'b', 'linewidth', 4 )
hold on
plot( ns, sdev, 'r', 'linewidth', 4 )
xx = 0:0.01:nsteps;
plot( xx, sqrt(xx), 'k' )
plot( xx, zeros(length(xx),1), 'k' )
legend( 'mean', 'std', 'theory' )
hold off
pause( 3.0 );
%% (d) histograms:
tinx = [100, 30, 10];
colors = [ 0 0 1; 0.5 0 0.5; 1 0 0 ];
for i = 1:length(tinx)
[h,b] = hist( y(:,tinx(i)), 20);
h = h/sum(h)/(b(2)-b(1));
bar(b, h, 1.0, 'facecolor', colors(i,:))
hold on;
end
hold off;
xlabel('Position of walker');
ylabel('Probability density');

View File

@ -0,0 +1,4 @@
function x = rollthedie( n )
% return a vector with the result of rolling a die n times
x = randi( [1, 6], n, 1 );
end