Compare commits

...

18 Commits

Author SHA1 Message Date
000749add1 Fix typos 2026-01-30 13:01:57 +01:00
3fc312ba9d Add gen_histogram.py and finish theory for exercise 2 2026-01-22 13:35:38 +01:00
0716f02766 Add most theory for exercise 2 2026-01-21 17:51:32 +01:00
7b0fbb0262 Add gen_correlated_data.py and finish theory for exercise 1 2026-01-21 16:39:01 +01:00
31b40de191 Add summary slide for theory 1 2026-01-21 10:26:08 +01:00
41294cf3bf Change slide overlays 2026-01-21 10:09:53 +01:00
e8c8f0ed13 Formatting 2026-01-21 09:53:48 +01:00
dfc558ca16 Add solution for exercise 2c 2026-01-21 09:53:26 +01:00
6098da86fa Add solution to exercise 2b 2026-01-20 17:13:02 +01:00
f92ed7d66d Change decimal points to commas 2026-01-20 16:49:19 +01:00
e8781c5ef4 Add solution to exercise 2a 2026-01-20 16:45:49 +01:00
e19254a82f Remove unnecessary text, split title into multiple lines 2026-01-20 15:13:56 +01:00
15ca83ca76 Add solution for exercise 1 2026-01-20 15:09:50 +01:00
a1fb10842d Add exercises 1 and 2 2026-01-20 14:01:54 +01:00
081cad7f11 Fix factorial symbol and change variable k to n 2026-01-17 17:55:45 +01:00
9f422f859e Fix handout compilation 2026-01-17 17:55:37 +01:00
c23ac95b90 Make build system compatible with tikz externalization 2026-01-17 11:47:54 +01:00
7640d83c37 Move and rename slides 2026-01-16 04:23:32 +01:00
6 changed files with 1491 additions and 73 deletions

View File

@ -1,4 +1,3 @@
$pdflatex="pdflatex -shell-escape -interaction=nonstopmode -synctex=1 %O %S";
$out_dir = 'build';
$pdf_mode = 1;

View File

