— Irgendjemand, Saarbrücken 2023
motivierendes bildchen
TODO: 2-state beispiel
mermaid
stateDiagram-v2
direction lr
l --> r: p
l --> l: 1-p
r --> r: 1-q
r --> l: q
Wie oft ist der Frosch im Schnitt in $l$, wie oft in $r$?
import numpy as np
uniform = np.random.random # Zufall in [0, 1]
# Kein numpy? -> from random import random as uniform
p = 0.6 # von l nach r
q = 0.2 # von r nach l
N = 100_000 # Simulationen
# Los geht's!
visits = [0, 0]
cur = 0
for i in range(N):
if cur == 0:
if uniform() < p:
cur = 1
visits[1] += 1
else:
visits[0] += 1
elif cur == 1:
if uniform() < q:
cur = 0
visits[0] += 1
else:
visits[1] += 1
n = sum(visits)
print(f"{n}/{N}")
print(f" {visits[0]/n:.4f} of the time at 0 ({visits[0]} total)")
print(f" {visits[1]/n:.4f} of the time at 1 ({visits[1]} total)")
100000/100000 0.2495 of the time at 0 (24945 total) 0.7506 of the time at 1 (75055 total)
Warum ist der Frosch im Schnitt 25% in $l$ und 75% in $r$?
Die Wahrscheinlichkeiten für Wechsel sind $P(l \to r) = p$ und $P(r \to l) = q$
Wie können wir $P(\text{Frosch links})$ für große $t$ vorraussagen?
$t$ | $P(\text{ Frosch links zu }t)$ | $P(\text{ Frosch rechts zu }t)$ |
---|---|---|
$0$ | $1$ | $0$ |
$1$ | $1-p$ | $p$ |
$2$ | $(1-p)^2 + pq$ | $p(1-p) + p(1-q)$ |
Unser Experiment zeigt für große $t$: $$ P_{t-2}(\text{Frosch links}) \approx P_{t-1}(\text{Frosch links}) \approx P_{t}(\text{Frosch links}) \approx \dots L $$
Definition (Gedächtnislosigkeit)
Ein Prozess ist gedächtnislos, wenn zu jedem Zeitpunkt seine Entscheidung nur vom aktuellen Zustand abhängt, nicht aber von dem Weg, wie der aktuelle Zustand erreicht wurde.
Beobachtung
Das Verhalten der Frösche ist gedächtnislos. Die Aktionen des Frosches und deren Wahrscheinlichkeiten $p$ und $1-p$ (bzw $q$ und $1-q$) hängen nur von der aktuellen Seerose ab.
Der Frosch kann auf der linken oder rechten Seerose sitzen.
Wir modellieren die beiden Seerosen als die zwei Zustände $S = \{L, R\}$.
Zufällig hüpft er zwischen den Seerosen hin und her
Die Zufallsvariable $X_t$ beschreibt wo der Frosch zum Zeitpunkt $t$ ist.
Wir könnten zum Beispiel beobachten, dass
$$ \dots \quad X_3 = L \quad X_4 = L \quad X_5 = R \quad X_6 = L \quad \dots $$Am Anfang sitzt der Frosch auf der linken Seerose.
Die Wahrscheinlichkeit $P(X_0 = L) = 1$.
Analog ergibt sich $P(X_0 = R) = 0$.
Der Frosch hüpft mit Wahrscheinlichkeit $p$ von links nach rechts
Die Übergangswahrscheinlichkeit, dass der Frosch zum Zeitpunkt $t-1$ in $L$, und zum Zeitpunkt $t$ in $R$ ist, ist $p$.
$$ \begin{align*} &\phantom{==}\color{gray}{P(X_t = R \mid X_{t-1} = L, X_{t-2} = L)}\\ &=\color{gray}{P(X_t = R \mid X_{t-1} = L, X_{t-2} = R)}\\ &= P(X_t = R \mid X_{t-1} = L) \\&= p \end{align*} $$Da die Übergangswahrscheinlichkeiten zum Zeitpunkt $t$ nur von $X_t$ abhängen, schreiben wir kurzerhand
$$ P(X_t = R | X_{t-1} = L) = P(L \to R) = m_{L R} $$Wir können alle Übergangswahrscheinlichkeiten $P(s \to s')$ elegant als Matrix $M$ notieren:
$$ M = \begin{pmatrix} m_{LL} & m_{LR} \\ m_{RL} & m_{RR} \end{pmatrix} = \begin{pmatrix} 1 - p & p \\ q & 1-q \end{pmatrix} $$## Frösche brauchen Zufall
:::info
Viele Leute werfen Münzen in den Teich der Frösche. Wir sollen einen Frosch aussuchen, der der neue Schatzmeister werden soll. Wie können wir aus den 7 Fröschen **fair** einen auswählen?
:::
**Bedingungen**:
- Jeder Frosch wird mit $\frac{1}{7}$ ausgewählt
- Zufall nur durch die Münzen
---
## Frösche brauchen Zufall
```mermaid
stateDiagram-v2
state " " as 0
state " " as 1
state " " as 2
state " " as 3
state " " as 4
state " " as 5
state " " as 6
state "1" as 7
state "2" as 8
state "3" as 9
state "4" as 10
state "5" as 11
state "6" as 12
state "7" as 13
state " " as 14
0 --> 1: 0.5
0 --> 2: 0.5
1 --> 3: 0.5
1 --> 4: 0.5
2 --> 5: 0.5
2 --> 6: 0.5
3 --> 7: 0.5
3 --> 8: 0.5
4 --> 9: 0.5
4 --> 10: 0.5
4 --> 11: 0.5
5 --> 12: 0.5
6 --> 13: 0.5
6 --> 14: 0.5
14 --> 0: 1
7 --> 7: 1
8 --> 8: 1
9 --> 9: 1
10 --> 10: 1
11 --> 11: 1
12 --> 12: 1
13 --> 13: 1
```
---
## Gedächtnisverlust
- Der Frosch hüpft mit $p$ nach links und $q$ nach rechts
- Die Münze fällt gleichwahrscheinlich auf Kopf oder Zahl
<div>
:::success
Die nächste Aktion hängt nur vom **aktuellen** Zustand ab.
Was davor geschah ist irrelevant.
:::
</div> <!-- .element: class="fragment" data-fragment-index="0" -->
---
## Bissle Mathematik
Cell In[4], line 3 :::info ^ SyntaxError: invalid syntax
import matplotlib as mpl
import matplotlib.pyplot as plt
import networkx as nx
seed = 13648 # Seed random number generators for reproducibility
G = nx.random_k_out_graph(10, 3, 0.5, seed=seed)
pos = nx.spring_layout(G, seed=seed)
node_sizes = [3 + 10 * i for i in range(len(G))]
M = G.number_of_edges()
edge_colors = range(2, M + 2)
edge_alphas = [(5 + i) / (M + 4) for i in range(M)]
cmap = plt.cm.plasma
nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color="indigo")
edges = nx.draw_networkx_edges(
G,
pos,
node_size=node_sizes,
arrowstyle="->",
arrowsize=10,
edge_color=edge_colors,
edge_cmap=cmap,
width=2,
)
# set alpha value for each edge
for i in range(M):
edges[i].set_alpha(edge_alphas[i])
pc = mpl.collections.PatchCollection(edges, cmap=cmap)
pc.set_array(edge_colors)
ax = plt.gca()
ax.set_axis_off()
plt.colorbar(pc, ax=ax)
plt.show()