modified statistic exercises

This commit is contained in:
Jan Benda 2016-11-22 14:40:16 +01:00
parent 86ba1bc0fe
commit 8af349e9cb
12 changed files with 238 additions and 148 deletions

View File

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

Binary file not shown.

View File

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

View File

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

View File

@ -1,4 +1,4 @@
\documentclass[12pt,a4paper,pdftex]{exam} \documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel} \usepackage[german]{babel}
\usepackage{pslatex} \usepackage{pslatex}
@ -84,32 +84,73 @@ jan.benda@uni-tuebingen.de}
\input{instructions} \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} \begin{questions}
\question \qt{Wahrscheinlichkeiten eines W\"urfels I} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\question \textbf{Lies im Skript das Kapitel 3 ``Programmierstil''!}
Der Computer kann auch als W\"urfel verwendet werden! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\question \qt{Wahrscheinlichkeiten eines W\"urfels I}
Der Computer kann mit W\"urfeln w\"urfeln die mehr als 6 Seiten haben!
\begin{parts} \begin{parts}
\part Simuliere 10000 W\"urfe mit dem W\"urfel durch Erzeugung von \part Simuliere 10000 W\"urfe mit einem W\"urfel mit acht Seiten
ganzzahligen Zufallszahlen mit den Augenzahlen $x_i = 1, 2, \ldots 6$ . 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.
\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? Ist das ein fairer W\"urfel?
\part Speicher die berechneten Wahrscheinlichkeiten $P(x_i)$ f\"ur das Auftreten der \part Speicher die berechneten Wahrscheinlichkeiten $P(x_i)$ f\"ur
gew\"urfelten Zahlen in einem Vektor und benutze die \code{bar} Funktion, das Auftreten der gew\"urfelten Zahlen in einem Vektor und benutze
um diese Wahrscheinlichkeiten als Funktion der Augenzahl zu plotten. die \code{bar()} Funktion, um diese Wahrscheinlichkeiten als
Funktion der Augenzahl zu plotten.
\part Erstelle in einem weiterem Plot ein entsprechendes normiertes Histogramm \part Erstelle in einem weiterem Plot ein entsprechendes normiertes Histogramm
mit der \code{hist} Funktion. 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?
\part \extra Wie k\"onnte man einen gezinkten W\"urfel simulieren, bei dem die sechs Fertige von diesem W\"urfel ein normiertes Histogram aus 10000
dreimal so h\"aufig wie die anderen Zahlen gew\"urfelt wird?\\ W\"urfen an.
Fertige von diesem W\"urfel ein Histogram aus 10000 W\"urfen an.
\end{parts} \end{parts}
\begin{solution} \begin{solution}
\lstinputlisting{rollthedie.m} \lstinputlisting{rollthedie.m}
@ -120,6 +161,7 @@ Der Computer kann auch als W\"urfel verwendet werden!
\continue \continue
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\question \qt{Wahrscheinlichkeiten eines W\"urfels II} \question \qt{Wahrscheinlichkeiten eines W\"urfels II}
Wir werten nun das Verhalten mehrerer W\"urfel aus. Wir werten nun das Verhalten mehrerer W\"urfel aus.
\begin{parts} \begin{parts}
@ -128,8 +170,8 @@ Wir werten nun das Verhalten mehrerer W\"urfel aus.
\part Berechne aus diesem Datensatz f\"ur jeden W\"urfel ein normiertes Histogramm. \part Berechne aus diesem Datensatz f\"ur jeden W\"urfel ein normiertes Histogramm.
\part Bestimme den Mittelwert und die Standardabweichung f\"ur jede \part Bestimme den Mittelwert und die Standardabweichung f\"ur jede
Augenzahl gemittelt \"uber die W\"urfel. Augenzahl gemittelt \"uber die W\"urfel.
\part Stelle das Ergebnis mit einem S\"aulenplot mit Fehlerbalken dar \part Stelle das Ergebnis in einem S\"aulenplot mit Fehlerbalken dar
(\code{bar} mit \code{errorbar} Funktionen). (\code{bar()} mit \code{errorbar()} Funktionen).
\end{parts} \end{parts}
\begin{solution} \begin{solution}
\lstinputlisting{die2.m} \lstinputlisting{die2.m}
@ -137,45 +179,43 @@ Wir werten nun das Verhalten mehrerer W\"urfel aus.
\end{solution} \end{solution}
\question \qt{Wahrscheinlichkeiten der Normalverteilung} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Mit den folgenden Aufgaben wollen wir bestimmen, welcher Anteil eines \question \qt{Histogramm der Normalverteilung}
normalverteilten Datensatzes in bestimmten Grenzen symmetrisch um den \vspace{-3ex}
Mittelwert enthalten ist.
\begin{parts} \begin{parts}
\part Erzeuge einen Datensatz $X = (x_1, x_2, ... x_n)$ aus \part Erzeuge einen Datensatz $X = (x_1, x_2, ... x_n)$ aus
$n=10000$ normalverteilten Zufallszahlen mit Mittelwert $\mu=0$ und $n=10000$ normalverteilten Zufallszahlen mit Mittelwert $\mu=0$ und
Standardabweichung $\sigma=1$. Standardabweichung $\sigma=1$ (\code{randn()} Funktion).
\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$?\\ \part Berechne aus diesem Datensatz die Wahrscheinlichkeit $P(0\le
Wie gro{\ss} ist also die Wahrscheinlichkeit $P_{\pm\sigma}$ einen x<0.5)$.
Wert in diesem Interval zu erhalten?
\part \label{probintegral} Berechne numerisch diese \part Was passiert mit der Wahrscheinlichkeit eine Zahl in einem
Wahrscheinlichkeit aus dem entsprechenden Integral bestimmten Interval zu ziehen (z.B. $P(0\le x<a)$), wenn dieses
\[ P_{\pm\sigma}=\int_{x=\mu-\sigma}^{x=\mu+\sigma} p_g(x) \, dx \] Intervall immer kleiner wird ($a \to 0$)?
\"uber die Normalverteilung
\[ p_g(x) = Schreibe ein Programm, das dies illustriert indem es $P(0\le x<a)$
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \; . \] als Funktion von $a$ plottet ($0 \ge a \ge 4$).
\"Uberpr\"ufe zuerst, ob tats\"achlich
\[ \int_{-\infty}^{+\infty} p_g(x) \, dx = 1 \; . \] \part \label{manualpdf} Bestimme und plotte die
Warum muss das so sein? Wahrscheinlichkeitsdichte dieser Zufallszahlen (das normierte
\part Welcher Anteil der Daten ist in den Intervallen $\pm2\sigma$ sowie $\pm3\sigma$ Histogramm). Lege dazu zun\"achst die Positionen der bins (Breite
enthalten? von 0.5) in einem Vektor fest. Bestimme dann mit einer \code{for}
\part \label{givenfraction} Finde heraus in welchem Interval symmetrisch um den Mittelwert Schleife f\"ur jedes dieser bins die Anzahl der Datenelemente, die
50\,\%, 90\,\%, 95\,\% bzw. 99\,\% der Daten enhalten sind. in diese bin fallen. Normiere anschliessend das so erhaltene
\part Was passiert mit der Wahrscheinlichkeit eine Zahl in einem bestimmten Interval Histogram und plotte es mit der \code{bar()} Funktion.
zu ziehen, wenn dieses Intervall immer kleiner wird?\\
Schreibe ein Programm, das dies illustriert.\\ \part \label{gaussianpdf} Plotte zum Vergleich in den gleichen Plot
Wie gro{\ss} ist die Wahrscheinlichkeit $P(x_i=0.1234)$? die Normalverteilung
\part \extra Modifiziere den Code der Teilaufgaben \pref{onesigma} \[ p_g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \; . \]
-- \pref{givenfraction} so, dass er f\"ur Datens\"atze mit
beliebigen Mittelwerten und Standardabweichungen funktioniert.\\ \part Plotte die Wahrscheinlichkeitsdichte der Daten wie in
Teste den Code mit entsprechenden Zufallszahlen.\\ (\ref{manualpdf}) und (\ref{gaussianpdf}), aber mit Hilfe der
Wie bekommt man mit \code{randn} Zufallszahlen mit beliebiger \code{hist()} Funktion.
Standardabweichung und Mittelwerten?
\end{parts} \end{parts}
\begin{solution} \begin{solution}
\lstinputlisting{normprobs.m} \lstinputlisting{normhist.m}
\includegraphics[width=1\textwidth]{normprobs} \includegraphics[width=1\textwidth]{normhist}
\end{solution} \end{solution}

View File

@ -87,6 +87,46 @@ jan.benda@uni-tuebingen.de}
\begin{questions} \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).
\part 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 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.
\"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 \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} \question \qt{Zentraler Grenzwertsatz}
Der Zentrale Grenzwertsatz besagt, dass die Summe von unabh\"angigen Der Zentrale Grenzwertsatz besagt, dass die Summe von unabh\"angigen
und identisch verteilten (i.i.d. = independent and identically und identisch verteilten (i.i.d. = independent and identically
@ -129,6 +169,7 @@ Den Zentralen Grenzwertsatz wollen wir uns im Folgenden veranschaulichen.
\end{solution} \end{solution}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\question \qt{Random Walk} \question \qt{Random Walk}
Im folgenden wollen wir einige Eigenschaften des Random Walks bestimmen. Im folgenden wollen wir einige Eigenschaften des Random Walks bestimmen.
\begin{parts} \begin{parts}
@ -158,6 +199,7 @@ Im folgenden wollen wir einige Eigenschaften des Random Walks bestimmen.
\end{solution} \end{solution}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\question \qt{\extra 2D Random Walk} \question \qt{\extra 2D Random Walk}
Bisher hat sich unser Random Walker nur in einer Dimension bewegt 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!\\ (nur vorw\"arts oder r\"uckw\"arts). Er kann aber auch in mehreren Dimensionen laufen!\\

View File

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

View File

@ -0,0 +1,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);

Binary file not shown.

View File

@ -24,23 +24,3 @@ P = sum(pg((xx>=-2.0)&(xx<=2.0)))*dx;
fprintf( 'Integral over the Gaussian pdf from -2 to 2 is %.4f\n', P ); fprintf( 'Integral over the Gaussian pdf from -2 to 2 is %.4f\n', P );
P = sum(pg((xx>=-3.0)&(xx<=3.0)))*dx; 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 ); fprintf( 'Integral over the Gaussian pdf from -3 to 3 is %.4f\n\n', P );
%% (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;
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.

View File

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