JGU Logo JGU Logo JGU Logo JGU Logo

Institut für Informatik

Modellierung 2

Michael Wand
Ann-Christin Wörl & David Hartmann
Sommersemester 2023

Lehreinheit 2

Statistik des Pfeilwurfs
Letzte Änderung: 17. April 2023, 13:41 Uhr
Abgabe: Montag, der 01.05.2021, 12 Uhr

  /  





Aufgabe 1: Basics Wahrscheinlichkeitstheorie

Verwenden Sie Kolmogorov's Axiome (und die Regeln der Mengenlehre), um die folgenden Rechenregeln zu zeigen.


Es sei \(\Omega\) eine Menge von Elementarereignissen und \(P:σ(\Omega) \rightarrow \mathbb{R}\) ein Wahrscheinlichkeitsmaß. Zeigen Sie, dass für alle Ereignisse \(A,B,C \in \sigma(\Omega)\) folgende Regeln gelten:

  1. \(P(\overline{A}) := P(\Omega \setminus A) = 1 - P(A)\)
  2. \(P(\emptyset) = 0\)
  3. \(P(A) \in [0,1]\)
  4. Es seien \(A,B,C\) disjunkte Mengen, dann gilt: \[ P(A\cup B\cup C) = P(A) + P(B) + P(C). \]
  5. Es seien \(A,B\) beliebige Mengen, dann gilt: \[ P(A\cup B) = P(A) + P(B) - P(A \cap B). \]

Aufgabe 2: Marginalisierung & die Anomalie des Pfeilwurfs

\[ P((x,y)) = \mathcal{N}_{{\begin{pmatrix}0\\0\end{pmatrix}},{\begin{pmatrix}1 & 0\\0 & 1\end{pmatrix}}} = \frac{1}{2\pi} e^{-\frac{1}{2}\left(x^2+y^2\right)} \]


  1. Berechnen Sie die (marginale) Wahrscheinlichkeitsdichte, einen Ort zu treffen, der sich in einem Abstand \(r≥0\) vom Zentrum befindet.
    Um die Berechnung zu vereinfachen, können Sie die Normierung der Dichte ignorieren (schreiben Sie einfach \(1/Z\), wie in \(P((x,y)) = \frac{1}{Z} e^{-\frac{1}{2}\left(x^2+y^2\right)}\). Physiker machen das ja auch. ;)).
  2. Gegeben Sei nun eine \(d\)-dimensionale Normalverteilung. Berechnen Sie die marginalen Dichte für den Erhalt einer Stichprobe mit Abstand \(r\) zum Zentrum.
    Auch hier können Sie die Normalisierungskonstante ignorieren, die die Wahrscheinlichkeitsdichte zu \(1\) integriert.
  3. Beweisen Sie, dass das Maximum der marginalen Dichte bei \(r=\sqrt{d}\) liegt.
    Hinweis: Ergebnis aus 3b ableiten und \(=0\) setzen.
  4. Beweisen/erläutern Sie dass die normierte Zufallsvariable \(Var(r)/E[r]\) oder \(Var(r)/{\argmax_r r}\) für \(d\rightarrow \infty\) verschwindet.

  1. Schließen Sie daraus: (Kleine) Punktmengen aus Gaußschem Rauschen in hohen Dimensionen haben mit hoher Wahrscheinlichkeit gleichmäßige Abstände zwischen allen Punktpaaren.

Praxisaufgabe 3: Aber wohin werfe ich nun den Pfeil?


Quelle: Tijmen Stam - https://commons.wikimedia.org/wiki/File:Dartboard.svg (CC BY-SA 3.0)


Wir nehmen wie in Aufgabe 3 an, dass bei einem gezielten Pfeilwurf auf \(x\), der Treffer normalverteilt um sein eigentliches Ziel ist.
Bestimmen Sie nun für verschiedene (aber feste) Varianzen die erwartete Punktzahl bei einem verrauschten Wurf.


  1. Überlegen Sie sich dazu zuerst wie Sie die erwartete Punktzahl beim Zielen auf eine bestimmte Position bekommen können.
  2. Schreiben Sie nun eine Python-Funktion, die Abhängig von der Standardabweichung der werfenden Person, die erwartete Punktzahl beim Zielen auf den jeweiligen Pixel ausgibt.
    Plotten Sie für verschiedene (aber feste) Standardabweichungen, die entsprechenden erwarteten Punktzahlen pro Pixel.
    Zeichnen Sie auch jeweils die Position \((x_\sigma, y_\sigma)\) der maximalen erwarteten Punktzahl \(p_\sigma\) ein.
    Hinweis: scipy.ndimage.gaussian_filter.
  3. Bestimmen Sie zuletzt die parametrische Kurve: \(\sigma \mapsto (x_\sigma, y_\sigma)\) auf dem Board und plotten Sie auch die zugehörige Punktzahl, also den Graphen zu \(\sigma \mapsto p_\sigma\).
    Welche Strategien können wir diesem Ergebnis entnehmen, wenn wir nicht wissen wie hoch unsere eigene Wurf-Standardabweichung ist?
    (Am Sinnvollsten ist es hier \(\sigma\) auf einer logarithmischen Skala von \(1\) bis \(10000\) laufen zu lassen).

Hinweis: Um ihnen das die Modellierung des Experiments zu vereinfachen, habe ich Ihnen ein Bild (unten, links) vorbereitet, bei dem sie eine pixelgenaue Punktzahl (encodiert durch den Graustufen-Wert) entnehmen können.


from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

img = Image.open('dart.png')
dart = np.asarray(img)
dart = np.rint(dart[:,:,0]/255*100)


plt.imshow(dart)
plt.show()

# Sie können nun mit der Maus über die Felder fahren und die resultierende Punktzahl ablesen.