Added exercises for mle
This commit is contained in:
parent
effc38f96f
commit
dd50324683
29
statistics/code/mlemean.m
Normal file
29
statistics/code/mlemean.m
Normal file
@ -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')
|
@ -27,3 +27,5 @@ legend('data', 'original', 'fit', 'Location', 'NorthWest');
|
|||||||
legend('boxoff')
|
legend('boxoff')
|
||||||
xlabel('x');
|
xlabel('x');
|
||||||
ylabel('y');
|
ylabel('y');
|
||||||
|
|
||||||
|
savefigpdf(gcf, 'mlepropfit.pdf', 12, 7);
|
@ -1,33 +1,11 @@
|
|||||||
% draw random numbers:
|
% draw random numbers:
|
||||||
n = 500;
|
n = 50;
|
||||||
mu = 3.0;
|
mu = 3.0;
|
||||||
sigma =2.0;
|
sigma =2.0;
|
||||||
x = randn(n,1)*sigma+mu;
|
x = randn(n,1)*sigma+mu;
|
||||||
fprintf(' mean of the data is %.2f\n', mean(x))
|
fprintf(' mean of the data is %.2f\n', mean(x))
|
||||||
fprintf('standard deviation of the data is %.2f\n', std(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:
|
% standard deviation as parameter:
|
||||||
psigs = 1.0:0.01:3.0;
|
psigs = 1.0:0.01:3.0;
|
||||||
% matrix with the probabilities for each x and psigs:
|
% 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
|
loglm = sum(log(lms), 1); % log likelihood
|
||||||
|
|
||||||
% plot likelihood of standard deviation:
|
% plot likelihood of standard deviation:
|
||||||
subplot(2, 2, 3);
|
subplot(1, 2, 1);
|
||||||
plot(psigs, lm );
|
plot(psigs, lm );
|
||||||
xlabel('standard deviation')
|
xlabel('standard deviation')
|
||||||
ylabel('likelihood')
|
ylabel('likelihood')
|
||||||
subplot(2, 2, 4);
|
subplot(1, 2, 2);
|
||||||
plot(psigs, loglm);
|
plot(psigs, loglm);
|
||||||
xlabel('standard deviation')
|
xlabel('standard deviation')
|
||||||
ylabel('log likelihood')
|
ylabel('log likelihood')
|
||||||
|
savefigpdf(gcf, 'mlestd.pdf', 12, 5);
|
191
statistics/exercises/statistics04.tex
Normal file
191
statistics/exercises/statistics04.tex
Normal file
@ -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}
|
@ -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
|
das arithmetische Mittel maximiert die Wahrscheinlichkeit, dass die Daten aus einer
|
||||||
Normalverteilung mit diesem Mittelwert gezogen worden sind.
|
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$
|
Ziehe $n=50$ normalverteilte Zufallsvariablen mit einem Mittelwert $\ne 0$
|
||||||
und einer Standardabweichung $\ne 1$.
|
und einer Standardabweichung $\ne 1$.
|
||||||
|
|
||||||
Plotte die Likelihood (aus dem Produkt der Wahrscheinlichkeiten) und
|
Plotte die Likelihood (aus dem Produkt der Wahrscheinlichkeiten) und
|
||||||
die Log-Likelihood (aus der Summe der logarithmierten
|
die Log-Likelihood (aus der Summe der logarithmierten
|
||||||
Wahrscheinlichkeiten) f\"ur (1) den Mittelwert und (2) die
|
Wahrscheinlichkeiten) f\"ur den Mittelwert als Parameter. Vergleiche
|
||||||
Standardabweichung. Vergleiche die Position der Maxima mit den
|
die Position der Maxima mit den aus den Daten berechneten
|
||||||
aus den Daten berechneten Mittelwerten und Standardabweichungen.
|
Mittelwerte.
|
||||||
|
|
||||||
Erh\"ohe $n$ auf 1000. Was passiert mit der Likelihood, was mit der Log-Likelihood?
|
|
||||||
\end{exercise}
|
\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 Optimierung der Kostenfunktion, wie z.B. der Gradientenabstieg,
|
||||||
zur\"uckzugreifen.
|
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}
|
\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.}
|
des quadratischen Abstands zum Histogramm berechneten Fits ist potentiell schlechter.}
|
||||||
\end{figure}
|
\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}
|
\end{document}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
Reference in New Issue
Block a user