Merge branch 'master' of raven.am28.uni-tuebingen.de:scientificComputing

This commit is contained in:
Jan Grewe 2015-10-21 13:56:41 +02:00
commit 0ffe0551fc
32 changed files with 10974 additions and 266 deletions

View File

@ -1,43 +0,0 @@
MAO,Diagnosis
6.8,I
4.1,I
7.3,I
14.2,I
18.8,I
9.9,I
7.4,I
11.9,I
5.2,I
7.8,I
7.8,I
8.7,I
12.7,I
14.5,I
10.7,I
8.4,I
9.7,I
10.6,I
7.8,II
4.4,II
11.4,II
3.1,II
4.3,II
10.1,II
1.5,II
7.4,II
5.2,II
10,II
3.7,II
5.5,II
8.5,II
7.7,II
6.8,II
3.1,II
6.4,III
10.8,III
1.1,III
2.9,III
4.5,III
5.8,III
9.4,III
6.8,III
1 MAO Diagnosis
2 6.8 I
3 4.1 I
4 7.3 I
5 14.2 I
6 18.8 I
7 9.9 I
8 7.4 I
9 11.9 I
10 5.2 I
11 7.8 I
12 7.8 I
13 8.7 I
14 12.7 I
15 14.5 I
16 10.7 I
17 8.4 I
18 9.7 I
19 10.6 I
20 7.8 II
21 4.4 II
22 11.4 II
23 3.1 II
24 4.3 II
25 10.1 II
26 1.5 II
27 7.4 II
28 5.2 II
29 10 II
30 3.7 II
31 5.5 II
32 8.5 II
33 7.7 II
34 6.8 II
35 3.1 II
36 6.4 III
37 10.8 III
38 1.1 III
39 2.9 III
40 4.5 III
41 5.8 III
42 9.4 III
43 6.8 III

View File

@ -1,186 +0,0 @@
Weight,Sex
1607,m
1157,m
1248,m
1310,m
1398,m
1237,m
1232,m
1343,m
1380,m
1274,m
1245,m
1286,m
1508,m
1105,m
1123,m
1198,m
1300,m
1249,m
1185,m
915,m
1345,m
1107,m
1357,m
1227,m
1205,m
1435,m
1289,m
1093,m
1211,m
1260,m
1193,m
1330,m
1130,m
1357,m
1193,m
1232,m
1321,m
1260,m
1380,m
1230,m
1136,m
1029,m
1223,m
1240,m
1264,m
1020,m
1415,m
1410,m
1275,m
1230,m
1085,m
1048,m
1181,m
1103,m
1165,m
1547,m
1173,m
1660,m
1307,m
1535,m
1315,m
1257,m
1424,m
1309,m
1170,m
1412,m
1270,m
1230,m
1233,m
1561,m
1193,m
1272,m
1355,m
1137,m
1354,m
1110,m
1265,m
1407,m
1227,m
1330,m
1222,m
1305,m
1475,m
1177,m
1337,m
1145,m
1070,m
1305,m
1085,m
1303,m
1390,m
1532,m
1238,m
1233,m
1280,m
1245,m
1459,m
1157,m
1302,m
1385,m
1310,m
1342,m
1303,m
1248,m
1115,m
1365,m
1227,m
1353,m
1125,f
1027,f
1112,f
983,f
1090,f
1247,f
1045,f
983,f
972,f
1045,f
937,f
1245,f
1200,f
1270,f
1200,f
1145,f
1090,f
1040,f
1343,f
1010,f
1095,f
1180,f
1168,f
1095,f
1040,f
1235,f
1050,f
1038,f
1046,f
1255,f
1228,f
1000,f
1225,f
1220,f
1085,f
1067,f
1006,f
1138,f
1175,f
1252,f
1037,f
958,f
1020,f
1068,f
1107,f
1317,f
952,f
1056,f
1203,f
1183,f
1392,f
1130,f
1284,f
996,f
1228,f
1087,f
1035,f
1170,f
1064,f
1250,f
1129,f
1088,f
1037,f
1117,f
1095,f
1027,f
1027,f
1190,f
1153,f
1037,f
1120,f
1212,f
1024,f
1135,f
1177,f
1096,f
1114,f
1 Weight Sex
2 1607 m
3 1157 m
4 1248 m
5 1310 m
6 1398 m
7 1237 m
8 1232 m
9 1343 m
10 1380 m
11 1274 m
12 1245 m
13 1286 m
14 1508 m
15 1105 m
16 1123 m
17 1198 m
18 1300 m
19 1249 m
20 1185 m
21 915 m
22 1345 m
23 1107 m
24 1357 m
25 1227 m
26 1205 m
27 1435 m
28 1289 m
29 1093 m
30 1211 m
31 1260 m
32 1193 m
33 1330 m
34 1130 m
35 1357 m
36 1193 m
37 1232 m
38 1321 m
39 1260 m
40 1380 m
41 1230 m
42 1136 m
43 1029 m
44 1223 m
45 1240 m
46 1264 m
47 1020 m
48 1415 m
49 1410 m
50 1275 m
51 1230 m
52 1085 m
53 1048 m
54 1181 m
55 1103 m
56 1165 m
57 1547 m
58 1173 m
59 1660 m
60 1307 m
61 1535 m
62 1315 m
63 1257 m
64 1424 m
65 1309 m
66 1170 m
67 1412 m
68 1270 m
69 1230 m
70 1233 m
71 1561 m
72 1193 m
73 1272 m
74 1355 m
75 1137 m
76 1354 m
77 1110 m
78 1265 m
79 1407 m
80 1227 m
81 1330 m
82 1222 m
83 1305 m
84 1475 m
85 1177 m
86 1337 m
87 1145 m
88 1070 m
89 1305 m
90 1085 m
91 1303 m
92 1390 m
93 1532 m
94 1238 m
95 1233 m
96 1280 m
97 1245 m
98 1459 m
99 1157 m
100 1302 m
101 1385 m
102 1310 m
103 1342 m
104 1303 m
105 1248 m
106 1115 m
107 1365 m
108 1227 m
109 1353 m
110 1125 f
111 1027 f
112 1112 f
113 983 f
114 1090 f
115 1247 f
116 1045 f
117 983 f
118 972 f
119 1045 f
120 937 f
121 1245 f
122 1200 f
123 1270 f
124 1200 f
125 1145 f
126 1090 f
127 1040 f
128 1343 f
129 1010 f
130 1095 f
131 1180 f
132 1168 f
133 1095 f
134 1040 f
135 1235 f
136 1050 f
137 1038 f
138 1046 f
139 1255 f
140 1228 f
141 1000 f
142 1225 f
143 1220 f
144 1085 f
145 1067 f
146 1006 f
147 1138 f
148 1175 f
149 1252 f
150 1037 f
151 958 f
152 1020 f
153 1068 f
154 1107 f
155 1317 f
156 952 f
157 1056 f
158 1203 f
159 1183 f
160 1392 f
161 1130 f
162 1284 f
163 996 f
164 1228 f
165 1087 f
166 1035 f
167 1170 f
168 1064 f
169 1250 f
170 1129 f
171 1088 f
172 1037 f
173 1117 f
174 1095 f
175 1027 f
176 1027 f
177 1190 f
178 1153 f
179 1037 f
180 1120 f
181 1212 f
182 1024 f
183 1135 f
184 1177 f
185 1096 f
186 1114 f

