Reorganized statistic exercises and added soultions
This commit is contained in:
parent
69b9afbc80
commit
4bb3d6dc56
@ -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
|
||||
|
34
statistics/exercises/Makefile
Normal file
34
statistics/exercises/Makefile
Normal 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)
|
@ -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}
|
72
statistics/exercises/centrallimit.m
Normal file
72
statistics/exercises/centrallimit.m
Normal 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
|
||||
|
||||
|
@ -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}
|
@ -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}
|
39
statistics/exercises/die1.m
Normal file
39
statistics/exercises/die1.m
Normal 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 );
|
||||
|
||||
|
24
statistics/exercises/die2.m
Normal file
24
statistics/exercises/die2.m
Normal 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;
|
||||
|
13
statistics/exercises/diehist.m
Normal file
13
statistics/exercises/diehist.m
Normal 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
|
41
statistics/exercises/instructions.tex
Normal file
41
statistics/exercises/instructions.tex
Normal 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
|
43
statistics/exercises/normprobs.m
Normal file
43
statistics/exercises/normprobs.m
Normal 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) );
|
51
statistics/exercises/randomwalkstatistics.m
Normal file
51
statistics/exercises/randomwalkstatistics.m
Normal 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');
|
4
statistics/exercises/rollthedie.m
Normal file
4
statistics/exercises/rollthedie.m
Normal 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
|
Reference in New Issue
Block a user