@ -1,19 +1,25 @@
PRESENTATIONS := $(patsubst src/%/presentation.tex,build/presentation_%.pdf,$(wildcard src/*/presentation.tex))
HANDOUTS := $(patsubst build/presentation_%.pdf,build/presentation_%_handout.pdf,$(PRESENTATIONS))
RC_PDFLATEX := $(shell grep '$$pdflatex' .latexmkrc \
| sed -e 's/.*"\(.*\)".*/\1/' -e 's/%S//' -e 's/%O//')
.PHONY: all
all: $(PRESENTATIONS) $(HANDOUTS)
build/presentation_%.pdf: src/%/presentation.tex build/prepared
TEXINPUTS=./lib/cel-slides-template-2025:$$TEXINPUTS latexmk $<
mv build/presentation.pdf $@
TEXINPUTS=./lib/cel-slides-template-2025:$(dir $<):$$TEXINPUTS \
latexmk -outdir=build/$* $<
cp build/$*/presentation.pdf $@
build/presentation_%_handout.pdf: src/%/presentation.tex build/prepared
TEXINPUTS=./lib/cel-slides-template-2025:$$TEXINPUTS latexmk -pdflatex='pdflatex %O "\def\ishandout{1}\input{%S}"' $<
mv build/presentation.pdf $@
TEXINPUTS=./lib/cel-slides-template-2025:$(dir $<):$$TEXINPUTS \
latexmk -outdir=build/$*_handout \
-pdflatex='$(RC_PDFLATEX) %O "\def\ishandout{1}\input{%S}"' $<
cp build/$*_handout/presentation.pdf $@
build/prepared:
mkdir -p build
mkdir build
touch build/prepared
.PHONY: clean

View File

@ -30,7 +30,10 @@
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{spy, external, intersections, positioning}
%\tikzexternalize[prefix=build/]
\ifdefined\ishandout\else
\tikzexternalize
\fi
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
@ -139,7 +142,7 @@
\end{gather*}
\vspace*{-2mm}
\begin{gather*}
P_X(k) = \frac{\lambda^k}{k!}e^{-\lambda} \\[2mm]
P_X(n) = \frac{\lambda^n}{n!}e^{-\lambda} \\[2mm]
\phi_X(s) = \text{exp}\left(\lambda (e^{js} -1)\right)
\end{gather*}
\vspace*{-2mm}
@ -160,7 +163,7 @@
\vspace*{-6mm}
\begin{gather*}
X \sim \text{Poisson}(\lambda) \\[3mm]
P_X(k) = \frac{\lambda^k \cdot e^{-\lambda}}{k!} \\[4mm]
P_X(n) = \frac{\lambda^n \cdot e^{-\lambda}}{n!} \\[4mm]
\phi_X(s) = \text{exp}\left(\lambda (e^{js} -1)\right)
\end{gather*}
\end{greenblock}
@ -168,7 +171,7 @@
\vspace*{-6mm}
\begin{gather*}
\nsum_{k=0}^{n} \binom{n}{k}a^k b^{n-k} = (a+b)^n, \hspace{15mm}
\binom{n}{k} = \frac{n!}{(n-k!)k!}
\binom{n}{k} = \frac{n!}{(n-k)!k!}
\end{gather*}
\end{greenblock}
\column{\kitthreecolumns}
@ -228,11 +231,11 @@
zweier Zufallsvariablen.
\pause\begin{gather*}
X \sim \text{Poisson}(\lambda_1) \hspace{3mm}
\Leftrightarrow \hspace{3mm} P_X(k)
= \frac{\lambda_1^k \cdot e^{-\lambda_1}}{k!} \hspace{30mm}
\Leftrightarrow \hspace{3mm} P_X(n)
= \frac{\lambda_1^n \cdot e^{-\lambda_1}}{n!} \hspace{30mm}
Y \sim \text{Poisson}(\lambda_2) \hspace{3mm}
\Leftrightarrow \hspace{3mm} P_Y(k)
= \frac{\lambda_2^k \cdot e^{-\lambda_2}}{k!}
\Leftrightarrow \hspace{3mm} P_Y(n)
= \frac{\lambda_2^n \cdot e^{-\lambda_2}}{n!}
\end{gather*}
\pause\begin{align*}
P_Z(n) &= P_{X+Y}(n) = \nsum_{k=0}^{n} P_X(k)P_Y(n-k)
@ -291,64 +294,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Theorie Wiederholung}
\begin{frame}
\frametitle{Unabhängigkeit \& Korrelation}
\vspace*{-10mm}
\begin{itemize}
\item Unabhängige ZV (stetig)
\begin{columns}
\column{\kitthreecolumns}
\begin{align*}
X,Y \text{ unabhängig}
\hspace{5mm} \Leftrightarrow \hspace{5mm}
f_{X,Y}(x,y) = f_X(x)f_Y(y)
\end{align*}
\column{\kitthreecolumns}
\begin{lightgrayhighlightbox}
Erinnerung: Unabhängige Ereignisse
\begin{align*}
X,Y \text{ \normalfont unabhängig}
\hspace{5mm} \Leftrightarrow \hspace{5mm}
P(AB) = P(A)P(B)
\end{align*}
\vspace*{-13mm}
\end{lightgrayhighlightbox}
\end{columns}
\pause
\item Kovarianz
\begin{columns}
\column{\kitthreecolumns}
\begin{align*}
\text{cov}(X,Y) &= E\bigg( \big(X - E(X)\big) \big(Y
- E(Y)\big) \bigg) \\
&= E(XY) - E(X)E(Y)
\end{align*}
\column{\kitthreecolumns}
\begin{lightgrayhighlightbox}
Erinnerung: Varianz
\begin{align*}
V(X) = E\big( \left(X - E(X)\right)^2 \big) = E(X^2) - E^2(X)
\end{align*}
\vspace*{-13mm}
\end{lightgrayhighlightbox}
\end{columns}
\item Korrelation
\begin{align*}
E(XY)
\end{align*}
\pause
\item Korrelationskoeffizient
\begin{align*}
\rho_{XY} = \frac{\text{cov}(X,Y)}{\sqrt{V(X)V(Y)}}
\hspace{25mm} \rho_{XY} = 0
\hspace{2mm}\Leftrightarrow\hspace{2mm}
E(XY) = E(X)E(Y)
\end{align*}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Mehrdimensionale Zufallsvariablen}
@ -457,7 +402,66 @@
\end{frame}
\begin{frame}
\frametitle{Unabhängigkeit vs. Korrelation}
\frametitle{Unabhängigkeit \& Korrelation I}
\vspace*{-10mm}
\begin{itemize}
\item Unabhängige ZV (stetig)
\begin{columns}
\column{\kitthreecolumns}
\begin{align*}
X,Y \text{ unabhängig}
\hspace{5mm} \Leftrightarrow \hspace{5mm}
f_{X,Y}(x,y) = f_X(x)f_Y(y)
\end{align*}
\column{\kitthreecolumns}
\begin{lightgrayhighlightbox}
Erinnerung: Unabhängige Ereignisse
\begin{align*}
A,B \text{ \normalfont unabhängig}
\hspace{5mm} \Leftrightarrow \hspace{5mm}
P(AB) = P(A)P(B)
\end{align*}
\vspace*{-13mm}
\end{lightgrayhighlightbox}
\end{columns}
\pause
\item Kovarianz
\begin{columns}
\column{\kitthreecolumns}
\begin{align*}
\text{cov}(X,Y) &= E\bigg( \big(X - E(X)\big) \big(Y
- E(Y)\big) \bigg) \\
&= E(XY) - E(X)E(Y)
\end{align*}
\column{\kitthreecolumns}
\begin{lightgrayhighlightbox}
Erinnerung: Varianz
\begin{align*}
V(X) = E\big( \left(X - E(X)\right)^2 \big) =
E(X^2) - E^2(X)
\end{align*}
\vspace*{-13mm}
\end{lightgrayhighlightbox}
\end{columns}
\item Korrelation
\begin{align*}
E(XY)
\end{align*}
\pause
\item Korrelationskoeffizient
\begin{align*}
\rho_{XY} = \frac{\text{cov}(X,Y)}{\sqrt{V(X)V(Y)}}
\hspace{25mm} \rho_{XY} = 0
\hspace{2mm}\Leftrightarrow\hspace{2mm}
E(XY) = E(X)E(Y)
\end{align*}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Unabhängigkeit \& Korrelation II}
\vspace*{-15mm}