View File

@ -0,0 +1,23 @@
nsamples = 1000
resample = 500
x = randn( nsamples, 1 );
sem = std(x)/sqrt(nsamples);
mu = zeros( resample, 1 );
for i = 1:resample
% resample:
xr = x(randi(nsamples, nsamples, 1));
% compute statistics on sample:
mu(i) = mean(xr);
end
bootsem = std( mu );
hold on
hist( x, 20 );
hist( mu, 20 );
hold off
disp(['bootstrap standard error: ', num2str(bootsem)]);
disp(['standard error: ', num2str(sem)]);

View File

@ -0,0 +1,24 @@
resample = 500
load( 'thymusglandweights.dat' );
x = thymusglandweights;
nsamples = length( x );
sem = std(x)/sqrt(nsamples);
mu = zeros( resample, 1 );
for i = 1:resample
% resample:
xr = x(randi(nsamples, nsamples, 1));
% compute statistics on sample:
mu(i) = mean(xr);
end
bootsem = std( mu );
hold on
hist( x, 20 );
hist( mu, 20 );
hold off
disp(['bootstrap standard error: ', num2str(bootsem)]);
disp(['standard error: ', num2str(sem)]);

View File

@ -0,0 +1,3 @@
x = randn(40, 10);
boxplot(x, 'whisker', 100.0 );

View File

@ -0,0 +1,14 @@
n = 1000
x = randn( n, 1 );
y = randn( n, 1 ) + 0.2*x;
r = corr(x,y)
nsamples = 500;
rs = zeros( nsamples, 1 );
for i = 1:nsamples
xs = x(randi(n,n,1));
ys = x(randi(n,n,1));
rs(i) = corr(xs,ys);
end
hist( rs, 20 )

View File

@ -3,16 +3,16 @@ nrolls = [ 20, 100, 1000 ];
for i = [1:length(nrolls)]
d = rollthedie( nrolls(i) );
% plain hist:
% hist( d )
%hist( d )
% check bin counts of plain hist:
% h = hist( d )
% force 6 bins:
% hist( d, 6 )
%hist( d, 6 )
% set the right bin centers:
bins = 1:6;
%bins = 1:6;
%hist( d, bins )
% normalize histogram and compare to expectation:

View File

@ -1,6 +1,6 @@
x = randn( 100, 1 );
bins1 = -4:2:4;
bins2 = -4:0.5:4;
x = randn( 100, 1 ); % generate some data
bins1 = -4:2:4; % large bins
bins2 = -4:0.5:4; % small bins
subplot( 1, 2, 1 );
hold on;
hist( x, bins1 );
@ -10,6 +10,7 @@ ylabel('Frequeny')
hold off;
subplot( 1, 2, 2 );
hold on;
% normalize to the rigtht bin size:
hist( x, bins1, 1.0/(bins1(2)-bins1(1)) );
hist( x, bins2, 1.0/(bins2(2)-bins2(1)) );
xlabel('x')

View File

@ -1,22 +1,30 @@
% plot Gaussian pdf:
dx=0.1
dx=0.1;
x = [-4.0:dx:4.0];
p = exp(-0.5*x.^2)/sqrt(2.0*pi);
hold on
plot(x,p, 'linewidth', 10 )
plot(x, p, 'linewidth', 10)
% show area of integral:
area(x((x>=x1)&(x<=x2)), p((x>=x1)&(x<=x2)), 'FaceColor', 'r' )
hold off
% compute integral between x1 and x2:
x1=1.0
x2=2.0
P = sum(p((x>=x1)&(x<x2)))*dx
x1=1.0;
x2=2.0;
P = sum(p((x>=x1)&(x<x2)))*dx;
disp( [ 'The integral between ', num2str(x1, 1), ' and ', num2str(x2, 1), ' is ', num2str(P, 3) ] );
% draw random numbers:
r = randn( 10000, 1 );
hist(r,x,1.0/dx)
%r = randn( 10000, 1 );
%hist(r,x,1.0/dx)
% check P:
Pr = sum((r>=x1)&(r<x2))/length(r)
Pr = sum((r>=x1)&(r<x2))/length(r);
disp( [ 'The probability of getting a number between ', num2str(x1, 1), ' and ', num2str(x2, 1), ' is ', num2str(Pr, 3) ] );
hold off
% infinite integral:
P = sum(p)*dx;
disp( [ 'The integral between -infinity and +infinity is ', num2str(P, 3) ] );
disp( [ 'I.e. the probability to get any number is ', num2str(P, 3) ] );

View File

@ -1,13 +1,13 @@
function m = mymedian( x )
% returns the median of the vector x
xs = sort( x );
if ( length( xs ) == 0 )
if ( length( xs ) == 0 ) % empty input vector
m = NaN;
elseif ( rem( length( xs ), 2 ) == 0 )
elseif ( rem( length( xs ), 2 ) == 0 ) % even number of data values
index = length( xs )/2;
m = (xs( index ) + xs( index+1 ))/2;
else
index = (length( xs ) + 1)/2;
m = (xs( index ) + xs( index+1 ))/2; % average the two central elements
else % odd number of data values
index = (length( xs ) + 1)/2; % take the middle element
m = xs( index );
end
end

View File

