diff --git a/statistics/code/mlemean.m b/statistics/code/mlemean.m new file mode 100644 index 0000000..90d9ef7 --- /dev/null +++ b/statistics/code/mlemean.m @@ -0,0 +1,29 @@ +% draw random numbers: +n = 100; +mu = 3.0; +sigma =2.0; +x = randn(n,1)*sigma+mu; +fprintf(' mean of the data is %.2f\n', mean(x)) +fprintf('standard deviation of the data is %.2f\n', std(x)) + +% mean as parameter: +pmus = 2.0:0.01:4.0; +% matrix with the probabilities for each x and pmus: +lms = zeros(length(x), length(pmus)); +for i=1:length(pmus) + pmu = pmus(i); + p = exp(-0.5*((x-pmu)/sigma).^2.0)/sqrt(2.0*pi)/sigma; + lms(:,i) = p; +end +lm = prod(lms, 1); % likelihood +loglm = sum(log(lms), 1); % log likelihood + +% plot likelihood of mean: +subplot(1, 2, 1); +plot(pmus, lm ); +xlabel('mean') +ylabel('likelihood') +subplot(1, 2, 2); +plot(pmus, loglm ); +xlabel('mean') +ylabel('log likelihood') diff --git a/statistics/code/mlepdffit.m b/statistics/exercises/mlepdffit.m similarity index 100% rename from statistics/code/mlepdffit.m rename to statistics/exercises/mlepdffit.m diff --git a/statistics/code/mlepropfit.m b/statistics/exercises/mlepropfit.m similarity index 93% rename from statistics/code/mlepropfit.m rename to statistics/exercises/mlepropfit.m index 8197146..9c18cc1 100644 --- a/statistics/code/mlepropfit.m +++ b/statistics/exercises/mlepropfit.m @@ -27,3 +27,5 @@ legend('data', 'original', 'fit', 'Location', 'NorthWest'); legend('boxoff') xlabel('x'); ylabel('y'); + +savefigpdf(gcf, 'mlepropfit.pdf', 12, 7); diff --git a/statistics/code/mleslope.m b/statistics/exercises/mleslope.m similarity index 100% rename from statistics/code/mleslope.m rename to statistics/exercises/mleslope.m diff --git a/statistics/code/mlemeanstd.m b/statistics/exercises/mlestd.m similarity index 56% rename from statistics/code/mlemeanstd.m rename to statistics/exercises/mlestd.m index 6bb25a6..61f4b22 100644 --- a/statistics/code/mlemeanstd.m +++ b/statistics/exercises/mlestd.m @@ -1,33 +1,11 @@ % draw random numbers: -n = 500; +n = 50; mu = 3.0; sigma =2.0; x = randn(n,1)*sigma+mu; fprintf(' mean of the data is %.2f\n', mean(x)) fprintf('standard deviation of the data is %.2f\n', std(x)) -% mean as parameter: -pmus = 2.0:0.01:4.0; -% matrix with the probabilities for each x and pmus: -lms = zeros(length(x), length(pmus)); -for i=1:length(pmus) - pmu = pmus(i); - p = exp(-0.5*((x-pmu)/sigma).^2.0)/sqrt(2.0*pi)/sigma; - lms(:,i) = p; -end -lm = prod(lms, 1); % likelihood -loglm = sum(log(lms), 1); % log likelihood - -% plot likelihood of mean: -subplot(2, 2, 1); -plot(pmus, lm ); -xlabel('mean') -ylabel('likelihood') -subplot(2, 2, 2); -plot(pmus, loglm ); -xlabel('mean') -ylabel('log likelihood') - % standard deviation as parameter: psigs = 1.0:0.01:3.0; % matrix with the probabilities for each x and psigs: @@ -41,11 +19,12 @@ lm = prod(lms, 1); % likelihood loglm = sum(log(lms), 1); % log likelihood % plot likelihood of standard deviation: -subplot(2, 2, 3); +subplot(1, 2, 1); plot(psigs, lm ); xlabel('standard deviation') ylabel('likelihood') -subplot(2, 2, 4); +subplot(1, 2, 2); plot(psigs, loglm); xlabel('standard deviation') ylabel('log likelihood') +savefigpdf(gcf, 'mlestd.pdf', 12, 5); diff --git a/statistics/exercises/statistics04.tex b/statistics/exercises/statistics04.tex new file mode 100644 index 0000000..60d4e27 --- /dev/null +++ b/statistics/exercises/statistics04.tex @@ -0,0 +1,191 @@ +\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 4\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 26. 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{Maximum Likelihood der Standardabweichung} +Wir wollen uns die Likelihood und die Log-Likelihood am Beispiel der +Absch\"atzung der Standardabweichung verdeutlichen. +\begin{parts} + \part Ziehe $n=50$ normalverteilte Zufallsvariablen mit Mittelwert $\mu=3$ + und einer Standardabweichung $\sigma=2$. + + \part + Plotte die Likelihood (aus dem Produkt der Wahrscheinlichkeiten) und + die Log-Likelihood (aus der Summe der logarithmierten + Wahrscheinlichkeiten) f\"ur die Standardabweichung als Parameter. Vergleiche die + Position der Maxima mit der aus den Daten berechneten Standardabweichung. + + \part + Erh\"ohe $n$ auf 1000. Was passiert mit der Likelihood, was mit der Log-Likelihood? Warum? +\end{parts} +\begin{solution} + \lstinputlisting{mlestd.m} + \includegraphics[width=1\textwidth]{mlestd} +\end{solution} + +\continue +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\question \qt{Maximum-Likelihood-Sch\"atzer einer Ursprungsgeraden} +In der Vorlesung haben wir eine Gleichung f\"ur die Maximum-Likelihood +Absch\"atzung der Steigung einer Ursprungsgeraden hergeleitet. +\begin{parts} + \part \label{mleslopefunc} Schreibe eine Funktion, die in einem $x$ und einem + $y$ Vektor die Datenpaare \"uberreicht bekommt und die Steigung der + Ursprungsgeraden, die die Likelihood maximiert, zur\"uckgibt + ($\sigma=\text{const}$). + + \part + Schreibe ein Skript, das Datenpaare erzeugt, die um eine + Ursprungsgerade mit vorgegebener Steigung streuen. Berechne mit der + Funktion aus \pref{mleslopefunc} die Steigung aus den Daten, + vergleiche mit der wahren Steigung, und plotte die urspr\"ungliche + sowie die gefittete Gerade zusammen mit den Daten. + + \part + Ver\"andere die Anzahl der Datenpunkte, die Steigung, sowie die + Streuung der Daten um die Gerade. +\end{parts} +\begin{solution} + \lstinputlisting{mleslope.m} + \lstinputlisting{mlepropfit.m} + \includegraphics[width=1\textwidth]{mlepropfit} +\end{solution} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\question \qt{Maximum-Likelihood-Sch\"atzer einer Wahrscheinlichkeitsdichtefunktion} +Verschiedene Wahrscheinlichkeitsdichtefunktionen haben Parameter, die +nicht so einfach wie der Mittelwert und die Standardabweichung einer +Normalverteilung direkt aus den Daten berechnet werden k\"onnen. Solche Parameter +m\"ussen dann aus den Daten mit der Maximum-Likelihood-Methode gefittet werden. + +Um dies zu veranschaulichen ziehen wir uns diesmal Zufallszahlen, die nicht einer +Normalverteilung entstammen, sonder aus der Gamma-Verteilung. +\begin{parts} + \part + Finde heraus welche Funktion die Wahrscheinlichkeitsdichtefunktion + (probability density function) der Gamma-Verteilung in \code{matlab} + berechnet. + + \part + Plotte mit Hilfe dieser Funktion die Wahrscheinlichkeitsdichtefunktion + der Gamma-Verteilung f\"ur verschiedene Werte des (positiven) ``shape'' Parameters. + Den ``scale'' Parameter setzen wir auf Eins. + + \part + Finde heraus mit welcher Funktion Gammaverteilte Zufallszahlen in + \code{matlab} gezogen werden k\"onnen. Erzeuge mit dieser Funktion + 50 Zufallszahlen mit einem der oben geplotteten ``shape'' Parameter. + + \part + Berechne und plotte ein normiertes Histogramm dieser Zufallszahlen. + + \part + Finde heraus mit welcher \code{matlab}-Funktion eine beliebige + Verteilung (``distribution'') und die Gammaverteilung an die + Zufallszahlen nach der Maximum-Likelihood Methode gefittet werden + kann. + + \part + Bestimme mit dieser Funktion die Parameter der + Gammaverteilung aus den Zufallszahlen. + + \part + Plotte anschlie{\ss}end + die Gammaverteilung mit den gefitteten Parametern. +\end{parts} +\begin{solution} + \lstinputlisting{mlepdffit.m} + %\includegraphics[width=1\textwidth]{mlepdffit} +\end{solution} + +\end{questions} + +\end{document} \ No newline at end of file diff --git a/statistics/lecture/descriptivestatistics.tex b/statistics/lecture/descriptivestatistics.tex index 5661917..f0e0f08 100644 --- a/statistics/lecture/descriptivestatistics.tex +++ b/statistics/lecture/descriptivestatistics.tex @@ -616,17 +616,15 @@ Der Maximum-Likelihood-Estimator ist das arithmetische Mittel der Daten. D.h. das arithmetische Mittel maximiert die Wahrscheinlichkeit, dass die Daten aus einer Normalverteilung mit diesem Mittelwert gezogen worden sind. -\begin{exercise}[mlemeanstd.m] +\begin{exercise}[mlemean.m] Ziehe $n=50$ normalverteilte Zufallsvariablen mit einem Mittelwert $\ne 0$ und einer Standardabweichung $\ne 1$. Plotte die Likelihood (aus dem Produkt der Wahrscheinlichkeiten) und die Log-Likelihood (aus der Summe der logarithmierten - Wahrscheinlichkeiten) f\"ur (1) den Mittelwert und (2) die - Standardabweichung. Vergleiche die Position der Maxima mit den - aus den Daten berechneten Mittelwerten und Standardabweichungen. - - Erh\"ohe $n$ auf 1000. Was passiert mit der Likelihood, was mit der Log-Likelihood? + Wahrscheinlichkeiten) f\"ur den Mittelwert als Parameter. Vergleiche + die Position der Maxima mit den aus den Daten berechneten + Mittelwerte. \end{exercise} @@ -698,24 +696,6 @@ Daten berechnet werden. Da bleibt dann nur auf numerische Verfahren zur Optimierung der Kostenfunktion, wie z.B. der Gradientenabstieg, zur\"uckzugreifen. -\begin{exercise}[mleslope.m] - Schreibe eine Funktion, die in einem $x$ und einem $y$ Vektor die - Datenpaare \"uberreicht bekommt und die Steigung der - Ursprungsgeraden \eqnref{mleslope}, die die Likelihood maximiert, - zur\"uckgibt ($\sigma=1$). -\end{exercise} - -\begin{exercise}[mlepropfit.m] - Schreibe ein Skript, das Datenpaare erzeugt, die um eine - Ursprungsgerade mit vorgegebener Steigung streuen. Berechne mit der - Funktion die Steigung aus den Daten, vergleiche mit der wahren - Steigung, und plotte die urspr\"ungliche sowie die gefittete Gerade - zusammen mit den Daten. - - Ver\"andere die Anzahl der Datenpunkte, die Steigung, sowie die - Streuung der Daten um die Gerade. -\end{exercise} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Fits von Wahrscheinlichkeitsverteilungen} @@ -754,33 +734,6 @@ z.B. dem Gradientenabstieg, gel\"ost wird. des quadratischen Abstands zum Histogramm berechneten Fits ist potentiell schlechter.} \end{figure} - -\begin{exercise}[mlepdffit.m] - Zur Abwechslung ziehen wir uns diesmal Zufallszahlen, die nicht - einer Normalverteilung entstammen, sonder aus der Gamma-Verteilung. - - Finde heraus welche Funktion die Wahrscheinlichkeitsdichtefunktion - (probability density function) der Gamma-Verteilung in \code{matlab} - berechnet. - - Plotte mit Hilfe dieser Funktion die Wahrscheinlichkeitsdichtefunktion - der Gamma-Verteilung f\"ur verschiedene Werte des (positiven) ``shape'' Parameters. - Den ``scale'' Parameter setzen wir auf Eins. - - Finde heraus mit welcher Funktion Gamma-verteilte Zufallszahlen in - \code{matlab} gezogen werden k\"onnen. Erzeuge mit dieser Funktion - 50 Zufallszahlen mit einem der oben geplotteten ``shape'' Parameter. - - Berechne und plotte ein normiertes Histogramm dieser Zufallszahlen. - - Finde heraus mit welcher \code{matlab}-Funktion die Gammaverteilung - an die Zufallszahlen nach der Maximum-Likelihood Methode gefittet - werden kann. Bestimme mit dieser Funktion die Parameter der - Gammaverteilung aus den Zufallszahlen. Plotte anschlie{\ss}end - die Gammaverteilung mit den gefitteten Parametern. -\end{exercise} - - \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%