View File

@ -0,0 +1,38 @@
import numpy as np
import matplotlib.pyplot as plt
from numpy.typing import NDArray
import argparse
def twodim_array_to_pgfplots_table_string(a: NDArray):
return (
" \\\\\n".join([" ".join([str(vali) for vali in val]) for val in a]) + "\\\\\n"
)
def main():
# Parse command line arguments
parser = argparse.ArgumentParser()
parser.add_argument("--correlation", "-c", type=np.float32, required=True)
parser.add_argument("-N", type=np.int32, required=True)
parser.add_argument("--plot", "-p", action="store_true")
args = parser.parse_args()
# Generate & plot data
means = np.array([0, 0])
cov = np.array([[1, args.correlation], [args.correlation, 1]])
x = np.random.multivariate_normal(means, cov, size=args.N)
print(twodim_array_to_pgfplots_table_string(x))
if args.plot:
plt.scatter(x[:, 0], x[:, 1])
plt.show()
if __name__ == "__main__":
main()

View File

@ -0,0 +1,40 @@
import argparse
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import binom
def array_to_pgfplots_table_string(a):
return " ".join([f"({k}, {val})" for (k, val) in enumerate(a)]) + f" ({len(a)}, 0)"
def P_binom(N, p, k):
return binom(N, k) * p**k * (1 - p) ** (N - k)
def main():
# Parse command line arguments
parser = argparse.ArgumentParser()
parser.add_argument("-N", type=np.int32, required=True)
parser.add_argument("-p", type=np.float32, required=True)
parser.add_argument("--show", "-s", action="store_true")
args = parser.parse_args()
# Generate and show data
N = args.N
p = args.p
bars = np.array([P_binom(N, p, k) for k in range(N + 1)])
print(array_to_pgfplots_table_string(bars))
if args.show:
plt.stem(bars)
plt.show()
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load Diff