@ -1,13 +1,14 @@
function q = quartiles( x )
% returns a vector with the first, second, and third quartile of the vector x
% returns a vector with the first, second, and third quartile
% of the vector x
xs = sort( x );
if ( length( xs ) == 0 )
if ( length( xs ) == 0 ) % no data
q = [];
elseif ( rem( length( xs ), 2 ) == 0 )
elseif ( rem( length( xs ), 2 ) == 0 ) % even number of data
index = length( xs )/2;
m = (xs( index ) + xs( index+1 ))/2;
q = [ round( xs(length(xs)/4) ), m, xs(round(3*length(xs)/4)) ];
else
else % odd number of data
index = (length( xs ) + 1)/2;
m = xs( index );
q = [ round( xs(length(xs)/4) ), m, xs(round(3*length(xs)/4)) ];

View File

@ -0,0 +1,32 @@
n = 100000
x=randn(n, 1);
nsamples = 3;
nmeans = 10000;
means = zeros( nmeans, 1 );
sdevs = zeros( nmeans, 1 );
students = zeros( nmeans, 1 );
for i=1:nmeans
sample = x(randi(n, nsamples, 1));
means(i) = mean(sample);
sdevs(i) = std(sample);
students(i) = mean(sample)/std(sample)*sqrt(nsamples);
end
sdev = 1.0
msdev = std(means)
% scatter( means, sdevs )
hold on;
dxg=0.01;
xmax = 10.0
xmin = -xmax
xg = [xmin:dxg:xmax];
pg = exp(-0.5*(xg/sdev).^2)/sqrt(2.0*pi)/sdev;
hold on
plot(xg, pg, 'r', 'linewidth', 4)
bins = xmin:0.1:xmax;
hist(means, bins, 1.0/(bins(2)-bins(1)) );
hold off;

Binary file not shown.

View File

