Merge branch 'master' of whale.am28.uni-tuebingen.de:scientificComputing
This commit is contained in:
commit
950a65301a
bootstrap/exercises
MakefileUT_WBMW_Black_RGB.pdfbootstrapmean.mbootstraptymus-datahist.pdfbootstraptymus-meanhist.pdfbootstraptymus-samples.pdfbootstraptymus.mcorrelationsignificance.mcorrelationsignificance.pdfexercises01.texinstructions.texsavefigpdf.mtdistribution-n03.pdftdistribution-n05.pdftdistribution-n10.pdftdistribution-n50.pdftdistribution.mthymusglandweights.dat
likelihood
exercises
MakefileUT_WBMW_Black_RGB.pdfexercises01.texinstructions.texmlepdffit.mmlepdffit.pdfmlepropfit.mmlepropfit.pdfmleslope.mmlestd.mmlestd.pdfsavefigpdf.m
lecture
pointprocesses
code
exercises
lecture
programming
code
exercises
boolean_logical_indexing.texcontrol_flow.texfactorialscripta.mfactorialscriptb.mfactorialscriptc.mmyfactorial.mplotsine.mplotsine50.mplotsinea.mplotsineb.mplotsinec.mplotsined.mplotsinewave.mprintfactorial.mrandomwalk.mrandomwalkscript.mrandomwalkscriptb.mrandomwalkscriptc.mrandomwalkscriptd.mrandomwalkthresh.mscripts_functions.texsinewave.m
statistics/exercises
34
bootstrap/exercises/Makefile
Normal file
34
bootstrap/exercises/Makefile
Normal file
@ -0,0 +1,34 @@
|
||||
TEXFILES=$(wildcard exercises??.tex)
|
||||
EXERCISES=$(TEXFILES:.tex=.pdf)
|
||||
SOLUTIONS=$(EXERCISES:exercises%=solutions%)
|
||||
|
||||
.PHONY: pdf exercises solutions watch watchexercises watchsolutions clean
|
||||
|
||||
pdf : $(SOLUTIONS) $(EXERCISES)
|
||||
|
||||
exercises : $(EXERCISES)
|
||||
|
||||
solutions : $(SOLUTIONS)
|
||||
|
||||
$(SOLUTIONS) : solutions%.pdf : exercises%.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)
|
BIN
bootstrap/exercises/UT_WBMW_Black_RGB.pdf
Normal file
BIN
bootstrap/exercises/UT_WBMW_Black_RGB.pdf
Normal file
Binary file not shown.
41
bootstrap/exercises/instructions.tex
Normal file
41
bootstrap/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
|
28
bootstrap/exercises/savefigpdf.m
Normal file
28
bootstrap/exercises/savefigpdf.m
Normal file
@ -0,0 +1,28 @@
|
||||
function savefigpdf( fig, name, width, height )
|
||||
% Saves figure fig in pdf file name.pdf with appropriately set page size
|
||||
% and fonts
|
||||
|
||||
% default width:
|
||||
if nargin < 3
|
||||
width = 11.7;
|
||||
end
|
||||
% default height:
|
||||
if nargin < 4
|
||||
height = 9.0;
|
||||
end
|
||||
|
||||
% paper:
|
||||
set( fig, 'PaperUnits', 'centimeters' );
|
||||
set( fig, 'PaperSize', [width height] );
|
||||
set( fig, 'PaperPosition', [0.0 0.0 width height] );
|
||||
set( fig, 'Color', 'white')
|
||||
|
||||
% font:
|
||||
set( findall( fig, 'type', 'axes' ), 'FontSize', 12 )
|
||||
set( findall( fig, 'type', 'text' ), 'FontSize', 12 )
|
||||
|
||||
% save:
|
||||
saveas( fig, name, 'pdf' )
|
||||
|
||||
end
|
||||
|
34
likelihood/exercises/Makefile
Normal file
34
likelihood/exercises/Makefile
Normal file
@ -0,0 +1,34 @@
|
||||
TEXFILES=$(wildcard exercises??.tex)
|
||||
EXERCISES=$(TEXFILES:.tex=.pdf)
|
||||
SOLUTIONS=$(EXERCISES:exercises%=solutions%)
|
||||
|
||||
.PHONY: pdf exercises solutions watch watchexercises watchsolutions clean
|
||||
|
||||
pdf : $(SOLUTIONS) $(EXERCISES)
|
||||
|
||||
exercises : $(EXERCISES)
|
||||
|
||||
solutions : $(SOLUTIONS)
|
||||
|
||||
$(SOLUTIONS) : solutions%.pdf : exercises%.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)
|
BIN
likelihood/exercises/UT_WBMW_Black_RGB.pdf
Normal file
BIN
likelihood/exercises/UT_WBMW_Black_RGB.pdf
Normal file
Binary file not shown.
41
likelihood/exercises/instructions.tex
Normal file
41
likelihood/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
|
28
likelihood/exercises/savefigpdf.m
Normal file
28
likelihood/exercises/savefigpdf.m
Normal file
@ -0,0 +1,28 @@
|
||||
function savefigpdf( fig, name, width, height )
|
||||
% Saves figure fig in pdf file name.pdf with appropriately set page size
|
||||
% and fonts
|
||||
|
||||
% default width:
|
||||
if nargin < 3
|
||||
width = 11.7;
|
||||
end
|
||||
% default height:
|
||||
if nargin < 4
|
||||
height = 9.0;
|
||||
end
|
||||
|
||||
% paper:
|
||||
set( fig, 'PaperUnits', 'centimeters' );
|
||||
set( fig, 'PaperSize', [width height] );
|
||||
set( fig, 'PaperPosition', [0.0 0.0 width height] );
|
||||
set( fig, 'Color', 'white')
|
||||
|
||||
% font:
|
||||
set( findall( fig, 'type', 'axes' ), 'FontSize', 12 )
|
||||
set( findall( fig, 'type', 'text' ), 'FontSize', 12 )
|
||||
|
||||
% save:
|
||||
saveas( fig, name, 'pdf' )
|
||||
|
||||
end
|
||||
|
@ -18,6 +18,11 @@
|
||||
|
||||
\section{TODO}
|
||||
\begin{itemize}
|
||||
\item Fitting psychometric functions:
|
||||
Variable $x_i$, responses $r_i$ either 0 or 1.
|
||||
$p(x_i, \theta)$ is Weibull or Boltzmann function.
|
||||
Likelihood is $L = \prod p(x_i, \theta)^{r_i} (1-p(x_i, \theta))^{1-r_i}$.
|
||||
Use fminsearch for fitting.
|
||||
\item GLM model fitting?
|
||||
\end{itemize}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
function [pdf, centers] = isiHist(isis, binwidth)
|
||||
function [pdf, centers] = isihist(isis, binwidth)
|
||||
% Compute normalized histogram of interspike intervals.
|
||||
%
|
||||
% [pdf, centers] = isiHist(isis, binwidth)
|
||||
% [pdf, centers] = isihist(isis, binwidth)
|
||||
%
|
||||
% Arguments:
|
||||
% isis: vector of interspike intervals in seconds
|
||||
@ -14,15 +14,15 @@ function [pdf, centers] = isiHist(isis, binwidth)
|
||||
if nargin < 2
|
||||
% compute good binwidth:
|
||||
nperbin = 200; % average number of data points per bin
|
||||
bins = length( isis )/nperbin; % number of bins
|
||||
binwidth = max( isis )/bins;
|
||||
bins = length(isis)/nperbin; % number of bins
|
||||
binwidth = max(isis)/bins;
|
||||
if binwidth < 5e-4 % half a millisecond
|
||||
binwidth = 5e-4;
|
||||
end
|
||||
end
|
||||
bins = 0.5*binwidth:binwidth:max(isis);
|
||||
% histogram data:
|
||||
[ nelements, centers ] = hist(isis, bins);
|
||||
[nelements, centers] = hist(isis, bins);
|
||||
% normalization (integral = 1):
|
||||
pdf = nelements / sum(nelements) / binwidth;
|
||||
end
|
@ -1,7 +1,7 @@
|
||||
function isivec = isis( spikes )
|
||||
function isivec = isis(spikes)
|
||||
% returns a single list of isis computed from all trials in spikes
|
||||
%
|
||||
% isivec = isis( spikes )
|
||||
% isivec = isis(spikes)
|
||||
%
|
||||
% Arguments:
|
||||
% spikes: a cell array of vectors of spike times in seconds
|
||||
@ -12,9 +12,9 @@ function isivec = isis( spikes )
|
||||
|
||||
isivec = [];
|
||||
for k = 1:length(spikes)
|
||||
difftimes = diff( spikes{k} );
|
||||
difftimes = diff(spikes{k});
|
||||
% difftimes(:) ensures a column vector
|
||||
% regardless of the type of vector in spikes{k}
|
||||
isivec = [ isivec; difftimes(:) ];
|
||||
isivec = [isivec; difftimes(:)];
|
||||
end
|
||||
end
|
||||
|
@ -13,18 +13,17 @@ for k = 1:ntrials
|
||||
times = 1000.0*times; % conversion to ms
|
||||
end
|
||||
for i = 1:length( times )
|
||||
line([times(i) times(i)],[k-0.4 k+0.4], 'Color', 'k' );
|
||||
line([times(i) times(i)],[k-0.4 k+0.4], 'Color', 'k');
|
||||
end
|
||||
end
|
||||
if tmax < 1.5
|
||||
xlabel( 'Time [ms]' );
|
||||
xlabel('Time [ms]');
|
||||
xlim([0.0 1000.0*tmax]);
|
||||
else
|
||||
xlabel( 'Time [s]' );
|
||||
xlabel('Time [s]');
|
||||
xlim([0.0 tmax]);
|
||||
end
|
||||
ylabel( 'Trials');
|
||||
ylim( [ 0.3 ntrials+0.7 ] )
|
||||
|
||||
ylabel('Trials');
|
||||
ylim([0.3 ntrials+0.7 ]);
|
||||
end
|
||||
|
||||
|
@ -98,8 +98,8 @@ jan.benda@uni-tuebingen.de}
|
||||
Mit den folgenden Aufgaben wollen wir die Statistik der Spiketrains
|
||||
der drei Neurone miteinander vergleichen.
|
||||
\begin{parts}
|
||||
\part Lade die Spiketrains aus den drei Dateien. Achte darauf, dass sie verschiedene
|
||||
Variablen\-namen bekommen.
|
||||
\part Lade die Spiketrains aus den drei Dateien. Achte darauf,
|
||||
dass sie verschiedene Variablen\-namen bekommen.
|
||||
\begin{solution}
|
||||
\begin{lstlisting}
|
||||
clear all
|
||||
|
236
pointprocesses/exercises/pointprocesses03.tex
Normal file
236
pointprocesses/exercises/pointprocesses03.tex
Normal file
@ -0,0 +1,236 @@
|
||||
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage{pslatex}
|
||||
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
|
||||
\usepackage{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||
|
||||
%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\ifprintanswers
|
||||
\newcommand{\stitle}{: L\"osungen}
|
||||
\else
|
||||
\newcommand{\stitle}{}
|
||||
\fi
|
||||
\header{{\bfseries\large \"Ubung 8\stitle}}{{\bfseries\large Spiketrain Analyse}}{{\bfseries\large 6. Dezember, 2016}}
|
||||
\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}
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
language=Matlab,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
numberstyle=\tiny,
|
||||
title=\lstname,
|
||||
showstringspaces=false,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{bm}
|
||||
\usepackage{dsfont}
|
||||
\newcommand{\naZ}{\mathds{N}}
|
||||
\newcommand{\gaZ}{\mathds{Z}}
|
||||
\newcommand{\raZ}{\mathds{Q}}
|
||||
\newcommand{\reZ}{\mathds{R}}
|
||||
\newcommand{\reZp}{\mathds{R^+}}
|
||||
\newcommand{\reZpN}{\mathds{R^+_0}}
|
||||
\newcommand{\koZ}{\mathds{C}}
|
||||
|
||||
%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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}
|
||||
|
||||
%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\newcommand{\qt}[1]{\textbf{#1}\\}
|
||||
\newcommand{\pref}[1]{(\ref{#1})}
|
||||
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\input{instructions}
|
||||
|
||||
|
||||
\begin{questions}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \qt{Statistik von Spiketrains 2}
|
||||
In Ilias findet ihr die Dateien \code{poisson.mat},
|
||||
\code{pifou.mat}, und \code{lifadapt.mat}. Jede dieser Dateien
|
||||
enth\"alt mehrere Trials von Spiketrains von einer bestimmten Art
|
||||
von Neuron. Die Spikezeiten sind in Sekunden gemessen.
|
||||
|
||||
Mit den folgenden Aufgaben wollen wir die Statistik der Spiketrains
|
||||
der drei Neurone miteinander vergleichen.
|
||||
|
||||
Bereits im letzten \"Ubungszettel erstellte Funktionen d\"urfen (sollen!)
|
||||
wiederverwendet werden.
|
||||
\begin{parts}
|
||||
\part Lade die Spiketrains aus den drei Dateien. Stelle sie in Rasterplots dar.
|
||||
|
||||
\part Plotte die Interspike-Intervall Verteilungen.
|
||||
|
||||
Annotiere die Plots mit dem Mittelwert, der
|
||||
Standardabweichung, und dem Variationskoeffizienten der
|
||||
Interspikeintervalle, sowie der mittleren Feuerrate.
|
||||
|
||||
\part Vergleiche die ISI-Histogramme mit der ISI Verteilung eines Poisson Prozesses
|
||||
der Rate $\lambda$:
|
||||
\[ p(T) = \lambda e^{-\lambda T} \; .\]
|
||||
|
||||
\part Erstelle Return-Maps f\"ur die drei Spiketrains, also jedes
|
||||
Interspike-Intervall $T_{i+1}$ gegen das vorherige Intervall $T_i$
|
||||
geplottet.
|
||||
|
||||
\part Schreibe eine Funktion, die die seriellen Korrelationen der
|
||||
Interspikeintervalle f\"ur Lags bis zu \code{maxlag} berechnet und
|
||||
plottet. Die Seriellen Korrelationen $\rho_k$ f\"ur Lag $k$ der
|
||||
Interspikeintervalle $T_i$ sind die Korrelationskoeffizienten
|
||||
zwischen den Interspikeintervallen $T_i$ und den um das Lag $k$
|
||||
verschobenen Intervallen $T_{i+k}$:
|
||||
\[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i -
|
||||
\langle T \rangle) \rangle}{\langle (T_i - \langle T
|
||||
\rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm
|
||||
var}(T_i)} = {\rm corr}(T_{i+k}, T_i) \]
|
||||
|
||||
Benutze diese Funktion, um die Interspikeintervall-Korrelationen
|
||||
der drei Neurone zu vergleichen.
|
||||
\begin{solution}
|
||||
\lstinputlisting{../code/isiserialcorr.m}
|
||||
\lstinputlisting{../code/plotserialcorr.m}
|
||||
\colorbox{white}{\includegraphics[width=1\textwidth]{serialcorr}}
|
||||
\end{solution}
|
||||
|
||||
\end{parts}
|
||||
|
||||
\continue
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \qt{Homogener Poisson Prozess}
|
||||
Wir wollen den homogenen Poisson Prozess benutzen um Spikes zu
|
||||
generieren, mit denen wir die Analysfunktionen des vorherigen
|
||||
Aufgaben \"uberpr\"ufen k\"onnen.
|
||||
|
||||
Ein homogener Poisson Prozess mit der Rate $\lambda$ (gemessen in
|
||||
Hertz) ist ein Punktprozess, bei dem die Wahrscheinlichkeit eines
|
||||
Ereignisses unabh\"angig von der Zeit $t$ und unabh\"angig von
|
||||
vorherigen Ereignissen ist. Wenn wir die Zeitachse in kleine Bins
|
||||
der Breite $\Delta t$ einteilen, dann ist
|
||||
\[ P = \lambda \cdot \Delta t \]
|
||||
die Wahrscheinlichkeit innerhalb eines Bins ein Ereignis (``spike'')
|
||||
zu erhalten. $\Delta t$ muss daf\"ur klein genug sein, so dass $P<0.1$.
|
||||
\begin{parts}
|
||||
|
||||
\part Schreibe eine Funktion die $n$ homogene Poisson Spiketrains
|
||||
einer gegebenen Dauer $T_{max}$ mit Rate $\lambda$ erzeugt.
|
||||
|
||||
Falls das nicht gelingt, benutze f\"ur die folgenden Aufgaben
|
||||
soweit m\"oglich spikes aus der Datei \code{poisson.mat}.
|
||||
\begin{solution}
|
||||
\lstinputlisting{hompoissonspikes.m}
|
||||
\end{solution}
|
||||
|
||||
\part Benutze diese Funktion um einige Trials von Spikes zu erzeugen
|
||||
und plotte diese als Spikeraster.
|
||||
\begin{solution}
|
||||
\begin{lstlisting}
|
||||
spikes = hompoissonspikes( 10, 100.0, 0.5 );
|
||||
spikeraster( spikes )
|
||||
\end{lstlisting}
|
||||
\mbox{}\\[-3ex]
|
||||
\colorbox{white}{\includegraphics[width=0.7\textwidth]{poissonraster100hz}}
|
||||
\end{solution}
|
||||
|
||||
\part Berechne Histogramme aus den Interspikeintervallen von $n$
|
||||
Poisson Spiketrains mit der Rate $\lambda=100$\,Hz. Wie viele bins
|
||||
werden f\"ur ein ``sch\"ones'' ISI-Histogramm ungef\"ahr ben\"otigt?
|
||||
Ver\"andere \"uber die Dauer $T_{max}$ der Spiketrains und die
|
||||
Anzahl $n$ der Trials die Anzahl der Intervalle. Wieviele
|
||||
Interspikeintervalle werden ben\"otigt, um ein ``sch\"ones''
|
||||
Histogramm zu erhalten? Wie lange m\"usste man also von dem Neuron
|
||||
ableiten?
|
||||
\begin{solution}
|
||||
About 5000 intervals for 25 bins. This corresponds to a $5000 /
|
||||
100\,\hertz = 50\,\second$ recording of a neuron firing with
|
||||
100\,\hertz.
|
||||
\end{solution}
|
||||
|
||||
\part Vergleiche Interspike-Intervall Histogramme von Poisson-Spikes
|
||||
verschiedener Raten $\lambda$ mit der theoretisch zu erwartenden Verteilung
|
||||
der Intervalle $T$ des Poisson Prozesses
|
||||
\[ p(T) = \lambda e^{-\lambda T} \; .\]
|
||||
Achte darauf, dass die Bins des Histograms nicht kleiner als $\Delta t$ sind!
|
||||
\begin{solution}
|
||||
\lstinputlisting{hompoissonisih.m}
|
||||
\colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih100hz}}
|
||||
\colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih20hz}}
|
||||
\end{solution}
|
||||
|
||||
\part \extra Was passiert mit den Histogrammen, wenn die Binbreite
|
||||
der Histogramme kleiner als das bei der Erzeugung der Poisson
|
||||
Spiketrains verwendete $\Delta t$ ist?
|
||||
\begin{solution}
|
||||
Die Bins zwischen der durch $\Delta t$ vorgegebenen
|
||||
Diskretisierung haben den Wert 0. Dadurch werden aber die anderen
|
||||
durch die Normierung h\"oher als sie sein sollten.
|
||||
\end{solution}
|
||||
|
||||
\part Plotte den Mittelwert der Interspikeintervalle, die
|
||||
dazugeh\"orige Standardabweichung und den Variationskoeffizienten
|
||||
als Funktion der Rate $\lambda$ des Poisson Prozesses. Vergleiche
|
||||
die Ergebnisse mit den theoretischen Erwartungen (siehe Vorlesungsskript).
|
||||
\begin{solution}
|
||||
\lstinputlisting{hompoissonisistats.m}
|
||||
\colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonisistats}}
|
||||
\end{solution}
|
||||
|
||||
\part Plotte die seriellen Korrelationen von Poisson-Spiketrains und
|
||||
erkl\"are kurz das Ergebniss.
|
||||
\begin{solution}
|
||||
\mbox{}\\[-2ex]\hspace*{2cm}
|
||||
\colorbox{white}{\includegraphics[width=0.8\textwidth]{poissonserial100hz}}\\
|
||||
Alle Korrelationen zwischen Interspikeintervallen sind Null, da
|
||||
beim Poisson Prozess das Auftreten jedes Spikes unabh\"angig von
|
||||
den vorherigen Spikes ist.
|
||||
\end{solution}
|
||||
|
||||
\end{parts}
|
||||
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
@ -1,7 +1,7 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: pointprocessscetchA.tex
|
||||
%%Creator: gnuplot 4.6 patchlevel 4
|
||||
%%CreationDate: Fri Sep 30 10:14:40 2016
|
||||
%%CreationDate: Sat Nov 19 10:17:42 2016
|
||||
%%DocumentFonts:
|
||||
%%BoundingBox: 50 50 373 135
|
||||
%%EndComments
|
||||
@ -430,10 +430,10 @@ SDict begin [
|
||||
/Title (pointprocessscetchA.tex)
|
||||
/Subject (gnuplot plot)
|
||||
/Creator (gnuplot 4.6 patchlevel 4)
|
||||
/Author (grewe)
|
||||
/Author (jan)
|
||||
% /Producer (gnuplot)
|
||||
% /Keywords ()
|
||||
/CreationDate (Fri Sep 30 10:14:40 2016)
|
||||
/CreationDate (Sat Nov 19 10:17:42 2016)
|
||||
/DOCINFO pdfmark
|
||||
end
|
||||
} ifelse
|
||||
|
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: pointprocessscetchB.tex
|
||||
%%Creator: gnuplot 4.6 patchlevel 4
|
||||
%%CreationDate: Fri Sep 30 10:14:40 2016
|
||||
%%CreationDate: Sat Nov 19 10:17:43 2016
|
||||
%%DocumentFonts:
|
||||
%%BoundingBox: 50 50 373 237
|
||||
%%EndComments
|
||||
@ -430,10 +430,10 @@ SDict begin [
|
||||
/Title (pointprocessscetchB.tex)
|
||||
/Subject (gnuplot plot)
|
||||
/Creator (gnuplot 4.6 patchlevel 4)
|
||||
/Author (grewe)
|
||||
/Author (jan)
|
||||
% /Producer (gnuplot)
|
||||
% /Keywords ()
|
||||
/CreationDate (Fri Sep 30 10:14:40 2016)
|
||||
/CreationDate (Sat Nov 19 10:17:43 2016)
|
||||
/DOCINFO pdfmark
|
||||
end
|
||||
} ifelse
|
||||
|
Binary file not shown.
8
programming/code/boltzmann.m
Normal file
8
programming/code/boltzmann.m
Normal file
@ -0,0 +1,8 @@
|
||||
function y = boltzmann( x, k )
|
||||
% computes the boltzmann function
|
||||
% x: scalar or vector of x values
|
||||
% k: slope parameter of boltzman function
|
||||
% returns y-values of boltzmann function
|
||||
y = 1./(1+exp(-k*x));
|
||||
end
|
||||
|
3
programming/code/plotboltzmann.m
Normal file
3
programming/code/plotboltzmann.m
Normal file
@ -0,0 +1,3 @@
|
||||
p = boltzmann(voltage, a);
|
||||
plot(voltage, p)
|
||||
y = -1;
|
@ -15,7 +15,7 @@
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
|
||||
3}}{{\bfseries\large Boolesche Ausdr\"ucke, logisches
|
||||
Indizieren}}{{\bfseries\large 13. Oktober, 2015}}
|
||||
Indizieren}}{{\bfseries\large 31. Oktober, 2016}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}
|
||||
|
||||
@ -41,8 +41,8 @@ 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
|
||||
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:\newline
|
||||
``boolesche\_ausdruecke\_\{nachname\}.m'' benannt werden
|
||||
(z.B. variablen\_datentypen\_mueller.m).
|
||||
|
||||
\section{Boolesche Ausdr\"ucke}
|
||||
@ -77,14 +77,14 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
|
||||
\newpage
|
||||
\section{Logische Indizierung}
|
||||
|
||||
Bollesche Ausdr\"ucke k\"onnen benutzt werden um aus Vektoren und
|
||||
Boolesche Ausdr\"ucke k\"onnen benutzt werden um aus Vektoren und
|
||||
Matrizen die Elemente herauszusuchen, die einem bestimmeten Kriterium
|
||||
entsprechen.
|
||||
|
||||
\begin{questions}
|
||||
\question Gegeben sind \verb+x = (1:10)+ und
|
||||
\verb+y = [3 1 5 6 8 2 9 4 7 0]+. Versuche die Ausgaben folgender
|
||||
Anweisungen zu verstehen.
|
||||
Anweisungen zu verstehen. Erkl\"are die Ergebnisse.
|
||||
\begin{parts}
|
||||
\part \verb+x < 5+
|
||||
\part \verb+x( x < 5) )+
|
||||
@ -99,10 +99,10 @@ entsprechen.
|
||||
0 und 100 (\verb+randi+). Ersetze die Werte der Elemente, die in
|
||||
folgende Klassen fallen: \verb+x < 33+ mit 0,
|
||||
\verb+x >= 33 und x < 66+ mit 1 und alle \verb+x >= 66+ auf 2.
|
||||
\part Ermittle die Anzahl Elemente fuer jede Klasse mithilfe eines
|
||||
\part Ermittle die Anzahl Elemente f\"ur jede Klasse mithilfe eines
|
||||
Booleschen Ausdrucks (\verb+sum+ kann eingesetzt werden um die
|
||||
Anzahl Treffer zu ermitteln).
|
||||
\end{parts}
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
@ -14,7 +14,7 @@
|
||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Kontrollstrukturen}}{{\bfseries\large 13. Oktober, 2015}}
|
||||
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Kontrollstrukturen}}{{\bfseries\large 08. November, 2016}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de}
|
||||
\runningfooter{}{\thepage}{}
|
||||
@ -42,8 +42,8 @@ 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).
|
||||
``control\_flow\_\{nachname\}.m'' benannt werden
|
||||
(z.B. control\_flow\_mueller.m).
|
||||
|
||||
\begin{questions}
|
||||
\question Implementiere \code{for} Schleifen bei denen die Laufvariable:
|
||||
|
6
programming/exercises/factorialscripta.m
Normal file
6
programming/exercises/factorialscripta.m
Normal file
@ -0,0 +1,6 @@
|
||||
n = 5;
|
||||
x = 1;
|
||||
for i = 1:n
|
||||
x = x * i;
|
||||
end
|
||||
fprintf('Factorial of %i is: %i\n', n, x)
|
1
programming/exercises/factorialscriptb.m
Normal file
1
programming/exercises/factorialscriptb.m
Normal file
@ -0,0 +1 @@
|
||||
printfaculty(5);
|
3
programming/exercises/factorialscriptc.m
Normal file
3
programming/exercises/factorialscriptc.m
Normal file
@ -0,0 +1,3 @@
|
||||
n = 5
|
||||
a = myfactorial(n);
|
||||
fprintf('Factorial of %i is: %i\n', n, x)
|
7
programming/exercises/myfactorial.m
Normal file
7
programming/exercises/myfactorial.m
Normal file
@ -0,0 +1,7 @@
|
||||
function x = mufactorial(n)
|
||||
% return the factorial of n
|
||||
x = 1;
|
||||
for i = 1:n
|
||||
x = x * i;
|
||||
end
|
||||
end
|
19
programming/exercises/plotsine.m
Normal file
19
programming/exercises/plotsine.m
Normal file
@ -0,0 +1,19 @@
|
||||
function plotsine(freq, ampl, duration)
|
||||
% plot a sine wave
|
||||
% freq: frequency of the sinewave in Hertz
|
||||
% ampl: amplitude of the sinewave
|
||||
% duration: duration of the sinewave in seconds
|
||||
step = 0.01/freq;
|
||||
time = 0:step:duration;
|
||||
sine = ampl*sin(2*pi*freq*time);
|
||||
if duration <= 1.0
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
else
|
||||
plot(time, sine);
|
||||
xlabel('Time [s]');
|
||||
end
|
||||
ylim([-1.2*ampl 1.2*ampl]);
|
||||
ylabel('Sinewave');
|
||||
title(sprintf('Frequency %g Hz', freq));
|
||||
end
|
9
programming/exercises/plotsine50.m
Normal file
9
programming/exercises/plotsine50.m
Normal file
@ -0,0 +1,9 @@
|
||||
function plotsine50()
|
||||
% plot a sine wave of 50Hz
|
||||
time = 0:0.0001:0.2;
|
||||
sine = sin(2*pi*50.0*time);
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
ylim([-1.2 1.2]);
|
||||
ylabel('Sinewave');
|
||||
end
|
1
programming/exercises/plotsinea.m
Normal file
1
programming/exercises/plotsinea.m
Normal file
@ -0,0 +1 @@
|
||||
plotsine50()
|
1
programming/exercises/plotsineb.m
Normal file
1
programming/exercises/plotsineb.m
Normal file
@ -0,0 +1 @@
|
||||
plotsine(5.0, 2.0, 1.5)
|
14
programming/exercises/plotsinec.m
Normal file
14
programming/exercises/plotsinec.m
Normal file
@ -0,0 +1,14 @@
|
||||
freq = 5.0;
|
||||
ampl = 2.0;
|
||||
[time, sine] = sinewave(freq, ampl, 1.5);
|
||||
|
||||
if duration <= 1.0
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
else
|
||||
plot(time, sine);
|
||||
xlabel('Time [s]');
|
||||
end
|
||||
ylim([-1.2*ampl 1.2*ampl]);
|
||||
ylabel('Sinewave');
|
||||
title(sprintf('Frequency %g Hz', freq));
|
4
programming/exercises/plotsined.m
Normal file
4
programming/exercises/plotsined.m
Normal file
@ -0,0 +1,4 @@
|
||||
freq = 5.0;
|
||||
ampl = 2.0;
|
||||
[time, sine] = sinewave(freq, ampl, 1.5);
|
||||
plotsinewave(time, sine);
|
13
programming/exercises/plotsinewave.m
Normal file
13
programming/exercises/plotsinewave.m
Normal file
@ -0,0 +1,13 @@
|
||||
function plotsinewave(time, sine)
|
||||
% plot precomputed sinewave
|
||||
% time: vector with timepoints
|
||||
% sine: corresponding vector with sinewave
|
||||
if time(end)-time(1) <= 1.0
|
||||
plot(1000.0*time, sine);
|
||||
xlabel('Time [ms]');
|
||||
else
|
||||
plot(time, sine);
|
||||
xlabel('Time [s]');
|
||||
end
|
||||
ylim([1.2*min(sine) 1.2*max(sine)]);
|
||||
ylabel('Sinewave');
|
8
programming/exercises/printfactorial.m
Normal file
8
programming/exercises/printfactorial.m
Normal file
@ -0,0 +1,8 @@
|
||||
function printfaculty(n)
|
||||
% compute the faculty of n and print it
|
||||
x = 1;
|
||||
for i = 1:n
|
||||
x = x * i;
|
||||
end
|
||||
fprintf('Factorial of %i is: %i\n', n, x)
|
||||
end
|
13
programming/exercises/randomwalk.m
Normal file
13
programming/exercises/randomwalk.m
Normal file
@ -0,0 +1,13 @@
|
||||
function [time, position] = randomwalk(numbersteps)
|
||||
% 1-D random walk for numbersteps time steps
|
||||
time = 1:numbersteps;
|
||||
position = zeros(numbersteps, 1);
|
||||
for i = time(2:end)
|
||||
r = rand(1);
|
||||
if r > 0.5
|
||||
position(i) = position(i-1) + 1;
|
||||
else
|
||||
position(i) = position(i-1) - 1;
|
||||
end
|
||||
end
|
||||
end
|
7
programming/exercises/randomwalkscript.m
Normal file
7
programming/exercises/randomwalkscript.m
Normal file
@ -0,0 +1,7 @@
|
||||
n = 2000;
|
||||
hold on
|
||||
for k = 1:10
|
||||
[t, x] = randomwalk(n);
|
||||
plot(t, x)
|
||||
end
|
||||
hold off
|
8
programming/exercises/randomwalkscriptb.m
Normal file
8
programming/exercises/randomwalkscriptb.m
Normal file
@ -0,0 +1,8 @@
|
||||
p = 0.5;
|
||||
thresh = 50.0;
|
||||
hold on
|
||||
for k = 1:10
|
||||
x = randomwalkthresh(p, thresh);
|
||||
plot(x)
|
||||
end
|
||||
hold off
|
20
programming/exercises/randomwalkscriptc.m
Normal file
20
programming/exercises/randomwalkscriptc.m
Normal file
@ -0,0 +1,20 @@
|
||||
thresh = 50.0;
|
||||
probs = [0.5 0.52 0.55 0.6];
|
||||
maxt = 0;
|
||||
for sp = 1:4
|
||||
p = probs(sp);
|
||||
subplot(2, 2, sp);
|
||||
hold on
|
||||
for k = 1:10
|
||||
x = randomwalkthresh(p, thresh);
|
||||
if maxt < length(x)
|
||||
maxt = length(x);
|
||||
end
|
||||
plot(x)
|
||||
end
|
||||
hold off
|
||||
title(sprintf('p=%g', p))
|
||||
xlabel('Time')
|
||||
xlim([0 maxt])
|
||||
ylabel('Position')
|
||||
end
|
23
programming/exercises/randomwalkscriptd.m
Normal file
23
programming/exercises/randomwalkscriptd.m
Normal file
@ -0,0 +1,23 @@
|
||||
thresh = 50.0;
|
||||
probs = 0.5:0.01:1.0;
|
||||
reps = 1000;
|
||||
meancount = zeros(length(probs), 1);
|
||||
stdcount = zeros(length(probs), 1);
|
||||
for sp = 1:length(probs)
|
||||
p = probs(sp);
|
||||
positions = zeros(reps, 1);
|
||||
for k = 1:reps
|
||||
x = randomwalkthresh(p, thresh);
|
||||
positions(k) = length(x);
|
||||
end
|
||||
meancount(sp) = mean(positions);
|
||||
stdcount(sp) = std(positions);
|
||||
end
|
||||
semilogy(probs, meancount, 'displayname', 'mean');
|
||||
hold on;
|
||||
semilogy(probs, stdcount, 'displayname', 'std');
|
||||
hold off;
|
||||
xlabel('p');
|
||||
xlim([0.5 1.0])
|
||||
ylabel('number of steps');
|
||||
legend('show');
|
24
programming/exercises/randomwalkthresh.m
Normal file
24
programming/exercises/randomwalkthresh.m
Normal file
@ -0,0 +1,24 @@
|
||||
function positions = randomwalkthresh(p, thresh)
|
||||
% computes a single random walk
|
||||
%
|
||||
% Arguments:
|
||||
% p: the probability for an upward step
|
||||
% thresh: compute the random walk until abs(pos) is larger than thresh
|
||||
%
|
||||
% Returns:
|
||||
% positions: vector with positions of the random walker
|
||||
|
||||
positions = [0.0];
|
||||
% positions = 0.0;
|
||||
% positions = zeros(1, 1);
|
||||
i = 2;
|
||||
while abs(positions(i-1)) < thresh
|
||||
r = rand(1);
|
||||
if r < p
|
||||
positions(i) = positions(i-1) + 1;
|
||||
else
|
||||
positions(i) = positions(i-1) - 1;
|
||||
end
|
||||
i = i + 1;
|
||||
end
|
||||
end
|
@ -1,7 +1,9 @@
|
||||
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||
%\documentclass[answers,12pt,a4paper,pdftex]{exam}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage{natbib}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[small]{caption}
|
||||
\usepackage{sidecap}
|
||||
@ -14,9 +16,9 @@
|
||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Skripte und Funktionen}}{{\bfseries\large 14. Oktober, 2015}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de}
|
||||
\header{{\bfseries\large \"Ubung 5}}{{\bfseries\large Skripte und Funktionen}}{{\bfseries\large 15. November, 2016}}
|
||||
\firstpagefooter{Prof. Jan Benda}{Phone: 29 74 573}{Email:
|
||||
jan.benda@uni-tuebingen.de}
|
||||
\runningfooter{}{\thepage}{}
|
||||
|
||||
\setlength{\baselineskip}{15pt}
|
||||
@ -24,6 +26,27 @@
|
||||
\setlength{\parskip}{0.3cm}
|
||||
\renewcommand{\baselinestretch}{1.15}
|
||||
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
language=Matlab,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
numberstyle=\tiny,
|
||||
title=\lstname,
|
||||
showstringspaces=false,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -45,89 +68,152 @@ also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
|
||||
|
||||
\begin{questions}
|
||||
|
||||
\question Implementiere die Fakult\"at als Funktion.
|
||||
\question Berechne die Fakult\"at einer Zahl.
|
||||
\begin{parts}
|
||||
\part Version 1: berechnet die Fakult\"at von 5 und gib das
|
||||
Resultat auf dem Bildschirm aus.
|
||||
\part Version 2: Wie 1 aber die Funktion \"ubernimmt als Argument
|
||||
die Zahl, von der die Fakult\"at berechnet werden soll.
|
||||
\part Version 3: Wie 2 aber mit R\"uckgabe des berechneten Wertes.
|
||||
\part Version 1: Schreibe eine Skript, das die Fakult\"at von 5 berechnet und das
|
||||
Resultat auf dem Bildschirm ausgibt.
|
||||
\begin{solution}
|
||||
\lstinputlisting{factorialscripta.m}
|
||||
\end{solution}
|
||||
|
||||
\part Version 2: Wie Version 1, aber als Funktion, die als
|
||||
Argument die Zahl, von der die Fakult\"at berechnet werden soll,
|
||||
\"ubernimmt.
|
||||
\begin{solution}
|
||||
\lstinputlisting{printfactorial.m}
|
||||
\lstinputlisting{factorialscriptb.m}
|
||||
\end{solution}
|
||||
|
||||
\part Version 3: Wie Version 2, die Funktion soll den berechneten
|
||||
Wert nicht ausgeben, sondern als Funktionswert zur\"uckgeben. Das
|
||||
aufrufende Skript soll dann den berechneten Wert auf dem
|
||||
Bildschirm ausgeben.
|
||||
\begin{solution}
|
||||
\lstinputlisting{myfactorial.m}
|
||||
\lstinputlisting{factorialscriptc.m}
|
||||
\end{solution}
|
||||
|
||||
\end{parts}
|
||||
|
||||
\question Implementiere eine Funktion, die einen Sinus mit der
|
||||
Amplitude 1 und der Frequenz $f = $ 50\,Hz plottet ($sin(2\pi \cdot
|
||||
f \cdot t)$):
|
||||
\question Grafische Darstellung einer Sinuswelle.
|
||||
\begin{parts}
|
||||
\part Erweitere die Funktion sodass die L\"ange der Zeitachse, die
|
||||
Schrittweite, Amplitude, Frequenz als Argumente
|
||||
\"ubergeben werden k\"onnen.
|
||||
\part Gib sowohl den Sinus als auch die Zeitachse zur\"uck.
|
||||
\part Implementiere eine Funktion, die einen Sinus mit der
|
||||
Amplitude 1 und der Frequenz $f = $ 50\,Hz plottet ($\sin(2\pi \cdot
|
||||
f \cdot t)$). Rufe die Funktion auf.
|
||||
\begin{solution}
|
||||
\lstinputlisting{plotsine50.m}
|
||||
\lstinputlisting{plotsinea.m}
|
||||
\end{solution}
|
||||
|
||||
\part Erweitere die Funktion so, dass die L\"ange der Zeitachse,
|
||||
die Amplitude, und die Frequenz als Argumente \"ubergeben werden
|
||||
k\"onnen. Die Schrittweite soll in der Funktion aus der Frequenz
|
||||
berechnet werden.
|
||||
\begin{solution}
|
||||
\lstinputlisting{plotsine.m}
|
||||
\lstinputlisting{plotsineb.m}
|
||||
\end{solution}
|
||||
|
||||
\part Verlagere alle plot Befehle in das aufrufende Skript
|
||||
und ver\"andere die Funktion so, dass sie sowohl den Sinus als
|
||||
auch die Zeitachse zur\"uckgibt.
|
||||
\begin{solution}
|
||||
\lstinputlisting{sinewave.m}
|
||||
\lstinputlisting{plotsinec.m}
|
||||
\end{solution}
|
||||
|
||||
\part Schreibe eine zweite Funktion, die den Sinus plotted und
|
||||
daf\"ur die Zeitachse und den Sinus als Argument erh\"alt. Diese
|
||||
Funktion soll die Achsen richtig beschriften. Schreibe ein kleines
|
||||
Skript, dass beide Funktionen aufruft, um einen Sinus von 5\,Hz
|
||||
mit der Amplitude 2 \"uber 1.5 Sekunden zu plotten.
|
||||
\begin{solution}
|
||||
\lstinputlisting{plotsinewave.m}
|
||||
\lstinputlisting{plotsined.m}
|
||||
\end{solution}
|
||||
\end{parts}
|
||||
|
||||
\question Schreibe eine Funktion, die bin\"are Datens\"atze
|
||||
('signal.bin' und 'signal2.bin' vom Montag) liest und die Daten als
|
||||
Vektor zur\"uckgibt. Welche Argumente muss die Funktion
|
||||
\"ubernehmen?
|
||||
|
||||
\question Entwickle ein Programm, das einen 1-D random walk
|
||||
simuliert. Das Programm soll folgendes leisten:
|
||||
\begin{itemize}
|
||||
\item Jede Simulation soll solange laufen, bis eine Abweichung vom
|
||||
Startwert von $\pm$ 50 erreicht ist.
|
||||
\item Es soll m\"oglich sein, die Wahrscheinlichkeit f\"ur eine der
|
||||
beiden Richtungen zu variieren. Variiere im Bereich von 0.5 bis 0.9.
|
||||
\end{itemize}
|
||||
%\question Schreibe eine Funktion, die bin\"are Datens\"atze
|
||||
%('signal.bin' und 'signal2.bin' vom Montag) liest und die Daten als
|
||||
%Vektor zur\"uckgibt. Welche Argumente muss die Funktion
|
||||
%\"ubernehmen?
|
||||
|
||||
\question Random Walk.
|
||||
\begin{parts}
|
||||
\part \"Uberlege Dir ein geeignetes ``Programmlayout'' aus
|
||||
Funktionen und Skripten.
|
||||
\part Implementiere die L\"osung.
|
||||
\part Simuliere 30 Realisationen des random walk pro
|
||||
Wahrscheinlichkeit.
|
||||
\part Es sollen die Positionen als Funktion der Schrittanzahl
|
||||
geplottet werden. Erstelle einen Plot mit den je 30
|
||||
Wiederholungen pro Wahrscheinlichkeitsstufe.
|
||||
\part Lies die Aufgabe bis zum Ende durch. \"Uberlege dir dann ein
|
||||
geeignetes ``Programmlayout'' aus Funktionen und Skripten.
|
||||
|
||||
Was w\"are eine geeigente Funktion f\"ur diese Aufgabe? Welche
|
||||
Argumente sollte sie entgegennehmen? Was soll sie berechnen und
|
||||
zur\"uckgeben?
|
||||
\begin{solution}
|
||||
One function that computes one realisation of a random walk.
|
||||
Scripts for plotting and analysis.
|
||||
\lstinputlisting{randomwalkthresh.m}
|
||||
\end{solution}
|
||||
|
||||
\part Simuliere und plotte die Positionen von 10 Realisationen
|
||||
eines random walk mit gleichen Wahrscheinlichkeiten f\"ur beide
|
||||
Richtungen. Jeder Walker startet an der Position 0 und soll so
|
||||
lange laufen, bis er den Wert 50 \"uberschreitet oder den Wert
|
||||
$-50$ unterschreitet.
|
||||
\begin{solution}
|
||||
\lstinputlisting{randomwalkscriptb.m}
|
||||
\end{solution}
|
||||
|
||||
\part Jetzt wollen wir die Wahrscheinlichkeit $p$ f\"ur eine
|
||||
Bewegung zu gr\"o{\ss}eren Positionen im Bereich $0.5 \le p < 0.8$
|
||||
variieren. Simuliere 10 Realisationen des random walk f\"ur vier
|
||||
verschiedene Wahrscheinlichkeiten.
|
||||
\begin{solution}
|
||||
\lstinputlisting{randomwalkscriptc.m}
|
||||
\end{solution}
|
||||
|
||||
\part Wie entwickelt sich die mittlere ben\"otigte Schrittanzahl
|
||||
in Abh\"angigkeit der Wahrscheinlichkeit? Stelle die Mittelwerte
|
||||
und die Standardabweichungen graphisch dar.
|
||||
\begin{solution}
|
||||
\lstinputlisting{randomwalkscriptd.m}
|
||||
\end{solution}
|
||||
\end{parts}
|
||||
|
||||
\question Modellierung des exponentiellen Wachstums einer isolierten
|
||||
Population. Das exponentielle Wachstum einer isolierten Population
|
||||
wird \"uber folgende Differentialgleichung beschrieben:
|
||||
\begin{equation}
|
||||
\frac{dN}{dt} = N \cdot r,
|
||||
\end{equation}
|
||||
mit $N$ der Populationsgr\"o{\ss}e und $r$ der Wachstumsrate.
|
||||
\begin{parts}
|
||||
\part L\"ose die Gleichung numerisch mit dem Euler Verfahren.
|
||||
\part Implementiere eine Funktion, die die Populationsgr\"o{\ss}e
|
||||
und die Zeit zur\"uckgibt.
|
||||
\part Plotte die Populationsgr\"o{\ss}e als Funktion der Zeit.
|
||||
\end{parts}
|
||||
%\question Modellierung des exponentiellen Wachstums einer isolierten
|
||||
%Population. Das exponentielle Wachstum einer isolierten Population
|
||||
%wird \"uber folgende Differentialgleichung beschrieben:
|
||||
%\begin{equation}
|
||||
% \frac{dN}{dt} = N \cdot r,
|
||||
%\end{equation}
|
||||
%mit $N$ der Populationsgr\"o{\ss}e und $r$ der Wachstumsrate.
|
||||
%\begin{parts}
|
||||
% \part L\"ose die Gleichung numerisch mit dem Euler Verfahren.
|
||||
% \part Implementiere eine Funktion, die die Populationsgr\"o{\ss}e
|
||||
% und die Zeit zur\"uckgibt.
|
||||
% \part Plotte die Populationsgr\"o{\ss}e als Funktion der Zeit.
|
||||
%\end{parts}
|
||||
|
||||
\question Etwas realistischer ist das logistische Wachstum einer
|
||||
isolierten Population, bei der das Wachstum durch eine Kapazit\"at
|
||||
gedeckelt ist. Sie wird mit folgender Differentialgleichung
|
||||
beschrieben:
|
||||
\begin{equation}
|
||||
\frac{dN}{dt} = N \cdot r \cdot \left( 1 - \frac{N}{K} \right)
|
||||
\end{equation}
|
||||
mit $N$ der Population, der Wachstumsrate $r$ und $K$ der ``tragenden''
|
||||
Kapazit\"at.
|
||||
\begin{parts}
|
||||
\part Implementiere die L\"osung des logistischen Wachstums in
|
||||
einer Funktion. Benutze das Euler Verfahren. Die Funktion soll die
|
||||
Parameter $r$, $K$ sowie den Startwert von $N$ als Argumente
|
||||
\"ubernehmen.
|
||||
\part Die Funktion soll die Populationsgr\"o{\ss}e und die Zeit
|
||||
zur\"uckgeben.
|
||||
\part Simuliere das Wachstum mit einer Anzahl unterschiedlicher
|
||||
Startwerte f\"ur $N$.
|
||||
\part Stelle die Ergebnisse in einem Plot graphisch dar.
|
||||
\part Plotte das Wachstum $dN/dt$ als Funktion der
|
||||
Populationsgr\"o{\ss}e $N$.
|
||||
\end{parts}
|
||||
|
||||
%\question Etwas realistischer ist das logistische Wachstum einer
|
||||
%isolierten Population, bei der das Wachstum durch eine Kapazit\"at
|
||||
%gedeckelt ist. Sie wird mit folgender Differentialgleichung
|
||||
%beschrieben:
|
||||
%\begin{equation}
|
||||
% \frac{dN}{dt} = N \cdot r \cdot \left( 1 - \frac{N}{K} \right)
|
||||
%\end{equation}
|
||||
%mit $N$ der Population, der Wachstumsrate $r$ und $K$ der ``tragenden''
|
||||
%Kapazit\"at.
|
||||
%\begin{parts}
|
||||
% \part Implementiere die L\"osung des logistischen Wachstums in
|
||||
% einer Funktion. Benutze das Euler Verfahren. Die Funktion soll die
|
||||
% Parameter $r$, $K$ sowie den Startwert von $N$ als Argumente
|
||||
% \"ubernehmen.
|
||||
% \part Die Funktion soll die Populationsgr\"o{\ss}e und die Zeit
|
||||
% zur\"uckgeben.
|
||||
% \part Simuliere das Wachstum mit einer Anzahl unterschiedlicher
|
||||
% Startwerte f\"ur $N$.
|
||||
% \part Stelle die Ergebnisse in einem Plot graphisch dar.
|
||||
% \part Plotte das Wachstum $dN/dt$ als Funktion der
|
||||
% Populationsgr\"o{\ss}e $N$.
|
||||
%\end{parts}
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
12
programming/exercises/sinewave.m
Normal file
12
programming/exercises/sinewave.m
Normal file
@ -0,0 +1,12 @@
|
||||
function [time, sine] = sinewave(freq, ampl, duration)
|
||||
% compute sine wave with time axis
|
||||
% freq: frequency of the sinewave in Hertz
|
||||
% ampl: amplitude of the sinewave
|
||||
% duration: duration of the sinewave in seconds
|
||||
% returns:
|
||||
% time: vector of time points
|
||||
% sine: corresponding vector with the sine wave
|
||||
step = 0.01/freq;
|
||||
time = 0:step:duration;
|
||||
sine = ampl*sin(2*pi*freq*time);
|
||||
end
|
@ -2,7 +2,7 @@
|
||||
|
||||
\input{header}
|
||||
|
||||
\setcounter{maxexercise}{0} % show listings up to exercise maxexercise
|
||||
\setcounter{maxexercise}{1000} % show listings up to exercise maxexercise
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
@ -1,6 +1,6 @@
|
||||
TEXFILES=$(wildcard statistics??.tex)
|
||||
TEXFILES=$(wildcard exercises??.tex)
|
||||
EXERCISES=$(TEXFILES:.tex=.pdf)
|
||||
SOLUTIONS=$(EXERCISES:statistics%=solutions%)
|
||||
SOLUTIONS=$(EXERCISES:exercises%=solutions%)
|
||||
|
||||
.PHONY: pdf exercises solutions watch watchexercises watchsolutions clean
|
||||
|
||||
@ -10,7 +10,7 @@ exercises : $(EXERCISES)
|
||||
|
||||
solutions : $(SOLUTIONS)
|
||||
|
||||
$(SOLUTIONS) : solutions%.pdf : statistics%.tex instructions.tex
|
||||
$(SOLUTIONS) : solutions%.pdf : exercises%.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]*
|
||||
|
@ -3,36 +3,36 @@ n = 10000;
|
||||
m = 10; % number of loops
|
||||
|
||||
%% (b) a single data set of random numbers:
|
||||
x = rand( n, 1 );
|
||||
x = rand(n, 1);
|
||||
|
||||
%% (c) plot probability density:
|
||||
%histogram( x, 'Normalization', 'pdf' );
|
||||
[h,b] = hist( x, 20 );
|
||||
%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 )
|
||||
pause(2.0)
|
||||
|
||||
%% (d) sum of two random numbers:
|
||||
y = rand( n, 1 );
|
||||
y = rand(n, 1);
|
||||
x = x + y;
|
||||
%histogram( x, 'Normalization', 'pdf' );
|
||||
[h,b] = hist( x, 20 );
|
||||
%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 )
|
||||
pause(2.0)
|
||||
|
||||
%% (f) sum up more distributions:
|
||||
x = zeros( n, 1 );
|
||||
means = zeros( m, 1 );
|
||||
stds = zeros( m, 1 );
|
||||
x = zeros(n, 1);
|
||||
means = zeros(m, 1);
|
||||
stds = zeros(m, 1);
|
||||
for i=1:m
|
||||
y = rand( n, 1 ); % new uniform distributed numbers
|
||||
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
|
||||
@ -42,34 +42,34 @@ for i=1:m
|
||||
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', 3 )
|
||||
ns = sprintf( 'N=%d', i );
|
||||
text( 0.1, 0.9, ns, 'units', 'normalized' )
|
||||
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 );
|
||||
%histogram(x, 20, 'Normalization', 'pdf');
|
||||
[h,b] = hist(x, 20);
|
||||
h = h/sum(h)/(b(2)-b(1)); % normalization
|
||||
bar(b, h)
|
||||
hold off
|
||||
xlim([-0.5, i+0.5])
|
||||
xlabel( 'x' )
|
||||
ylabel( 'summed pdf' )
|
||||
savefigpdf( gcf, sprintf('centrallimit-hist%02d.pdf', i), 6, 5 );
|
||||
xlabel('x')
|
||||
ylabel('summed pdf')
|
||||
savefigpdf(gcf, sprintf('centrallimit-hist%02d.pdf', i), 6, 5);
|
||||
if i < 6
|
||||
pause( 3.0 )
|
||||
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 );
|
||||
plot(nx, means, 'b', 'linewidth', 4);
|
||||
hold on
|
||||
plot( nx, stds, 'r', 'linewidth', 4 );
|
||||
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' )
|
||||
legend('mean', 'std', 'theory')
|
||||
xlabel('N')
|
||||
hold off
|
||||
savefigpdf( gcf, 'centrallimit-samples.pdf', 6, 5 );
|
||||
savefigpdf(gcf, 'centrallimit-samples.pdf', 6, 5);
|
||||
|
||||
|
||||
|
@ -1,39 +1,40 @@
|
||||
n = 10000;
|
||||
|
||||
%% (a) simulate n times rolling a die:
|
||||
x = rollthedie( n );
|
||||
maxeyes = 8;
|
||||
x = rollthedie(n, maxeyes);
|
||||
|
||||
%% (b) probability P(3):
|
||||
P3 = sum(x == 3)/length(x);
|
||||
fprintf( 'P(3)=%.3f, expected is %.3f\n', P3, 1/6 );
|
||||
%% (b) probability P(5):
|
||||
P5 = sum(x == 5)/length(x);
|
||||
fprintf('P(5)=%.3f, expected is %.3f\n', P5, 1/maxeyes);
|
||||
|
||||
for i =1:6
|
||||
for i =1:maxeyes
|
||||
P = sum(x == i)/length(x);
|
||||
fprintf( 'P(%d)=%.3f, expected is %.3f\n', i, P, 1/6 );
|
||||
fprintf('P(%d)=%.3f, expected is %.3f\n', i, P, 1/maxeyes);
|
||||
end
|
||||
|
||||
%% (c) P(i)
|
||||
P = zeros(1, 6);
|
||||
for i =1:6
|
||||
P = zeros(1, maxeyes);
|
||||
for i =1:maxeyes
|
||||
P(i) = sum(x == i)/length(x);
|
||||
end
|
||||
subplot( 1, 2, 1 )
|
||||
plot( [0 7], [1/6 1/6], 'r', 'linewidth', 3 )
|
||||
subplot(1, 2, 1)
|
||||
plot([0 maxeyes+1], [1/maxeyes 1/maxeyes], 'r', 'linewidth', 3)
|
||||
hold on
|
||||
bar( P );
|
||||
bar(P);
|
||||
hold off
|
||||
set(gca, 'XTick', 1:6 );
|
||||
xlim( [ 0 7 ] );
|
||||
set(gca, 'XTick', 1:maxeyes);
|
||||
xlim([0 maxeyes+1]);
|
||||
xlabel('Eyes');
|
||||
ylabel('Probability');
|
||||
|
||||
%% (d) histogram of x
|
||||
subplot( 1, 2, 2 );
|
||||
diehist( 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 );
|
||||
savefigpdf(gcf, 'die1.pdf', 12, 5)
|
||||
x = randi(8, 1, n); % random numbers from 1 to 8
|
||||
x(x>6) = 6; % set numbers 7 and 8 to 6
|
||||
diehist(x);
|
||||
savefigpdf(gcf, 'die1.pdf', 12, 5)
|
||||
|
Binary file not shown.
@ -3,23 +3,25 @@ n = 100;
|
||||
P = zeros(ndies, 6);
|
||||
for i = 1:ndies
|
||||
% (a) roll a single die:
|
||||
x = rollthedie( n );
|
||||
x = rollthedie(n, 6);
|
||||
% (b) compute normalized histogram:
|
||||
[h,b] = hist( x, 1:6 );
|
||||
[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
|
||||
set(gca, 'XTick', 1:6 );
|
||||
xlim( [ 0, 7 ] );
|
||||
ylim( [ 0, 0.25])
|
||||
errorbar(m, s, '.k', 'linewidth', 2); % k is black
|
||||
set(gca, 'XTick', 1:6);
|
||||
xlim([ 0, 7 ]);
|
||||
ylim([ 0, 0.25])
|
||||
xlabel('Eyes');
|
||||
ylabel('Probability');
|
||||
hold off;
|
||||
|
@ -1,14 +1,15 @@
|
||||
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', 3 )
|
||||
hold on
|
||||
bar( b, h );
|
||||
hold off
|
||||
set(gca, 'XTick', 1:6 );
|
||||
xlim( [ 0, 7 ] );
|
||||
xlabel('Eyes');
|
||||
ylabel('Probability');
|
||||
function diehist(x)
|
||||
% plots a normalized histogram of integer random numbers x
|
||||
% drawn from rolling a die.
|
||||
maxx = max(x);
|
||||
[h,b] = hist(x, 1:maxx);
|
||||
h = h/sum(h); % normalization
|
||||
plot([0 maxx+1], [1/maxx 1/maxx], 'r', 'linewidth', 3)
|
||||
hold on
|
||||
bar(b, h);
|
||||
hold off
|
||||
set(gca, 'XTick', 1:maxx);
|
||||
xlim([ 0, maxx+1]);
|
||||
xlabel('Eyes');
|
||||
ylabel('Probability');
|
||||
end
|
||||
|
224
statistics/exercises/exercises01.tex
Normal file
224
statistics/exercises/exercises01.tex
Normal file
@ -0,0 +1,224 @@
|
||||
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage{pslatex}
|
||||
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
|
||||
\usepackage{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||
|
||||
%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\ifprintanswers
|
||||
\newcommand{\stitle}{: L\"osungen}
|
||||
\else
|
||||
\newcommand{\stitle}{}
|
||||
\fi
|
||||
\header{{\bfseries\large \"Ubung 6\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 22. November, 2016}}
|
||||
\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}
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
language=Matlab,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
numberstyle=\tiny,
|
||||
title=\lstname,
|
||||
showstringspaces=false,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{bm}
|
||||
\usepackage{dsfont}
|
||||
\newcommand{\naZ}{\mathds{N}}
|
||||
\newcommand{\gaZ}{\mathds{Z}}
|
||||
\newcommand{\raZ}{\mathds{Q}}
|
||||
\newcommand{\reZ}{\mathds{R}}
|
||||
\newcommand{\reZp}{\mathds{R^+}}
|
||||
\newcommand{\reZpN}{\mathds{R^+_0}}
|
||||
\newcommand{\koZ}{\mathds{C}}
|
||||
|
||||
%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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}
|
||||
|
||||
%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\newcommand{\qt}[1]{\textbf{#1}\\}
|
||||
\newcommand{\pref}[1]{(\ref{#1})}
|
||||
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\input{instructions}
|
||||
|
||||
\ifprintanswers%
|
||||
\else
|
||||
|
||||
\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
|
||||
command} oder \code{doc command}) 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!
|
||||
\item Die L\"osung bitte als zip-Archiv mit dem Namen
|
||||
``probabilities\_\{nachname\}\_\{vorname\}.zip'' auf ILIAS hochladen.
|
||||
\end{itemize}
|
||||
|
||||
\fi
|
||||
|
||||
|
||||
\begin{questions}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \textbf{Lies im Skript das Kapitel 3 ``Programmierstil''!}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \qt{Wahrscheinlichkeiten eines W\"urfels I}
|
||||
Der Computer kann mit W\"urfeln w\"urfeln die mehr als 6 Seiten haben!
|
||||
\begin{parts}
|
||||
\part Simuliere 10000 W\"urfe mit einem W\"urfel mit acht Seiten
|
||||
durch Erzeugung von ganzzahligen Zufallszahlen mit den Augenzahlen
|
||||
$x_i = 1, 2, \ldots 8$ .
|
||||
|
||||
\part Berechne die Wahrscheinlichkeit $P(5)$ des Auftretens der
|
||||
Augenzahl f\"unf durch Bestimmung der Anzahl der F\"unfen 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 Hilfe der \code{hist()} und \code{bar()} Funktionen.
|
||||
|
||||
\part \extra Wie k\"onnte man einen gezinkten sechsseitigen W\"urfel
|
||||
simulieren, bei dem die sechs dreimal so h\"aufig wie die anderen
|
||||
Zahlen gew\"urfelt wird?
|
||||
|
||||
Fertige von diesem W\"urfel ein normiertes Histogram aus 10000
|
||||
W\"urfen an.
|
||||
\end{parts}
|
||||
\begin{solution}
|
||||
\lstinputlisting{rollthedie.m}
|
||||
\lstinputlisting{diehist.m}
|
||||
\lstinputlisting{die1.m}
|
||||
\includegraphics[width=1\textwidth]{die1}
|
||||
\end{solution}
|
||||
|
||||
|
||||
\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 in einem S\"aulenplot mit Fehlerbalken dar
|
||||
(\code{bar()} mit \code{errorbar()} Funktionen).
|
||||
\end{parts}
|
||||
\begin{solution}
|
||||
\lstinputlisting{die2.m}
|
||||
\includegraphics[width=0.5\textwidth]{die2}
|
||||
\end{solution}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \qt{Histogramm der Normalverteilung}
|
||||
\vspace{-3ex}
|
||||
\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$ (\code{randn()} Funktion).
|
||||
|
||||
\part Berechne aus diesem Datensatz die Wahrscheinlichkeit $P(0\le
|
||||
x<0.5)$.
|
||||
|
||||
\part Was passiert mit der Wahrscheinlichkeit eine Zahl in einem
|
||||
bestimmten Interval zu ziehen (z.B. $P(0\le x<a)$), wenn dieses
|
||||
Intervall immer kleiner wird ($a \to 0$)?
|
||||
|
||||
Schreibe ein Programm, das dies illustriert indem es $P(0\le x<a)$
|
||||
als Funktion von $a$ plottet ($0 \ge a \ge 4$).
|
||||
|
||||
\part \label{manualpdf} Bestimme und plotte die
|
||||
Wahrscheinlichkeitsdichte dieser Zufallszahlen (das normierte
|
||||
Histogramm). Lege dazu zun\"achst die Positionen der bins (Breite
|
||||
von 0.5) in einem Vektor fest. Bestimme dann mit einer \code{for}
|
||||
Schleife f\"ur jedes dieser bins die Anzahl der Datenelemente, die
|
||||
in diese bin fallen. Normiere anschliessend das so erhaltene
|
||||
Histogram und plotte es mit der \code{bar()} Funktion.
|
||||
|
||||
\part \label{gaussianpdf} Plotte zum Vergleich in den gleichen Plot
|
||||
die Normalverteilung
|
||||
\[ p_g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \; . \]
|
||||
|
||||
\part Plotte die Wahrscheinlichkeitsdichte der Daten wie in
|
||||
(\ref{manualpdf}) und (\ref{gaussianpdf}), aber mit Hilfe der
|
||||
\code{hist()} Funktion.
|
||||
\end{parts}
|
||||
\begin{solution}
|
||||
\lstinputlisting{normhist.m}
|
||||
\includegraphics[width=1\textwidth]{normhist}
|
||||
\end{solution}
|
||||
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
272
statistics/exercises/exercises02.tex
Normal file
272
statistics/exercises/exercises02.tex
Normal file
@ -0,0 +1,272 @@
|
||||
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage{pslatex}
|
||||
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
|
||||
\usepackage{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||
|
||||
%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\ifprintanswers
|
||||
\newcommand{\stitle}{: L\"osungen}
|
||||
\else
|
||||
\newcommand{\stitle}{}
|
||||
\fi
|
||||
\header{{\bfseries\large \"Ubung 7\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 29. November, 2016}}
|
||||
\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}
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
language=Matlab,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
numberstyle=\tiny,
|
||||
title=\lstname,
|
||||
showstringspaces=false,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{bm}
|
||||
\usepackage{dsfont}
|
||||
\newcommand{\naZ}{\mathds{N}}
|
||||
\newcommand{\gaZ}{\mathds{Z}}
|
||||
\newcommand{\raZ}{\mathds{Q}}
|
||||
\newcommand{\reZ}{\mathds{R}}
|
||||
\newcommand{\reZp}{\mathds{R^+}}
|
||||
\newcommand{\reZpN}{\mathds{R^+_0}}
|
||||
\newcommand{\koZ}{\mathds{C}}
|
||||
|
||||
%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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}
|
||||
|
||||
%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\newcommand{\qt}[1]{\textbf{#1}\\}
|
||||
\newcommand{\pref}[1]{(\ref{#1})}
|
||||
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
\graphicspath{{../../pointprocesses/exercises/}}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\input{instructions}
|
||||
|
||||
|
||||
\begin{questions}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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$ (\code{randn() Funktion}).
|
||||
\part Bestimme und plotte die Wahrscheinlichkeitsdichte dieser
|
||||
Zufallszahlen (normiertes Histogramm) und plotte zum Vergleich in
|
||||
den gleichen Plot die Normalverteilung
|
||||
\[ p_g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \; . \]
|
||||
|
||||
\part \label{onesigma} Wieviele dieser Daten $X$ sind maximal eine Standardabweichung vom Mittelwert entfernt?\\
|
||||
D.h. wieviele Datenwerte $x_i$ haben den Wert $-\sigma < x_i < +\sigma$?\\
|
||||
Wie gro{\ss} ist dann 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.
|
||||
\"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 $\pm 2\sigma$
|
||||
sowie $\pm 3\sigma$ enthalten?
|
||||
|
||||
Vergleiche die Ergebnisse jeweils mit dem entsprechenden Integral
|
||||
\"uber die Wahrscheinlichkeitsdichte.
|
||||
|
||||
\part \label{givenfraction} Finde durch numerische Integration der
|
||||
Wahrscheinlichkeitsdichte heraus, in welchem Interval symmetrisch um
|
||||
den Mittelwert 50\,\%, 90\,\%, 95\,\% bzw. 99\,\% der Daten enhalten
|
||||
sind.
|
||||
|
||||
% \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}
|
||||
\begin{solution}
|
||||
\lstinputlisting{normprobs.m}
|
||||
\end{solution}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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 Bevor du die weiteren Teilaufgaben liest, 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}
|
||||
\begin{solution}
|
||||
\lstinputlisting{centrallimit.m}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist01}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist02}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist03}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist05}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-samples}
|
||||
\end{solution}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \qt{Intervallstatistik von Spiketrains}
|
||||
In Ilias findet ihr die Dateien \code{poisson.mat},
|
||||
\code{pifou.mat}, und \code{lifadapt.mat}. Jede dieser Dateien
|
||||
enth\"alt mehrere Trials von Spiketrains von einer bestimmten Art
|
||||
von Neuron. Die Spikezeiten sind in Sekunden gemessen.
|
||||
|
||||
Mit den folgenden Aufgaben wollen wir die Intervallstatistik der
|
||||
Spiketrains der drei Neurone miteinander vergleichen.
|
||||
\begin{parts}
|
||||
\part Lade die Spiketrains aus den drei Dateien. Achte darauf,
|
||||
dass sie verschiedene Variablen\-namen bekommen.
|
||||
|
||||
In welchem Datentyp liegen die Daten vor? Wie kann auf einzelne
|
||||
Spiketrains zugegriffen werden? Wie auf einzelne Spikezeiten?
|
||||
\begin{solution}
|
||||
\begin{lstlisting}
|
||||
clear all
|
||||
% not so good:
|
||||
load poisson.mat
|
||||
whos
|
||||
poissonspikes = spikes;
|
||||
load pifou.mat;
|
||||
pifouspikes = spikes;
|
||||
load lifadapt.mat;
|
||||
lifadaptspikes = spikes;
|
||||
clear spikes;
|
||||
% better:
|
||||
clear all
|
||||
x = load('poisson.mat');
|
||||
poissonspikes = x.spikes;
|
||||
x = load('pifou.mat');
|
||||
pifouspikes = x.spikes;
|
||||
x = load('lifadapt.mat');
|
||||
lifadaptspikes = x.spikes;
|
||||
\end{lstlisting}
|
||||
\end{solution}
|
||||
|
||||
\part Schreibe eine Funktion, die die Spikezeiten der ersten
|
||||
$t_{max}$ Sekunden in einem Rasterplot visualisiert. In jeder
|
||||
Zeile des Rasterplots wird ein Spiketrain dargestellt. Jeder
|
||||
einzelne Spike wird als senkrechte Linie zu der Zeit des
|
||||
Auftretens des Spikes geplottet. Benutze die Funktion, um die
|
||||
Spikeraster der ersten 1\,s der drei Neurone nebeneinander zu plotten.
|
||||
\begin{solution}
|
||||
\lstinputlisting{../../pointprocesses/code/spikeraster.m}
|
||||
\lstinputlisting{../../pointprocesses/code/plotspikeraster.m}
|
||||
\mbox{}\\[-3ex]
|
||||
\colorbox{white}{\includegraphics[width=1\textwidth]{spikeraster}}
|
||||
\end{solution}
|
||||
|
||||
\part Schreibe eine Funktion, die einen einzigen Vektor mit den
|
||||
Interspikeintervallen aller Trials von Spikezeiten zur\"uckgibt.
|
||||
\begin{solution}
|
||||
\lstinputlisting{../../pointprocesses/code/isis.m}
|
||||
\end{solution}
|
||||
|
||||
\part Schreibe eine Funktion, die ein normiertes Histogramm aus
|
||||
einem Vektor von Interspikeintervallen, gegeben in Sekunden,
|
||||
berechnet und dieses mit richtiger Achsenbeschriftung plottet.
|
||||
Die Interspikeintervalle sollen dabei in Millisekunden angegeben
|
||||
werden. Die Funktion soll zus\"atzlich den Mittelwert, die
|
||||
Standardabweichung, und den Variationskoeffizienten der
|
||||
Interspikeintervalle berechnen und diese im Plot mit angeben.
|
||||
|
||||
Benutze die vorherige und diese Funktion, um die
|
||||
Interspikeintervall Verteilung der drei Neurone zu vergleichen.
|
||||
\begin{solution}
|
||||
\lstinputlisting{../../pointprocesses/code/isihist.m}
|
||||
\lstinputlisting{../../pointprocesses/code/plotisih.m}
|
||||
\mbox{}\\[-3ex]
|
||||
\colorbox{white}{\includegraphics[width=1\textwidth]{isihist}}
|
||||
\end{solution}
|
||||
\end{parts}
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
@ -15,7 +15,7 @@
|
||||
\else
|
||||
\newcommand{\stitle}{}
|
||||
\fi
|
||||
\header{{\bfseries\large \"Ubung 2\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 20. Oktober, 2015}}
|
||||
\header{{\bfseries\large \"Ubung 8\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 29. November, 2016}}
|
||||
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
|
||||
jan.benda@uni-tuebingen.de}
|
||||
\runningfooter{}{\thepage}{}
|
||||
@ -87,67 +87,32 @@ jan.benda@uni-tuebingen.de}
|
||||
|
||||
\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}
|
||||
\begin{solution}
|
||||
\lstinputlisting{centrallimit.m}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist01}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist02}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist03}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-hist05}
|
||||
\includegraphics[width=0.5\textwidth]{centrallimit-samples}
|
||||
\end{solution}
|
||||
|
||||
|
||||
\question \qt{Random Walk}
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\question \qt{Statistik des Random Walks}
|
||||
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.
|
||||
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.\\
|
||||
\"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.
|
||||
|
||||
\part \extra Erstelle eine Grafik, die die Verteilung der Position
|
||||
eines Random Walkers zu drei verschiedenen Zeitpunkten zeigt.
|
||||
\end{parts}
|
||||
\begin{solution}
|
||||
\lstinputlisting{randomwalk.m}
|
||||
@ -158,6 +123,7 @@ Im folgenden wollen wir einige Eigenschaften des Random Walks bestimmen.
|
||||
\end{solution}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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!\\
|
||||
@ -179,4 +145,5 @@ sind unabh\"angig voneinander.
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\end{document}
|
||||
|
@ -4,38 +4,3 @@
|
||||
{\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
|
||||
|
58
statistics/exercises/normhist.m
Normal file
58
statistics/exercises/normhist.m
Normal file
@ -0,0 +1,58 @@
|
||||
%% a) 1000 normal distributed random numbers:
|
||||
x = randn(1000, 1);
|
||||
|
||||
%% b) probability of 0<=x<0.5:
|
||||
n = sum(x>=0.0 & x<0.5);
|
||||
P = n/length(x);
|
||||
fprintf('probability 0<=x<0.5 is %g\n', P);
|
||||
|
||||
%% c) probability for decreasing intervals:
|
||||
upper = [0.0:0.01:4.0];
|
||||
P = zeros(length(upper), 1);
|
||||
for k=1:length(upper)
|
||||
P(k) = sum((x>=0) & (x<upper(k)))/length(x);
|
||||
end
|
||||
subplot(1, 2, 1);
|
||||
plot(upper, P, 'linewidth', 2);
|
||||
ylim([0 0.5]);
|
||||
xlabel('x_{upper}');
|
||||
ylabel('P(0<=x<x_{upper})');
|
||||
|
||||
%% d) histogram with for loop:
|
||||
x = randn(1000, 1);
|
||||
bw = 0.5;
|
||||
bins=[-5:bw:5];
|
||||
n = zeros(length(bins), 1);
|
||||
for k=1:length(bins)
|
||||
n(k) = sum((x>=bins(k)-bw/2) & (x<bins(k)+bw/2));
|
||||
end
|
||||
p = n/sum(n)/bw;
|
||||
subplot(1, 2, 2);
|
||||
bar(bins, p);
|
||||
|
||||
%% e) gaussian pdf:
|
||||
hold on;
|
||||
xx = [bins(1):0.01:bins(end)];
|
||||
gauss = exp(-0.5*xx.^2.0)/sqrt(2*pi);
|
||||
plot(xx, gauss, 'r', 'linewidth', 2);
|
||||
hold off;
|
||||
xlim([-5 5])
|
||||
xlabel('x');
|
||||
ylabel('p(x)');
|
||||
|
||||
%% f) hist
|
||||
x = randn(1000, 1);
|
||||
bw = 0.5;
|
||||
bins=[-5:bw:5];
|
||||
n = hist(x, bins);
|
||||
p = n/sum(n)/bw;
|
||||
subplot(1, 2, 2);
|
||||
bar(bins, p);
|
||||
hold on;
|
||||
plot(xx, gauss, 'r', 'linewidth', 2);
|
||||
hold off;
|
||||
xlim([-5 5])
|
||||
xlabel('x');
|
||||
ylabel('p(x)');
|
||||
|
||||
savefigpdf(gcf, 'normhist.pdf', 14, 6);
|
BIN
statistics/exercises/normhist.pdf
Normal file
BIN
statistics/exercises/normhist.pdf
Normal file
Binary file not shown.
@ -1,14 +1,30 @@
|
||||
%% (a) generate normal distributed random numbers:
|
||||
n = 10000;
|
||||
x = randn( n, 1 );
|
||||
x = randn(n, 1);
|
||||
|
||||
%% (b)
|
||||
%% (b) plot histogram and compare with pdf:
|
||||
bw = 0.5;
|
||||
bins=[-5:bw:5];
|
||||
n = hist(x, bins);
|
||||
p = n/sum(n)/bw;
|
||||
subplot(1, 2, 2);
|
||||
bar(bins, p);
|
||||
hold on;
|
||||
xx = [bins(1):0.01:bins(end)];
|
||||
gauss = exp(-0.5*xx.^2.0)/sqrt(2*pi);
|
||||
plot(xx, gauss, 'r', 'linewidth', 2);
|
||||
hold off;
|
||||
xlim([-5 5])
|
||||
xlabel('x');
|
||||
ylabel('p(x)');
|
||||
|
||||
%% (c) fraction of data in +/- 1 sigma:
|
||||
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)
|
||||
%% (d) intgegral over pdf:
|
||||
dx = 0.01;
|
||||
xx = -10:dx:10; % x-values
|
||||
pg = exp(-0.5*xx.^2)/sqrt(2*pi); % y-values Gaussian pdf
|
||||
@ -17,30 +33,25 @@ 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 );
|
||||
fprintf( 'Integral over the Gaussian pdf from -1 to 1 is %.4f\n\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)
|
||||
for sigma = [1.0, 2.0, 3.0]
|
||||
Pdata = sum((x>=-sigma)&(x<=sigma))/length(x);
|
||||
Ppdf = sum(pg((xx>=-sigma)&(xx<=sigma)))*dx;
|
||||
fprintf( 'Integral over the Gaussian pdf from -%.0f to +%.0f is %.4f\n', sigma, sigma, Ppdf );
|
||||
fprintf( 'Probability of data in range from -%.0f to +%.0f is %.4f\n\n', sigma, sigma, Pdata );
|
||||
end
|
||||
|
||||
%% (e) probability of small ranges
|
||||
nr = 50;
|
||||
xmax = 3.0
|
||||
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 = xmax*(nr-i)/nr;
|
||||
xs(i) = xupper;
|
||||
% integral from 0 to xupper:
|
||||
Ps(i) = sum(pg((xx>=0.0)&(xx<=xupper)))*dx;
|
||||
%% (f)
|
||||
for P = [0.5, 0.9, 0.95, 0.99]
|
||||
for upper = xx(xx>0.0)
|
||||
Ppdf = sum(pg((xx>=-upper)&(xx<=upper)))*dx;
|
||||
if Ppdf > P
|
||||
fprintf('-%.2f < x < +%.2f: P=%.2f\n', upper, upper, P);
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
plot( xs, Ps, 'linewidth', 3 )
|
||||
xlim([0 xmax])
|
||||
ylim([0 0.55])
|
||||
xlabel('Integration interval')
|
||||
ylabel('Probability')
|
||||
fprintf('The probability P(0.1234) = %.4f\n\n', sum(x == 0.1234)/length(x) );
|
||||
savefigpdf(gcf, 'normprobs.pdf', 12, 8);
|
||||
|
||||
|
||||
|
Binary file not shown.
@ -1,4 +1,5 @@
|
||||
function x = rollthedie( n )
|
||||
% return a vector with the result of rolling a die n times
|
||||
x = randi( [1, 6], n, 1 );
|
||||
function x = rollthedie(n, m)
|
||||
% return a vector with the result of rolling a die
|
||||
% with m eyes n times
|
||||
x = randi( [1, m], n, 1 );
|
||||
end
|
||||
|
@ -1,184 +0,0 @@
|
||||
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage{pslatex}
|
||||
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
|
||||
\usepackage{xcolor}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||
|
||||
%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot}
|
||||
\ifprintanswers
|
||||
\newcommand{\stitle}{: L\"osungen}
|
||||
\else
|
||||
\newcommand{\stitle}{}
|
||||
\fi
|
||||
\header{{\bfseries\large \"Ubung 1\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 19. 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}
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
language=Matlab,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
numberstyle=\tiny,
|
||||
title=\lstname,
|
||||
showstringspaces=false,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{bm}
|
||||
\usepackage{dsfont}
|
||||
\newcommand{\naZ}{\mathds{N}}
|
||||
\newcommand{\gaZ}{\mathds{Z}}
|
||||
\newcommand{\raZ}{\mathds{Q}}
|
||||
\newcommand{\reZ}{\mathds{R}}
|
||||
\newcommand{\reZp}{\mathds{R^+}}
|
||||
\newcommand{\reZpN}{\mathds{R^+_0}}
|
||||
\newcommand{\koZ}{\mathds{C}}
|
||||
|
||||
%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\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}
|
||||
|
||||
%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\newcommand{\qt}[1]{\textbf{#1}\\}
|
||||
\newcommand{\pref}[1]{(\ref{#1})}
|
||||
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\input{instructions}
|
||||
|
||||
|
||||
\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}
|
||||
\begin{solution}
|
||||
\lstinputlisting{rollthedie.m}
|
||||
\lstinputlisting{diehist.m}
|
||||
\lstinputlisting{die1.m}
|
||||
\includegraphics[width=1\textwidth]{die1}
|
||||
\end{solution}
|
||||
|
||||
|
||||
\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}
|
||||
\begin{solution}
|
||||
\lstinputlisting{die2.m}
|
||||
\includegraphics[width=0.5\textwidth]{die2}
|
||||
\end{solution}
|
||||
|
||||
|
||||
\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}
|
||||
\begin{solution}
|
||||
\lstinputlisting{normprobs.m}
|
||||
\includegraphics[width=1\textwidth]{normprobs}
|
||||
\end{solution}
|
||||
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
Reference in New Issue
Block a user