@ -0,0 +1,132 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Bootstrap}}{{\bfseries\large 21. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.benda@uni-tuebingen.de}
\runningfooter{}{\thepage}{}
\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass sie
auch wirklich das macht, was sie machen soll! Teste dies mit kleinen
Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der folgenden Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
\item Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen zuerst mit einer kleinen
Anzahl von Wiederholungen, und benutze erst am Ende, wenn alles
stimmt, eine gro{\ss}e Anzahl von Wiederholungen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von matlab und das Internet, um
herauszufinden wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
\item Auch zu inhaltlichen Konzepten bietet das Internet oft viele Antworten!
\end{itemize}
\begin{questions}
\question \qt{Bootstrap des Standardfehlers}
\begin{parts}
\part Lade von Ilias die Datei \code{thymusglandweights.dat} herunter.
Darin befindet sich ein Datensatz vom Gewicht der Thymus Dr\"use in 14-Tage alten
H\"uhnerembryos in mg.
\part Lade diese Daten in Matlab (\code{load} Funktion).
\part Bestimme Histogramm, Mittelwert und Standardfehler aus den ersten 80 Datenpunkten.
\part Bestimme den Standardfehler aus den ersten 80 Datenpunkten durch 500 Mal Bootstrappen.
\part Bestimme das 95\,\% Konfidenzintervall f\"ur den Mittelwert
aus der Bootstrap Verteilung (\code{quantile()} Funktion) --- also
das Interval innerhalb dessen mit 95\,\% Wahrscheinlichkeit der
wahre Mittelwert liegen wird.
\part Benutze den ganzen Datensatz und die Bootstrapping Technik, um die Abh\"angigkeit
des Standardfehlers von der Stichprobengr\"o{\ss}e zu bestimmen.
\part Vergleiche mit der bekannten Formel f\"ur den Standardfehler $\sigma/\sqrt{n}$.
\end{parts}
\continue
\question \qt{Student t-Verteilung}
\begin{parts}
\part Erzeuge 100000 normalverteilte Zufallszahlen.
\part Ziehe daraus 1000 Stichproben vom Umfang $m$ (3, 5, 10, 50).
\part Berechne den Mittelwert $\bar x$ der Stichproben und plotte die Wahrscheinlichkeitsdichte
dieser Mittelwerte.
\part Vergleiche diese Wahrscheinlichkeitsdichte mit der Gausskurve.
\part Berechne ausserdem die Gr\"o{\ss}e $t=\bar x/(\sigma_x/\sqrt{m}$
(Standardabweichung $\sigma_x$) und vergleiche diese mit der Normalverteilung mit Standardabweichung Eins. Ist $t$ normalverteilt, bzw. unter welchen Bedingungen ist $t$ Normalverteilt?
\end{parts}
\question \qt{Korrelationen}
\begin{parts}
\part Erzeuge 1000 korrelierte Zufallszahlen $x$, $y$ durch
\begin{verbatim}
n = 1000
a = 0.2;
x = randn(n, 1);
y = randn(n, 1) + a*x;
\end{verbatim}
\part Erstelle einen Scatterplot der beiden Variablen.
\part Warum ist $y$ mit $x$ korreliert?
\part Berechne den Korrelationskoeffizienten zwischen $x$ und $y$.
\part Was m\"usste man tun, um die Korrelationen zwischen den $x$-$y$
Paaren zu zerst\"oren?
\part Mach genau dies 1000 mal und berechne jedes Mal den Korrelationskoeffizienten.
\part Bestimme die Wahrscheinlichkeitsdichte dieser Korrelationskoeffizienten.
\part Ist die Korrelation der urspr\"unglichen Daten signifikant?
\part Variiere den Parameter $a$ und \"uberpr\"ufe auf gleiche Weise die Signifikanz.
\end{parts}
\end{questions}
\end{document}

View File

@ -0,0 +1,162 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Deskriptive Statistik}}{{\bfseries\large 19. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.grewe@uni-tuebingen.de}
\runningfooter{}{\thepage}{}
\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
% Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
% Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
% werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
% im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
% ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
% voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
% ``variablen\_datentypen\_\{nachname\}.m'' benannt werden
% (z.B. variablen\_datentypen\_mueller.m).
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass sie
auch wirklich das macht, was sie machen soll! Teste dies mit kleinen
Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der folgenden Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
\item Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen zuerst mit einer kleinen
Anzahl von Wiederholungen, und benutze erst am Ende, wenn alles
stimmt, eine gro{\ss}e Anzahl von Wiederholungen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von matlab und das Internet, um
herauszufinden wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
\item Auch zu inhaltlichen Konzepten bietet das Internet oft viele Antworten!
\end{itemize}
\begin{questions}
\question \qt{Wahrscheinlichkeiten eines W\"urfels I}
Der Computer kann auch als W\"urfel verwendet werden!
\begin{parts}
\part Simuliere 10000 W\"urfe mit dem W\"urfel durch Erzeugung von
ganzzahligen Zufallszahlen mit den Augenzahlen $x_i = 1, 2, \ldots 6$ .
\part Berechne die Wahrscheinlichkeit $P(3)$
des Auftretens der Augenzahl drei durch Bestimmung der Anzahl der Dreien im Datensatz.\\
Entspricht das Ergebnis deiner Erwartung?\\
\"Uberpr\"ufe auch die Wahrscheinlichkeit $P(x_i)$ der anderen Zahlen.\\
Ist das ein fairer W\"urfel?
\part Speicher die berechneten Wahrscheinlichkeiten $P(x_i)$ f\"ur das Auftreten der
gew\"urfelten Zahlen in einem Vektor und benutze die \code{bar} Funktion,
um diese Wahrscheinlichkeiten als Funktion der Augenzahl zu plotten.
\part Erstelle in einem weiterem Plot ein entsprechendes normiertes Histogramm
mit der \code{hist} Funktion.
\part \extra Wie k\"onnte man einen gezinkten W\"urfel simulieren, bei dem die sechs
dreimal so h\"aufig wie die anderen Zahlen gew\"urfelt wird?\\
Fertige von diesem W\"urfel ein Histogram aus 10000 W\"urfen an.
\end{parts}
\continue
\question \qt{Wahrscheinlichkeiten eines W\"urfels II}
Wir werten nun das Verhalten mehrerer W\"urfel aus.
\begin{parts}
\part Simuliere 20 W\"urfel, von denen jeder 100 mal geworfen wird
(jeder W\"urfel wird mit dem gleichen Zufallsgenerator simuliert).
\part Berechne aus diesem Datensatz f\"ur jeden W\"urfel ein normiertes Histogramm.
\part Bestimme den Mittelwert und die Standardabweichung f\"ur jede
Augenzahl gemittelt \"uber die W\"urfel.
\part Stelle das Ergebnis mit einem S\"aulenplot mit Fehlerbalken dar
(\code{bar} mit \code{errorbar} Funktionen).
\end{parts}
\question \qt{Wahrscheinlichkeiten der Normalverteilung}
Mit den folgenden Aufgaben wollen wir bestimmen, welcher Anteil eines
normalverteilten Datensatzes in bestimmten Grenzen symmetrisch um den
Mittelwert enthalten ist.
\begin{parts}
\part Erzeuge einen Datensatz $X = (x_1, x_2, ... x_n)$ aus
$n=10000$ normalverteilten Zufallszahlen mit Mittelwert $\mu=0$ und
Standardabweichung $\sigma=1$.
\part \label{onesigma} Wieviele dieser Daten sind maximal eine Standardabweichung vom Mittelwert entfernt?\\
D.h. wieviele Datenwerte $x_i$ haben den Wert $-\sigma < x_i < +\sigma$?\\
Wie gro{\ss} ist also die Wahrscheinlichkeit $P_{\pm\sigma}$ einen
Wert in diesem Interval zu erhalten?
\part \label{probintegral} Berechne numerisch diese
Wahrscheinlichkeit aus dem entsprechenden Integral
\[ P_{\pm\sigma}=\int_{x=\mu-\sigma}^{x=\mu+\sigma} p_g(x) \, dx \]
\"uber die Normalverteilung
\[ p_g(x) =
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \; . \]
\"Uberpr\"ufe zuerst, ob tats\"achlich
\[ \int_{-\infty}^{+\infty} p_g(x) \, dx = 1 \; . \]
Warum muss das so sein?
\part Welcher Anteil der Daten ist in den Intervallen $\pm2\sigma$ sowie $\pm3\sigma$
enthalten?
\part \label{givenfraction} Finde heraus in welchem Interval symmetrisch um den Mittelwert
50\,\%, 90\,\%, 95\,\% bzw. 99\,\% der Daten enhalten sind.
\part Was passiert mit der Wahrscheinlichkeit eine Zahl in einem bestimmten Interval
zu ziehen, wenn dieses Intervall immer kleiner wird?\\
Schreibe ein Programm, das dies illustriert.\\
Wie gro{\ss} ist die Wahrscheinlichkeit $P(x_i=0.1234)$?
\part \extra Modifiziere den Code der Teilaufgaben \pref{onesigma}
-- \pref{givenfraction} so, dass er f\"ur Datens\"atze mit
beliebigen Mittelwerten und Standardabweichungen funktioniert.\\
Teste den Code mit entsprechenden Zufallszahlen.\\
Wie bekommt man mit \code{randn} Zufallszahlen mit beliebiger
Standardabweichung und Mittelwerten?
\end{parts}
\end{questions}
\end{document}

View File

@ -0,0 +1,164 @@
\documentclass[12pt,a4paper,pdftex]{exam}
\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large \"Ubung 2}}{{\bfseries\large Deskriptive Statistik}}{{\bfseries\large 19. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.grewe@uni-tuebingen.de}
\runningfooter{}{\thepage}{}
\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\vspace*{-6.5ex}
\begin{center}
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
{\large Jan Grewe, Jan Benda}\\[-3ex]
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}
% Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
% Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
% werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
% im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
% ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
% voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
% ``variablen\_datentypen\_\{nachname\}.m'' benannt werden
% (z.B. variablen\_datentypen\_mueller.m).
\begin{itemize}
\item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass sie
auch wirklich das macht, was sie machen soll! Teste dies mit kleinen
Beispielen direkt in der Kommandozeile.
\item Versuche die L\"osungen der folgenden Aufgaben m\"oglichst in
sinnvolle kleine Funktionen herunterzubrechen.
\item Sobald etwas \"ahnliches mehr als einmal berechnet werden soll,
lohnt es sich eine Funktion daraus zu schreiben!
\item Teste rechenintensive \code{for} Schleifen zuerst mit einer kleinen
Anzahl von Wiederholungen, und benutze erst am Ende, wenn alles
stimmt, eine gro{\ss}e Anzahl von Wiederholungen, um eine gute
Statistik zu bekommen.
\item Benutze die Hilfsfunktion von matlab und das Internet, um
herauszufinden wie bestimmte \code{matlab} Funktionen zu verwenden
sind und was f\"ur M\"oglichkeiten sie bieten.
\item Auch zu inhaltlichen Konzepten bietet das Internet oft viele Antworten!
\end{itemize}
\begin{questions}
\question \qt{Zentraler Grenzwertsatz}
Der Zentrale Grenzwertsatz besagt, dass die Summe von unabh\"angigen
und identisch verteilten (i.i.d. = independent and identically
distributed) Zufallsvariablen gegen die Normalverteilung konvergiert.
Den Zentralen Grenzwertsatz wollen wir uns im Folgenden veranschaulichen.
\begin{parts}
\part Versuche dir klar zu machen, was der Zentrale Grenzwertsatz
bedeutet, und wie du vorgehen k\"onntest ein Programm zu
schreiben, das den Grenzwertsatz illustriert.
\part Erzeuge 10000 zwischen 0 und 1 gleichverteilte Zufallszahlen
(Funktion \code{rand}).
\part Plotte deren Wahrscheinlichkeitsdichte (normiertes Histogram).
\part Erzeuge weitere 10000 gleichverteilte Zufallszahlen und
addiere diese zu den bereits vorhandenen auf.
\part Plotte die Wahrscheinlichkeitsdichte der aufsummierten
Zufallszahlen.
\part Wiederhole Schritt (d) und (e) viele Male.
\part Vergleiche in einer Grafik die Wahrscheinlichkeitsdichte der
aufsummierten Zufallszahlen mit der Gaussfunktion
\[ p_g(x) =
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}\]
mit dem Mittelwert $\mu$ und der Standardabweichung $\sigma$ der
aufsummierten Zufallszahlen.
\part Wie \"andert sich der Mittelwert und die
Standardabweichung/Varianz
der aufsummierten Zufallszahlen?\\
Wie h\"angen diese mit den Werten der urspr\"unglichen Verteilung
zusammen?
\part \extra \"Uberpr\"ufe den Grenzwertsatz in gleicher Weise mit exponentiell
verteilten Zufallszahlen (Funktion \code{rande}).
\end{parts}
\question \qt{Random Walk}
Im folgenden wollen wir einige Eigenschaften des Random Walks bestimmen.
\begin{parts}
\part Schreibe eine Funktion, die einen einzelnen Random Walk mit
Startwert 0 f\"ur $n$ Schritte und Wahrscheinlichkeit $p$ f\"ur
einen positiven Schritt als Vektor zur\"uckgibt.
\part Visualisiere jeweils 10 Random Walks mit $p=0.5$ zusammen in einem Plot
f\"ur $n=100$, $n=1000$ und $n=10000$ (drei Plots).\\
Sch\"atze aus den Abbildungen ab, wie sich der Mittelwert und die Standardabweichung
des Random Walks mit der Zeit (Schritte) sich entwickelt.
\part \"Uberpr\"uefe deine Hypothese zum Mittelwert und zur
Standardabweichung, indem du von $m$ Random Walks ($m \ge 10$) f\"ur
jeden z.B. zehnten Schritt den Mittelwert und die Standardabweichung
\"uber die Positionen der $m$ Random Walks berechnest.\\
Wie h\"angt also die Standardabweichung von der Anzahl der Schritte
ab? Wie entwickelt sich die Standardabweichung f\"ur eine sehr
gro{\ss}e Anzahl von Schritten?
\part \extra Erstelle eine Grafik, die die Verteilung der Position eines Random Walkers
zu drei verschiedenen Zeitpunkten zeigt.
\end{parts}
\question \qt{\extra 2D Random Walk}
Bisher hat sich unser Random Walker nur in einer Dimension bewegt
(nur vorw\"arts oder r\"uckw\"arts). Er kann aber auch in mehreren Dimensionen laufen!\\
In zwei Dimensionen wird dazu in jedem Schritt eine weitere
Zufallszahl gezogen, die bestimmt ob er einen Schritt nach links oder
rechts gemacht hat. Die Bewegung nach vorne/hinten bzw. links/rechts
sind unabh\"angig voneinander.
\begin{parts}
\part Wie kann unter Verwendung unserer Funktion f\"ur den
eindimensionalen Random Walk ein zweidimensionaler Random Walk
simuliert werden?
\part Erstelle h\"ubsche Bilder, die zweidimensionalen Random
Walks verschiedener L\"ange (bis zu mindestens $n=1000000$) illustrieren.
\part Animationen sind auch sch\"on! z.B. mit dem \code{pause} Befehl.
\part Anstatt einfach den Weg des Random Walks zu zeichnen, kann man
sich auch merken, wie oft er an jeder Stelle vorbeigekommen ist und
mit einem Farbcode plotten.
\end{parts}
\end{questions}
\end{document}

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,16 @@
TEXFILES=$(wildcard *.tex)
PDFFILES=$(TEXFILES:.tex=.pdf)
PYFILES=$(wildcard *.py)
PYPDFFILES=$(PYFILES:.py=.pdf)
pdf : $(PDFFILES)
pdf : $(PDFFILES) $(PYPDFFILES)
$(PDFFILES) : %.pdf : %.tex
pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
$(PYPDFFILES) : %.pdf : %.py
python $<
clean :
rm -f *~ $(TEXFILES:.tex=.aux) $(TEXFILES:.tex=.log) $(TEXFILES:.tex=.out) $(TEXFILES:.tex=.nav) $(TEXFILES:.tex=.snm) $(TEXFILES:.tex=.toc) $(TEXFILES:.tex=.vrb)

View File

@ -0,0 +1,47 @@
import numpy as np
import matplotlib.pyplot as plt
#x = np.random.randn( 40, 10 )
#np.save('boxwhiskerdata', x )
x = np.load('boxwhiskerdata.npy')
plt.xkcd()
fig = plt.figure( figsize=(6,4) )
ax = fig.add_subplot( 1, 1, 1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
ax.set_xlabel('Experiment')
ax.set_ylabel('x')
ax.set_ylim( -4.0, 4.0)
ax.annotate('Median',
xy=(3.9, 0.1), xycoords='data',
xytext=(3.5, -2.5), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(0.8,1.0),
connectionstyle="angle3,angleA=-110,angleB=60") )
ax.annotate('1. quartile',
xy=(5.8, -0.7), xycoords='data',
xytext=(5.5, -3.5), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(0.5,1.0),
connectionstyle="angle3,angleA=30,angleB=70") )
ax.annotate('3. quartile',
xy=(6.1, 0.6), xycoords='data',
xytext=(6.5, 3.0), textcoords='data', ha='left',
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.0),
connectionstyle="angle3,angleA=30,angleB=70") )
ax.annotate('minimum',
xy=(6.1, -2.3), xycoords='data',
xytext=(7.2, -3.3), textcoords='data', ha='left',
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.5),
connectionstyle="angle3,angleA=10,angleB=100") )
ax.annotate('maximum',
xy=(5.9, 2.8), xycoords='data',
xytext=(4.9, 3.5), textcoords='data', ha='right',
arrowprops=dict(arrowstyle="->", relpos=(1.0,0.5),
connectionstyle="angle3,angleA=0,angleB=120") )
ax.boxplot( x, whis=100.0 )
plt.tight_layout()
plt.savefig('boxwhisker.pdf')
plt.show()

Binary file not shown.

View File

@ -0,0 +1,34 @@
import numpy as np
import matplotlib.pyplot as plt
plt.xkcd()
fig = plt.figure( figsize=(6,5) )
n = 200
for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
print r
x = np.random.randn( n )
y = r*x + np.sqrt(1.0-r*r)*np.random.randn( n )
ax = fig.add_subplot( 2, 2, k+1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
ax.text( -2, 2.5, 'r=%.1f' % r )
if k == 0 :
ax.text( 2.8, -2, 'positively\ncorrelated', ha='right' )
elif k == 1 :
ax.text( 2.8, -2.5, 'weakly\ncorrelated', ha='right' )
elif k == 2 :
ax.text( 2.8, -2.5, 'not\ncorrelated', ha='right' )
elif k == 3 :
ax.text( -2.5, -2, 'negatively\ncorrelated', ha='left' )
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim( -3.0, 3.0)
ax.set_ylim( -3.0, 3.0)
ax.scatter( x, y )
plt.tight_layout()
plt.savefig('correlation.pdf')
plt.show()

View File

@ -19,10 +19,141 @@
\usepackage[left=25mm,right=25mm,top=20mm,bottom=30mm]{geometry}
\setcounter{tocdepth}{1}
%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% section style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[sf,bf,it,big,clearempty]{titlesec}
\setcounter{secnumdepth}{-1}
%%%%% units %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{graphicx}
\usepackage{xcolor}
\newcommand{\texpicture}[1]{{\sffamily\small\input{#1.tex}}}
\pagecolor{white}
\newcommand{\ruler}{\par\noindent\setlength{\unitlength}{1mm}\begin{picture}(0,6)%
\put(0,4){\line(1,0){170}}%
\multiput(0,2)(10,0){18}{\line(0,1){4}}%
\multiput(0,3)(1,0){170}{\line(0,1){2}}%
\put(0,0){\makebox(0,0){{\tiny 0}}}%
\put(10,0){\makebox(0,0){{\tiny 1}}}%
\put(20,0){\makebox(0,0){{\tiny 2}}}%
\put(30,0){\makebox(0,0){{\tiny 3}}}%
\put(40,0){\makebox(0,0){{\tiny 4}}}%
\put(50,0){\makebox(0,0){{\tiny 5}}}%
\put(60,0){\makebox(0,0){{\tiny 6}}}%
\put(70,0){\makebox(0,0){{\tiny 7}}}%
\put(80,0){\makebox(0,0){{\tiny 8}}}%
\put(90,0){\makebox(0,0){{\tiny 9}}}%
\put(100,0){\makebox(0,0){{\tiny 10}}}%
\put(110,0){\makebox(0,0){{\tiny 11}}}%
\put(120,0){\makebox(0,0){{\tiny 12}}}%
\put(130,0){\makebox(0,0){{\tiny 13}}}%
\put(140,0){\makebox(0,0){{\tiny 14}}}%
\put(150,0){\makebox(0,0){{\tiny 15}}}%
\put(160,0){\makebox(0,0){{\tiny 16}}}%
\put(170,0){\makebox(0,0){{\tiny 17}}}%
\end{picture}\par}
% figures:
\setlength{\fboxsep}{0pt}
\newcommand{\texpicture}[1]{{\sffamily\footnotesize\input{#1.tex}}}
%\newcommand{\texpicture}[1]{\fbox{\sffamily\footnotesize\input{#1.tex}}}
%\newcommand{\texpicture}[1]{\setlength{\fboxsep}{2mm}\fbox{#1}}
%\newcommand{\texpicture}[1]{}
\newcommand{\figlabel}[1]{\textsf{\textbf{\large \uppercase{#1}}}}
% maximum number of floats:
\setcounter{topnumber}{2}
\setcounter{bottomnumber}{0}
\setcounter{totalnumber}{2}
% float placement fractions:
\renewcommand{\textfraction}{0.2}
\renewcommand{\topfraction}{0.8}
\renewcommand{\bottomfraction}{0.0}
\renewcommand{\floatpagefraction}{0.5}
% spacing for floats:
\setlength{\floatsep}{12pt plus 2pt minus 2pt}
\setlength{\textfloatsep}{20pt plus 4pt minus 2pt}
\setlength{\intextsep}{12pt plus 2pt minus 2pt}
% spacing for a floating page:
\makeatletter
\setlength{\@fptop}{0pt}
\setlength{\@fpsep}{8pt plus 2.0fil}
\setlength{\@fpbot}{0pt plus 1.0fil}
\makeatother
% rules for floats:
\newcommand{\topfigrule}{\vspace*{10pt}{\hrule height0.4pt}\vspace*{-10.4pt}}
\newcommand{\bottomfigrule}{\vspace*{-10.4pt}{\hrule height0.4pt}\vspace*{10pt}}
% captions:
\usepackage[format=plain,singlelinecheck=off,labelfont=bf,font={small,sf}]{caption}
% put caption on separate float:
\newcommand{\breakfloat}{\end{figure}\begin{figure}[t]}
% references to panels of a figure within the caption:
\newcommand{\figitem}[1]{\textsf{\bfseries\uppercase{#1}}}
% references to figures:
\newcommand{\panel}[1]{\textsf{\uppercase{#1}}}
\newcommand{\fref}[1]{\textup{\ref{#1}}}
\newcommand{\subfref}[2]{\textup{\ref{#1}}\,\panel{#2}}
% references to figures in normal text:
\newcommand{\fig}{Fig.}
\newcommand{\Fig}{Figure}
\newcommand{\figs}{Figs.}
\newcommand{\Figs}{Figures}
\newcommand{\figref}[1]{\fig~\fref{#1}}
\newcommand{\Figref}[1]{\Fig~\fref{#1}}
\newcommand{\figsref}[1]{\figs~\fref{#1}}
\newcommand{\Figsref}[1]{\Figs~\fref{#1}}
\newcommand{\subfigref}[2]{\fig~\subfref{#1}{#2}}
\newcommand{\Subfigref}[2]{\Fig~\subfref{#1}{#2}}
\newcommand{\subfigsref}[2]{\figs~\subfref{#1}{#2}}
\newcommand{\Subfigsref}[2]{\Figs~\subfref{#1}{#2}}
% references to figures within bracketed text:
\newcommand{\figb}{Fig.}
\newcommand{\figsb}{Figs.}
\newcommand{\figrefb}[1]{\figb~\fref{#1}}
\newcommand{\figsrefb}[1]{\figsb~\fref{#1}}
\newcommand{\subfigrefb}[2]{\figb~\subfref{#1}{#2}}
\newcommand{\subfigsrefb}[2]{\figsb~\subfref{#1}{#2}}
% references to tables:
\newcommand{\tref}[1]{\textup{\ref{#1}}}
% references to tables in normal text:
\newcommand{\tab}{Tab.}
\newcommand{\Tab}{Table}
\newcommand{\tabs}{Tabs.}
\newcommand{\Tabs}{Tables}
\newcommand{\tabref}[1]{\tab~\tref{#1}}
\newcommand{\Tabref}[1]{\Tab~\tref{#1}}
\newcommand{\tabsref}[1]{\tabs~\tref{#1}}
\newcommand{\Tabsref}[1]{\Tabs~\tref{#1}}
% references to tables within bracketed text:
\newcommand{\tabb}{Tab.}
\newcommand{\tabsb}{Tab.}
\newcommand{\tabrefb}[1]{\tabb~\tref{#1}}
\newcommand{\tabsrefb}[1]{\tabsb~\tref{#1}}
%%%%% equation references %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\eqref}[1]{(\ref{#1})}
\newcommand{\eqn}{Eq.}
\newcommand{\Eqn}{Eq.}
\newcommand{\eqns}{Eqs.}
\newcommand{\Eqns}{Eqs.}
\newcommand{\eqnref}[1]{\eqn~\eqref{#1}}
\newcommand{\Eqnref}[1]{\Eqn~\eqref{#1}}
\newcommand{\eqnsref}[1]{\eqns~\eqref{#1}}
\newcommand{\Eqnsref}[1]{\Eqns~\eqref{#1}}
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{listings}
@ -74,14 +205,16 @@
\newenvironment{definition}[1][]{\medskip\noindent\textbf{Definition}\ifthenelse{\equal{#1}{}}{}{ #1}:\newline}%
{\medskip}
%\newcommand{\showlisting}{yes}
\newcommand{\showlisting}{no}
\newcommand{\showlisting}{yes}
%\newcommand{\showlisting}{no}
\newcounter{theexercise}
\setcounter{theexercise}{1}
\newenvironment{exercise}[1][]{\medskip\noindent\textbf{\tr{Exercise}{\"Ubung}
\arabic{theexercise}:} \stepcounter{theexercise}\newline \newcommand{\exercisesource}{#1}}%
{\ifthenelse{\equal{\exercisesource}{}}{}{\ifthenelse{\equal{\showlisting}{yes}}{\medskip\lstinputlisting{\exercisesource}}{}}\medskip}
\graphicspath{{figures/}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -154,7 +287,7 @@
below. In particular the script should test data vectors of
different length.} {Schreibe ein Skript, das testet ob die
\code{mymedian} Funktion wirklich die Zahl zur\"uckgibt, \"uber
der genausoviele Datenwerte liegen wie darunter. Das Skript sollte
der genauso viele Datenwerte liegen wie darunter. Das Skript sollte
insbesondere verschieden lange Datenvektoren testen.}
\end{exercise}
@ -246,7 +379,7 @@ $A$ des Histogramms ist also
\[ A = \sum_{i=1}^N ( n_i \cdot \Delta x ) = \Delta x \sum_{i=1}^N n_i \]
und das normierte Histogramm hat die H\"ohe
\[ p(x_i) = \frac{n_i}{\Delta x \sum_{i=1}^N n_i} \]
Es muss also nicht nur durch die Summe, sondern auch durch die Breite der Klassen $\Delta x$
Es muss also nicht nur durch die Summe, sondern auch durch die Breite $\Delta x$ der Klassen
geteilt werden.
$p(x_i)$ kann keine Wahrscheinlichkeit sein, da $p(x_i)$ nun eine
@ -258,17 +391,65 @@ spricht von einer Wahrscheinlichkeitsdichte.
\caption{\label{pdfprobabilitiesfig} Wahrscheinlichkeiten bei
einer Wahrscheinlichkeitsdichtefunktion.}
\end{figure}
\begin{exercise}
\begin{exercise}[gaussianpdf.m]
\tr{Plot the Gaussian probability density}{Plotte die Gauss'sche Wahrscheinlichkeitsdichte }
\[ p_g(x) = 1/\sqrt{2\pi\sigma^2}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]
\[ p_g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]
\tr{What does it mean?}{Was bedeutet die folgende Wahrscheinlichkeit?}
\[ P(x_1 < x < x2) = \int_{x_1}^{x_2} p(x) \, dx \]
\[ P(x_1 < x < x2) = \int\limits_{x_1}^{x_2} p(x) \, dx \]
\tr{How large is}{Wie gro{\ss} ist}
\[ \int_{-\infty}^{+\infty} p(x) \, dx \; ?\]
\[ \int\limits_{-\infty}^{+\infty} p(x) \, dx \; ?\]
\tr{Why?}{Warum?}
\end{exercise}
\begin{exercise}[boxwhisker.m]
\tr{Generate eine $40 \times 10$ matrix of random numbers and
illustrate their distribution in a box-whicker plot
(\code{boxplot()} function). How to interpret the plot?}
{Erzeuge ein $40 \times 10$ Matrix
von Zufallszahlen und illustriere ihre Verteilungen in einem
Box-Whisker Plot (\code{boxplot()} Funktion, lies die Hilfe!). Wie ist der
Box-Whisker Plot zu interpretieren? Was hat es mit den Ausreissern auf sich?
Wie kann man erreichen, dass die Whisker den kleinsten und den gr\"o{\ss}ten
Datenwert anzeigen? Warum sind die unterschiedlichen Box-Whiskers nicht alle gleich,
obwohl sie aus der selben Verteilung gezogen worden sind?}
\end{exercise}
\begin{figure}[t]
\includegraphics[width=1\textwidth]{boxwhisker}
\caption{\label{boxwhiskerfig} Box-whisker plots illustrate distributions.}
\end{figure}
\subsection{Korrelation}
\begin{figure}[t]
\includegraphics[width=1\textwidth]{correlation}
\caption{\label{correlationfig} Korrelationen zwischen zwei Datens\"atzen $x$ und $y$.}
\end{figure}
Bisher haben wir Eigenschaften einer einzelnen Me{\ss}gr\"o{\ss}e angeschaut.
Bei mehreren Me{\ss}gr\"o{\ss}en, kann nach Abh\"angigkeiten gefragt werden.
Der Korrelationskoeffizient
\[ r_{x,y} = \frac{Cov(x,y)}{\sigma_x \sigma_y} = \frac{\langle
(x-\langle x \rangle)(y-\langle y \rangle) \rangle}{\sqrt{\langle
(x-\langle x \rangle)^2} \rangle \sqrt{\langle (y-\langle y
\rangle)^2} \rangle} \] quantifiziert einfache lineare
Zusammenh\"ange. Perfekt korrelierte Variablen ergeben einen
Korrelationskoeffizienten von $+1$, antikorrelierte Daten einen
Korrelationskoeffizienten von $-1$ und nicht korrelierte Daten einen
Korrelationskoeffizienten nahe 0 (\figrefb{correlationfig}).
\begin{figure}[t]
\includegraphics[width=1\textwidth]{nonlincorrelation}
\caption{\label{nonlincorrelationfig} Nichtlineare Zusammenh\"ange
werden durch den Korrelationskoeffizienten nicht erfasst! Sowohl
die quadratische Abh\"angigkeit (links) als auch eine
Rauschkorrelation (rechts), bei der die Streuung der $y$-Werte von
$x$ abh\"angen, ergeben Korrelationskeffizienten nahe Null.
$\xi$ sind normalverteilte Zufallszahlen.}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Data types}
@ -390,8 +571,72 @@ spricht von einer Wahrscheinlichkeitsdichte.
\end{itemize}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{\tr{Bootstrap Methods}{Bootstrap Methoden}}
Beim Bootstrap erzeugt man sich die Verteilung von Statistiken durch Resampling
aus der Stichprobe. Das hat mehrere Vorteile:
\begin{itemize}
\item Weniger Annahmen (z.B. muss eine Stichprobe nicht Normalverteilt sein).
\item H\"ohere Genauigkeit als klassische Methoden.
\item Allgemeing\"ultigkeit: Bootstrap Methoden sind sich sehr
\"ahnlich f\"ur viele verschiedene Statistiken und ben\"otigen nicht
f\"ur jede Statistik eine andere Formel.
\end{itemize}
\begin{figure}[t]
\includegraphics[width=0.8\textwidth]{2012-10-29_16-26-05_771}\\[2ex]
\includegraphics[width=0.8\textwidth]{2012-10-29_16-41-39_523}\\[2ex]
\includegraphics[width=0.8\textwidth]{2012-10-29_16-29-35_312}
\caption{\tr{Why can we only measure a sample of the
population?}{Warum k\"onnen wir nur eine Stichprobe der
Grundgesamtheit messen?}}
\end{figure}
\begin{figure}[t]
\includegraphics[height=0.2\textheight]{srs1}\\[2ex]
\includegraphics[height=0.2\textheight]{srs2}\\[2ex]
\includegraphics[height=0.2\textheight]{srs3}
\caption{Bootstrap der Stichprobenvertielung (a) Von der
Grundgesamtheit (population) mit unbekanntem Parameter
(z.B. Mittelwert $\mu$) zieht man Stichproben (SRS: simple random
samples). Die Statistik (hier Bestimmung von $\bar x$) kann f\"ur
jede Stichprobe berechnet werden. Die erhaltenen Werte entstammen
der Stichprobenverteilung. Meisten wird aber nur eine Stichprobe
gezogen! (b) Mit bestimmten Annahmen und Theorien kann man auf
die Stichprobenverteilung schlie{\ss}en ohne sie gemessen zu
haben. (c) Alternativ k\"onnen aus der einen Stichprobe viele
Bootstrap-Stichproben generiert werden (resampling) und so
Eigenschaften der Stichprobenverteilung empirisch bestimmt
werden. Aus Hesterberg et al. 2003, Bootstrap Methods and
Permuation Tests}
\end{figure}
\section{Bootstrap des Standardfehlers}
Beim Bootstrap erzeugen wir durch resampling neue Stichproben und
benutzen diese um die Stichprobenverteilung einer Statistik zu
berechnen. Die Bootstrap Stichproben haben jeweils den gleichen Umfang
wie die urspr\"unglich gemessene Stichprobe und werden durch Ziehen
mit Zur\"ucklegen gewonnen. Jeder Wert der urspr\"unglichen Stichprobe
kann also einmal, mehrmals oder gar nicht in einer Bootstrap
Stichprobe vorkommen.
\begin{exercise}[bootstrapsem.m]
Ziehe 1000 normalverteilte Zufallszahlen und berechne deren Mittelwert,
Standardabweichung und Standardfehler ($\sigma/\sqrt{n}$).
Resample die Daten 1000 mal (Ziehen mit Zur\"ucklegen) und berechne jeweils
den Mittelwert.
Plotte ein Histogramm dieser Mittelwerte, sowie deren Mittelwert und
die Standardabweichung.
Was hat das mit dem Standardfehler zu tun?
\end{exercise}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Statistics}

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,42 @@
import numpy as np
import matplotlib.pyplot as plt
plt.xkcd()
fig = plt.figure( figsize=(6,3) )
n = 200
x = np.random.randn( n )
y = np.random.randn( n )
z = x*x+0.2*y
r =np.corrcoef(x,z)[0,1]
ax = fig.add_subplot( 1, 2, 1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
ax.text( 0, 4.0, 'r=%.1f' % r, ha='center' )
ax.text( 0, 5.5, r'$y = x^2+\xi/5$', ha='center' )
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim( -3.0, 3.0)
ax.set_ylim( -0.5, 6.0)
ax.scatter( x, z )
z = 0.5*x*y
r =np.corrcoef(x,z)[0,1]
ax = fig.add_subplot( 1, 2, 2 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
ax.text( 0, 1.5, 'r=%.1f' % r, ha='center' )
ax.text( 0, 2.5, r'$y = x \cdot \xi/2$', ha='center' )
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim( -3.0, 3.0)
ax.set_ylim( -3.0, 3.0)
ax.scatter( x, z )
plt.tight_layout()
plt.savefig('nonlincorrelation.pdf')
plt.show()

Binary file not shown.