Autor:in
Zugehörigkeit

Markus Geuss

Fernfachhochschule Schweiz

Kombinatorik und Wahrscheinlichkeitsrechnung

Grundbegriffe

Ergebnismenge und Ereignisse

Die Ergebnismenge \(\Omega\) (Omega) fasst alle möglichen Elementarereignisse \(\omega\) eines Zufallsvorgangs zusammen:

\[ \Omega = \{\omega : \omega \text{ ist Elementarereignis}\} \tag{1.1} \]

Wichtige Begriffe:

Begriff Symbol Bedeutung
Ereignis \(A \subset \Omega\) Teilmenge der Ergebnismenge
Komplementärereignis \(\bar{A}\) oder \(A^c\) Tritt ein, wenn \(A\) nicht eintritt
Sicheres Ereignis \(\Omega\) Tritt immer ein
Unmögliches Ereignis \(\emptyset\) Tritt nie ein
Schnittmenge \(A \cap B\) Sowohl \(A\) als auch \(B\) tritt ein
Vereinigungsmenge \(A \cup B\) Mindestens eines der Ereignisse tritt ein
Disjunkte Ereignisse \(A \cap B = \emptyset\) \(A\) und \(B\) schließen sich aus

Venn-Diagramme

Venn-Diagramme für: \(\bar{A}, A \cap B, A \cup B ~\text{und} A \setminus B\)

Axiome von Kolmogorow

Die Wahrscheinlichkeit \(P(A)\) eines Ereignisses \(A\) erfüllt folgende Axiome:

Die drei Axiome

A1: Nicht-Negativität \[P(A) \geq 0\]

A2: Normierung \[P(\Omega) = 1\]

A3: Additivität bei disjunkten Ereignissen \[P(A \cup B) = P(A) + P(B) \quad \text{falls } A \cap B = \emptyset\]

HinweisWichtige Folgerungen
  • \(0 \leq P(A) \leq 1\) für alle Ereignisse \(A\)
  • \(P(\emptyset) = 0\) (unmögliches Ereignis)
  • Die Summe aller Wahrscheinlichkeiten der Elementarereignisse ist 1

Regeln für Wahrscheinlichkeiten

Komplementärregel

\[ P(\bar{A}) = 1 - P(A) \tag{1.2} \]

TippMerkregel

Die Wahrscheinlichkeit, dass \(A\) nicht eintritt, ist 1 minus die Wahrscheinlichkeit, dass \(A\) eintritt.

Additionssatz (allgemein)

\[ P(A \cup B) = P(A) + P(B) - P(A \cap B) \tag{1.3} \]

WarnungHäufiger Fehler

Bei nicht-disjunkten Ereignissen muss \(P(A \cap B)\) abgezogen werden, da sonst die Schnittmenge doppelt gezählt wird!

Differenzregel

\[ P(A \setminus B) = P(A) - P(A \cap B) \tag{1.4} \]

Laplace-Wahrscheinlichkeit

Die Laplace-Wahrscheinlichkeit ist der einfachste Ansatz zur Berechnung von Wahrscheinlichkeiten und gilt für Zufallsexperimente mit gleichwahrscheinlichen Ergebnissen.

Für Laplace-Experimente (endliche Ergebnismenge, alle Elementarereignisse gleichwahrscheinlich):

\[ P(A) = \frac{\text{Anzahl der für } A \text{ günstigen Ergebnisse}}{\text{Anzahl aller möglichen Ergebnisse}} = \frac{|A|}{|\Omega|} \tag{1.5} \]

WichtigLapacesche Wahrscheinlichkeit-Voraussetzungen

Voraussetzungen (V1 und V2):

  • V1: Die Ergebnismenge ist endlich: \(\Omega = \{\omega_1, \omega_2, \ldots, \omega_n\}\)
  • V2: Alle Elementarereignisse sind gleichwahrscheinlich
Code
# Beispiel: Würfeln - P(Augenzahl > 4)
guenstig <- c(5, 6)  # günstige Ergebnisse
omega <- 1:6         # alle möglichen Ergebnisse

P_A <- length(guenstig) / length(omega)

cat("Ereignis A = {Augenzahl > 4} = {5, 6}\n")
Ereignis A = {Augenzahl > 4} = {5, 6}
Code
cat("P(A) =", length(guenstig), "/", length(omega), "=", round(P_A, 4), "\n")
P(A) = 2 / 6 = 0.3333 

Frequentistischer Ansatz

Der frequentistische Ansatz verzichtet auf die Einschränkung der Gleichwahrscheinlichkeit und ist damit allgemeiner anwendbar.

WichtigFrequentistischer Wahrscheinlichkeitsbegriff

Bei der frequentistischen Wahrscheinlichkeit gehen wir davon aus, dass bei beliebig oft wiederholbarem Zufallsexperiment die relative Häufigkeit \(f_n(A)\) mit wachsendem \(n\) gegen die Wahrscheinlichkeit \(P(A)\) konvergiert.

\[f_n(A) \xrightarrow{n \to \infty} P(A)\]

z.B. Münzwurf: \(f_n(\text{Zahl}) \to 0{,}5\) für grosses \(n\).


Kombinatorik

Die vier Fälle des Urnenmodells

Bei der Ziehung von \(n\) Elementen aus einer Grundgesamtheit mit \(N\) Elementen unterscheidet man:

HinweisÜbersicht
Mit Reihenfolge Ohne Reihenfolge
Ohne Zurücklegen \(\dfrac{N!}{(N-n)!}\) \(\dbinom{N}{n}\)
Mit Zurücklegen \(N^n\) \(\dbinom{N+n-1}{n}\)

Formeln im Detail

Geordnete Auswahl ohne Zurücklegen (Variation)

\[ \frac{N!}{(N-n)!} = N \cdot (N-1) \cdot \ldots \cdot (N-n+1) \tag{1.7} \]

Anwendung: Medaillenvergabe, Ranglisten

Geordnete Auswahl mit Zurücklegen

\[ N^n \tag{1.8} \]

Anwendung: PIN-Codes, Würfeln mit mehreren Würfeln

Ungeordnete Auswahl ohne Zurücklegen (Kombination)

\[ \binom{N}{n} = \frac{N!}{(N-n)! \cdot n!} \tag{1.9} \]

Anwendung: Lotto, Kartenspiele (herauslegen)

Ungeordnete Auswahl mit Zurücklegen

\[ \binom{N+n-1}{n} = \frac{(N+n-1)!}{(N-1)! \cdot n!} \tag{1.10} \]

Anwendung: Stimmenhäufung bei Wahlen

TippMerkregel: Fakultät

\[k! = 1 \cdot 2 \cdot 3 \cdot \ldots \cdot k\] Spezialfall: \(0! = 1\)

R-Funktionen für Kombinatorik

Code
# Fakultät
factorial(n)       # n!

# Binomialkoeffizient "N über n"
choose(N, n)
Code
# 1. Medaillenvergabe: 8 Läufer, 3 Medaillen (geordnet, ohne Zurücklegen)
N <- 8; n <- 3
variationen <- factorial(N) / factorial(N - n)
cat("1. Medaillenvergabe (8 Läufer, 3 Plätze):", variationen, "Möglichkeiten\n")
1. Medaillenvergabe (8 Läufer, 3 Plätze): 336 Möglichkeiten
Code
# 2. Würfeln mit 2 Würfeln (geordnet, mit Zurücklegen)
N <- 6; n <- 2
permutationen_zurueck <- N^n
cat("2. Würfeln mit 2 Würfeln:", permutationen_zurueck, "Möglichkeiten\n")
2. Würfeln mit 2 Würfeln: 36 Möglichkeiten
Code
# 3. Lotto 6 aus 49 (ungeordnet, ohne Zurücklegen)
lotto <- choose(49, 6)
cat("3. Lotto 6 aus 49:", format(lotto, big.mark = "'"), "Möglichkeiten\n")
3. Lotto 6 aus 49: 13'983'816 Möglichkeiten
Code
cat("   P(6 Richtige) =", format(1/lotto, scientific = TRUE), "\n")
   P(6 Richtige) = 7.151124e-08 
Code
# 4. Vorstandswahl mit Stimmenhäufung (ungeordnet, mit Zurücklegen)
N <- 3; n <- 2  # 3 Kandidaten, 2 Stimmen
kombi_zurueck <- choose(N + n - 1, n)
cat("4. Vorstandswahl (3 Kandidaten, 2 Stimmen):", kombi_zurueck, "Möglichkeiten\n")
4. Vorstandswahl (3 Kandidaten, 2 Stimmen): 6 Möglichkeiten

Bayesianische Wahrscheinlichkeit

Der bayesianische Ansatz interpretiert Wahrscheinlichkeit als Ausdruck eines Wissenstands, der durch neue Beobachtungen aktualisiert wird. Das formale Werkzeug dafür ist die bedingte Wahrscheinlichkeit.

Definition der bedingten Wahrscheinlichkeit

Die bedingte Wahrscheinlichkeit von \(A\) unter der Bedingung \(B\) (gegeben \(B\) ist eingetreten):

\[ P(A|B) = \frac{P(A \cap B)}{P(B)} \quad \text{für } P(B) > 0 \tag{1.12} \]

Analog gilt:

\[ P(B|A) = \frac{P(A \cap B)}{P(A)} \quad \text{für } P(A) > 0 \tag{1.13} \]

Multiplikationssatz

Aus den obigen Definitionen folgt der Multiplikationssatz:

\[ P(A \cap B) = P(A|B) \cdot P(B) = P(B|A) \cdot P(A) \tag{1.14} \]

TippMerkregel

“Die Wahrscheinlichkeit, dass beide Ereignisse eintreten, ist die bedingte Wahrscheinlichkeit mal die Wahrscheinlichkeit der Bedingung.”


Satz von Bayes

\[ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} \tag{1.15} \]

WichtigSatz von Bayes – Interpretation

Der Satz ermöglicht es, die “Richtung” der Bedingung umzukehren:

  • Gegeben: \(P(B|A)\) – Wahrscheinlichkeit für \(B\), wenn \(A\) bekannt
  • Gesucht: \(P(A|B)\) – Wahrscheinlichkeit für \(A\), wenn \(B\) beobachtet

Typische Anwendung: Aus der Sensitivität eines Tests (\(P(\text{positiv}|\text{krank})\)) die Wahrscheinlichkeit berechnen, tatsächlich krank zu sein bei positivem Test (\(P(\text{krank}|\text{positiv})\)).

Schlüsselbegriffe:

  • A-priori-Wahrscheinlichkeit (prior probability) \(P(A)\): Die Wahrscheinlichkeit eines Ereignisses \(A\), bevor eine neue Information (z. B. ein Testergebnis) berücksichtigt wird. Sie spiegelt das Vorwissen wider – z.
    1. die Prävalenz einer Krankheit in der Bevölkerung.
  • Randwahrscheinlichkeit (marginal probability) \(P(B)\): Die Gesamtwahrscheinlichkeit des beobachteten Ereignisses \(B\), unabhängig davon, ob \(A\) eingetreten ist oder nicht, z.B. wie wahrscheinlich ein positives Testergebnis insgesamt ist, bei Kranken und Gesunden zusammen.

Die Randwahrscheinlichkeit ist oftmals nicht direkt bekannt, sondern lässt sich nur berechnen durch den Satz der totalen Wahrscheinlichkeit.

WichtigSatz der totalen Wahrscheinlichkeit

\[P(B) = P(B|A) \cdot P(A) + P(B|\bar{A}) \cdot P(\bar{A})\]

Liefert die Randwahrscheinlichkeit \(P(B)\) als gewichtete Summe über alle disjunkten Ursachen – z. B.:

\[P(\text{positiv}) = P(\text{pos}|\text{krank}) \cdot P(\text{krank}) + P(\text{pos}|\text{gesund}) \cdot P(\text{gesund})\] In Worten: Alle positiven Tests sind die Summe der richtig-positiven und der falsch-positiven Ergebnisse

Unabhängigkeit von Ereignissen

Zwei Ereignisse \(A\) und \(B\) heißen stochastisch unabhängig, wenn:

\[ P(A \cap B) = P(A) \cdot P(B) \tag{1.16} \]

Äquivalent: \(P(A|B) = P(A)\) und \(P(B|A) = P(B)\)

TippMerkregel

Bei Unabhängigkeit beeinflusst das Eintreten eines Ereignisses nicht die Wahrscheinlichkeit des anderen.

Beispiele: Aufeinanderfolgende Münzwürfe, Roulettespiele

Situation: 60 drogenabhängige Personen, stationär oder ambulant behandelt. 15 Personen HIV-positiv, 45 negativ. Von den HIV-positiven sind 80% in stationärer Behandlung, von den HIV-negativen nur 40%.

Code
# Gegeben:
P_B <- 15/60           # P(HIV-positiv)
P_B_bar <- 45/60       # P(HIV-negativ)
P_A_given_B <- 0.8     # P(stationär | HIV-positiv)
P_A_given_B_bar <- 0.4 # P(stationär | HIV-negativ)

# Berechnung mit Multiplikationssatz
P_A_and_B <- P_A_given_B * P_B
P_A_and_B_bar <- P_A_given_B_bar * P_B_bar
P_A <- P_A_and_B + P_A_and_B_bar

cat("P(B) = P(HIV-positiv) =", P_B, "\n")
P(B) = P(HIV-positiv) = 0.25 
Code
cat("P(A|B) = P(stationär | HIV-positiv) =", P_A_given_B, "\n")
P(A|B) = P(stationär | HIV-positiv) = 0.8 
Code
cat("P(A ∩ B) = P(A|B) · P(B) =", P_A_and_B, "\n")
P(A ∩ B) = P(A|B) · P(B) = 0.2 
Code
cat("P(A) = P(stationär) =", P_A, "\n")
P(A) = P(stationär) = 0.5 
Code
# Prüfung auf Unabhängigkeit
cat("\nPrüfung auf Unabhängigkeit:\n")

Prüfung auf Unabhängigkeit:
Code
cat("P(A) · P(B) =", P_A * P_B, "\n")
P(A) · P(B) = 0.125 
Code
cat("P(A ∩ B) =", P_A_and_B, "\n")
P(A ∩ B) = 0.2 
Code
cat("→ Da P(A)·P(B) ≠ P(A∩B), sind A und B ABHÄNGIG.\n")
→ Da P(A)·P(B) ≠ P(A∩B), sind A und B ABHÄNGIG.

Baumdiagramme

Baumdiagramme sind ein visuelles Hilfsmittel zur Berechnung von Wahrscheinlichkeiten bei mehrstufigen Zufallsexperimenten. Sie machen die Anwendung des Multiplikationssatzes und die Berechnung bedingter Wahrscheinlichkeiten anschaulich.

Beispiel für ein Baumdiagramm
WichtigDie zwei Pfadregeln

1. Pfadregel (Multiplikationsregel): Die Wahrscheinlichkeit eines Pfades ist das Produkt aller Wahrscheinlichkeiten entlang des Pfades.

\[P(A \cap B) = P(A) \cdot P(B|A)\] \[P(A \cap \bar{B}) = P(A) \cdot P(\bar{B}|A)\] \[P(\bar{A} \cap B) = P(\bar{A}) \cdot P(B|\bar{A})\] \[P(\bar{A} \cap \bar{B}) = P(\bar{A}) \cdot P(\bar{B}|\bar{A})\]

2. Pfadregel (Additionsregel): Die Wahrscheinlichkeit eines Ereignisses ist die Summe der Wahrscheinlichkeiten aller Pfade, die zu diesem Ereignis führen.

\[P(B) = P(A \cap B) + P(\bar{A} \cap B)\] \[P(\bar{B}) = P(A \cap \bar{B}) + P(\bar{A} \cap \bar{B})\] (Satz der totalen Wahrscheinlichkeit)

TippRegeln für die Anfertigung
  1. Von links nach rechts zeichnen: Start → 1. Stufe → 2. Stufe → … → Ergebnis
  2. Verzweigungen: An jedem Knoten alle möglichen Ausgänge als Äste zeichnen
  3. Beschriftung der Äste: Bedingte Wahrscheinlichkeiten \(P(\text{Ereignis}|\text{Vorgänger})\) notieren
  4. Vollständigkeit prüfen: Die Wahrscheinlichkeiten aller Äste, die von einem Knoten ausgehen, müssen sich zu 1 addieren
  5. Endergebnisse: Am Ende jedes Pfades das Produkt aller Astwahrscheinlichkeiten berechnen
  6. Kontrolle: Die Summe aller Pfadwahrscheinlichkeiten muss 1 ergeben

Vierfeldertafeln* (Spezialfall der Kontingenztabelle)

Die Vierfeldertafel ist eine alternative Darstellung zum Baumdiagramm.

\(B\) \(\bar{B}\) Summe
\(A\) \(P(A \cap B)\) \(P(A \cap \bar{B})\) \(P(A)\)
\(\bar{A}\) \(P(\bar{A} \cap B)\) \(P(\bar{A} \cap \bar{B})\) \(P(\bar{A})\)
Summe \(P(B)\) \(P(\bar{B})\) \(1\)

Beispiel: \(A\) = tatsächlich krank, \(\bar{A}\) = tatsächlich gesund, \(B\) = Test positiv, \(\bar{B}\) = Test negativ.

*Kontingenztabelle mit nur zwei kategorialen Variablen mit je zwei Ausprägungen.

TippVierfeldertafel-Anleitung Erstellung

Berechnung der Wahrscheinlichkeiten aus absoluten Häufigkeiten:

  1. Zellhäufigkeiten durch \(N\) dividieren → \(P(A \cap B)\), \(P(A \cap \bar{B})\), …
  2. Zeilensummen durch \(N\) dividieren → Randwahrscheinlichkeiten \(P(A)\), \(P(\bar{A})\)
  3. Spaltensummen durch \(N\) dividieren → Randwahrscheinlichkeiten \(P(B)\), \(P(\bar{B})\)
  4. Bedingte Wahrscheinlichkeit: Zellhäufigkeit durch zugehörige Randhäufigkeit → \(P(A|B) = \dfrac{P(A \cap B)}{P(B)}\)

Diagnostische Tests: Sensitivität und Spezifität

Vierfeldertafel

Test positiv (\(B\)) Test negativ (\(\bar{B}\)) Summe
Tatsächlich krank (\(A\)) \(rp\) (richtig-positiv) \(fn\) (falsch-negativ) \(rp + fn\)
Tatsächlich gesund (\(\bar{A}\)) \(fp\) (falsch-positiv) \(rn\) (richtig-negativ) \(fp + rn\)
Summe \(rp + fp\) \(fn + rn\) \(N\)

Gütemasse

Sensitivität (Trefferrate)

\[ \text{Sensitivität} = P(B|A) = \frac{rp}{rp + fn} \]

Wahrscheinlichkeit, dass Kranke als krank erkannt werden.

Spezifität

\[ \text{Spezifität} = P(\bar{B}|\bar{A}) = \frac{rn}{fp + rn} \]

Wahrscheinlichkeit, dass Gesunde als gesund erkannt werden.

Fehlalarmrate

\[ \text{Fehlalarmrate} = \frac{fp}{fp + rn} = 1 - \text{Spezifität} \]

Wahrscheinlichkeit, dass Gesunde fälschlich als krank eingestuft werden.

WarnungAchtung: Prävalenz beachten!

Hohe Sensitivität und Spezifität garantieren nicht die Zuverlässigkeit eines Tests!

Bei niedriger Prävalenz (Anteil der Kranken in der Population) kann selbst ein Test mit 99% Sensitivität und 99% Spezifität eine hohe Fehlalarmquote haben.

Situation: Massenscreening mit 100’000 Personen. Prävalenz = 1%, Sensitivität = 99%, Spezifität = 99%.

Analytische Berechnung:

Aus den gegebenen Werten berechnen wir die Zellhäufigkeiten:

  • Anzahl Kranke: \(N \cdot \text{Prävalenz} = 100'000 \cdot 0{,}01 = 1'000\)
  • Anzahl Gesunde: \(N \cdot (1 - \text{Prävalenz}) = 100'000 \cdot 0{,}99 = 99'000\)

Aus Sensitivität und Spezifität folgt:

  • \(rp = \text{Kranke} \cdot \text{Sensitivität} = 1'000 \cdot 0{,}99 = 990\)
  • \(fn = \text{Kranke} \cdot (1 - \text{Sensitivität}) = 1'000 \cdot 0{,}01 = 10\)
  • \(rn = \text{Gesunde} \cdot \text{Spezifität} = 99'000 \cdot 0{,}99 = 98'010\)
  • \(fp = \text{Gesunde} \cdot (1 - \text{Spezifität}) = 99'000 \cdot 0{,}01 = 990\)

Wahrscheinlichkeit, bei positivem Test tatsächlich krank zu sein (Bayes):

\[P(\text{krank} | \text{Test+}) = \frac{rp}{rp + fp} = \frac{990}{990 + 990} = \frac{990}{1'980} = 0{,}50\]

Interpretation: Trotz 99% Sensitivität und 99% Spezifität sind nur 50% der positiv Getesteten tatsächlich krank – jeder zweite positive Befund ist ein Fehlalarm!


VorsichtR-Cheatsheet: Kombinatorik
Funktion Syntax Bedeutung
factorial factorial(n) \(n!\) — Fakultät
choose choose(N, n) \(\binom{N}{n}\) — Binomialkoeffizient
sample sample(x, n, replace) Zufallsstichprobe / Simulation
Code
# ── Kombinatorik ──────────────────────────────────────────────
factorial(n)
choose(N, n)
factorial(N) / factorial(N - n)
N^n
sample(1:6, 1)
sample(1:6, 2, replace = TRUE)
1 / choose(49, 6)
1
\(n!\) — Fakultät
2
\(\binom{N}{n}\) — Ziehen ohne Zurücklegen, ohne Reihenfolge
3
\(\frac{N!}{(N-n)!}\) — Ziehen ohne Zurücklegen, mit Reihenfolge
4
\(N^n\) — Ziehen mit Zurücklegen, mit Reihenfolge
5
Einmaliges Würfeln (Simulation)
6
Zweimal würfeln mit Zurücklegen
7
P(6 Richtige Lotto) = \(\frac{1}{\binom{49}{6}}\)

Zufallsvariablen und ihre Eigenschaften

Definition

Eine Zufallsvariable \(X\) ist eine Abbildung, die jedem möglichen Ergebnis eines Zufallsvorgangs eine reelle Zahl zuordnet. Je nachdem, welche Werte \(X\) annehmen kann, unterscheiden wir:

  • Diskrete Zufallsvariable: Die Menge der möglichen Ausprägungen ist endlich oder abzählbar unendlich (z. B. Anzahl der Sechsen beim Würfeln, Anzahl Defekte in einer Charge).
  • Stetige Zufallsvariable: Die möglichen Ausprägungen füllen ein ganzes Intervall aus (z. B. Körpergröße, Wartezeit, Temperatur).

Wahrscheinlichkeitsfunktion und Dichtefunktion

WichtigDefinition: Wahrscheinlichkeitsfunktion (diskret)

Diskrete Zufallsvariable \(X\): Die Wahrscheinlichkeitsfunktion \(f(x)\) ordnet jedem möglichen Wert seine Eintrittswahrscheinlichkeit zu.

\[f(x) = P(X = x), \qquad \sum_{x} f(x) = 1\]

WichtigDefinition: Dichtefunktion (stetig)

Stetige Zufallsvariable \(X\): Die Dichtefunktion \(f(x)\) beschreibt die relative Wahrscheinlichkeitsdichte. Wahrscheinlichkeiten werden als Flächen berechnet.

\[P(a \leq X \leq b) = \int_a^b f(x)\, dx, \qquad \int_{-\infty}^{\infty} f(x)\, dx = 1\]

Hinweis: \(P(X = x) = 0\) für jeden einzelnen Wert — nur Intervalle haben positive Wahrscheinlichkeit.

Verteilungsfunktion

WichtigDefinition: Verteilungsfunktion F(x)

Für jede Zufallsvariable \(X\) (diskret oder stetig):

\[F(x) := P(X \leq x)\]

Eigenschaften:

Eigenschaft Aussage
Monotonie \(x_1 < x_2 \Rightarrow F(x_1) \leq F(x_2)\)
Grenzwerte \(F(-\infty) = 0\), \(F(+\infty) = 1\)
Rechtsseitig stetig \(\lim_{h \downarrow 0} F(x+h) = F(x)\)
Intervallwahrscheinlichkeit \(P(a < X \leq b) = F(b) - F(a)\)

Erwartungswert und Varianz

WichtigDefinition: Erwartungswert E[X]

\[E[X] = \begin{cases} \displaystyle\sum_x x \cdot f(x) & \text{diskret} \\[8pt] \displaystyle\int_{-\infty}^{\infty} x \cdot f(x)\, dx & \text{stetig} \end{cases}\]

Interpretation: Theoretisches Zentrum der Verteilung — langfristiger Durchschnitt bei unendlich vielen Wiederholungen.

WichtigDefinition: Varianz Var(X) und Standardabweichung σ

\[\text{Var}(X) = E\!\left[(X - E[X])^2\right] = E[X^2] - (E[X])^2, \qquad \sigma = \sqrt{\text{Var}(X)}\]

Rechenregeln:

Regel Formel
Verschiebung \(\text{Var}(X + c) = \text{Var}(X)\)
Skalierung \(\text{Var}(a \cdot X) = a^2 \cdot \text{Var}(X)\)
Unabhängige ZV \(\text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y)\)
TippMerkregel: Empirische vs. theoretische Kenngrößen

\(\bar{x}\) und \(s^2\) sind Schätzer für \(\mu\) und \(\sigma^2\). Je grösser die Stichprobe, desto genauer die Annäherung — Gesetz der grossen Zahlen.

VorsichtR-Cheatsheet: Kenngrößen von Zufallsvariablen
R-Funktion Bedeutung Hinweis
mean(x) Schätzer für \(E[X]\)
var(x) Stichprobenvarianz \(s^2\) Teilt durch \(n-1\)
sd(x) Standardabweichung \(s\) \(= \sqrt{\texttt{var(x)}}\)
summary(x) Min, Q1, Median, Mean, Q3, Max Schnellübersicht
after_stat(density) Histogramm als Dichte in ggplot2 Für Vergleich mit stat_function()
stat_ecdf() Empirische Verteilungsfunktion In ggplot2-Pipeline
stat_function() Theoretische Kurve überlagern fun = dnorm/pnorm, args = list(...)
Code
x <- rnorm(10000, mean = 5, sd = 2)
mean(x); var(x); sd(x)
ggplot(tibble(x), aes(x)) +
  geom_histogram(aes(y = after_stat(density)), bins = 40,
                 fill = "steelblue", alpha = 0.7, color = "white") +
  stat_function(fun = dnorm, args = list(mean = 5, sd = 2),
                color = "firebrick", linewidth = 1) +
  theme_minimal()
ggplot(tibble(x), aes(x)) +
  stat_ecdf(color = "steelblue", linewidth = 0.9, pad = FALSE) +
  stat_function(fun = pnorm, args = list(mean = 5, sd = 2),
                color = "firebrick", linetype = "dashed", linewidth = 1) +
  theme_minimal()
1
Schätzer für E[X], Var(X), σ
2
Histogramm als Dichte + theoretische Dichtekurve
3
Empirische Verteilungsfunktion + theoretische VF
VorsichtR-Cheatsheet: Abschnittsweise definierte Wahrscheinlichkeits- und Dichtefunktionen plotten

Aufgaben verlangen oft, eine abschnittsweise definierte \(f(x)\) oder \(F(x)\) zu plotten. Das Muster ist immer gleich: Funktion als R-Funktion mit ifelse() oder case_when() definieren, dann mit stat_function() oder über ein tibble darstellen.

Diskret — Wahrscheinlichkeitsfunktion als Stabdiagramm:

Code
# Beispiel: X nimmt Werte 1,2,3,4 mit P(X=x) = x/10
f_x <- function(x) x / 10      # Wahrscheinlichkeitsfunktion
F_x <- function(x) cumsum(f_x(1:4))[x]  # Verteilungsfunktion

df <- tibble(x = 1:4, f = f_x(x), F = F_x(x))

# Wahrscheinlichkeitsfunktion (Stabdiagramm)
ggplot(df, aes(x = factor(x), y = f)) +
  geom_col(width = 0.1, fill = "steelblue") +
  geom_point(size = 4, color = "steelblue") +
  labs(title = "Wahrscheinlichkeitsfunktion f(x)",
       x = "x", y = "P(X = x)") +
  theme_minimal()

# Verteilungsfunktion (Treppenfunktion)
ggplot(df, aes(x = x, y = F)) +
  geom_step(color = "steelblue", linewidth = 1) +
  geom_point(size = 3, color = "steelblue") +             # geschlossene Punkte
  geom_point(aes(x = x + 0.0001), shape = 1, size = 3,   # offene Punkte rechts
             color = "steelblue") +
  scale_x_continuous(breaks = 1:4, limits = c(0, 5)) +
  labs(title = "Verteilungsfunktion F(x)", x = "x", y = "F(x)") +
  theme_minimal()

Stetig — Dichtefunktion und Verteilungsfunktion mit stat_function():

Code
# Beispiel: f(x) = 2x für 0 <= x <= 1, sonst 0
f_x <- function(x) ifelse(x >= 0 & x <= 1, 2 * x, 0)
F_x <- function(x) ifelse(x < 0, 0, ifelse(x <= 1, x^2, 1))

# Dichtefunktion
ggplot() +
  stat_function(fun = f_x, xlim = c(-0.5, 1.5),
                geom = "area", fill = "steelblue", alpha = 0.3) +
  stat_function(fun = f_x, xlim = c(-0.5, 1.5),
                color = "steelblue", linewidth = 1) +
  labs(title = "Dichtefunktion f(x)", x = "x", y = "f(x)") +
  theme_minimal()

# Verteilungsfunktion
ggplot() +
  stat_function(fun = F_x, xlim = c(-0.5, 1.5),
                color = "steelblue", linewidth = 1) +
  labs(title = "Verteilungsfunktion F(x)", x = "x", y = "F(x)") +
  theme_minimal()

# Wahrscheinlichkeit P(a <= X <= b) als Fläche markieren
a <- 0.3; b <- 0.7
ggplot() +
  stat_function(fun = f_x, xlim = c(-0.5, 1.5),
                color = "steelblue", linewidth = 1) +
  stat_function(fun = f_x, xlim = c(a, b),       # Fläche P(a <= X <= b)
                geom = "area", fill = "firebrick", alpha = 0.4) +
  annotate("text", x = (a + b) / 2, y = 0.3,
           label = paste0("P(", a, " ≤ X ≤ ", b, ")"),
           color = "firebrick", size = 3.5) +
  labs(title = "Dichtefunktion mit markierter Wahrscheinlichkeit",
       x = "x", y = "f(x)") +
  theme_minimal()

Mehrere Abschnitte mit case_when():

Code
# f(x) = x       für 0 <= x < 1
#       = 2 - x  für 1 <= x <= 2
#       = 0      sonst          (Dreieckverteilung)
f_x <- function(x) case_when(
  x >= 0 & x < 1  ~ x,
  x >= 1 & x <= 2 ~ 2 - x,
  .default         = 0
)

ggplot() +
  stat_function(fun = f_x, xlim = c(-0.5, 2.5),
                color = "steelblue", linewidth = 1) +
  stat_function(fun = f_x, xlim = c(0, 2),
                geom = "area", fill = "steelblue", alpha = 0.2) +
  labs(title = "Dreieckverteilung — abschnittsweise Dichtefunktion",
       x = "x", y = "f(x)") +
  theme_minimal()

Visualisierung: Histogramm und empirische Verteilungsfunktion

Zwei Grafiken sind beim Arbeiten mit Zufallsvariablen besonders zentral: das Histogramm zur Visualisierung der Dichtestruktur und die empirische Verteilungsfunktion (ECDF) als Pendant zur theoretischen Verteilungsfunktion \(F(x)\). Beide lassen sich direkt mit der theoretischen Kurve überlagern — so wird die Qualität der Modellanpassung sofort sichtbar.

Code
set.seed(42)
n   <- 500
mu  <- 5
sig <- 2
x   <- rnorm(n, mean = mu, sd = sig)
df  <- tibble(x = x)

# ── Histogramm mit überlagerter Dichtekurve ──────────────────────────────
p_hist <- ggplot(df, aes(x)) +
  geom_histogram(aes(y = after_stat(density)), bins = 30,
                 fill = "steelblue", alpha = 0.7, color = "white") +
  stat_function(fun  = dnorm,
                args = list(mean = mu, sd = sig),
                color = "firebrick", linewidth = 1.1) +
  labs(title    = paste0("Histogramm (n = ", n, ")"),
       subtitle = "Rote Kurve: theoretische Dichte N(5, 4)",
       x = "x", y = "Dichte") +
  theme_minimal()

# ── Empirische Verteilungsfunktion + theoretische VF ─────────────────────
p_ecdf <- ggplot(df, aes(x)) +
  stat_ecdf(color = "steelblue", linewidth = 0.9,
            pad = FALSE) +
  stat_function(fun  = pnorm,
                args = list(mean = mu, sd = sig),
                color    = "firebrick",
                linetype = "dashed",
                linewidth = 1.1) +
  labs(title    = paste0("Empirische Verteilungsfunktion (n = ", n, ")"),
       subtitle = "Rote gestrichelte Kurve: theoretische VF N(5, 4)",
       x = "x", y = expression(F[n](x))) +
  theme_minimal()

# ── Nebeneinander ausgeben ────────────────────────────────────────────────
library(patchwork)
p_hist + p_ecdf

HinweisTheorie-Check

Die empirische Verteilungsfunktion \(F_n(x) = \frac{1}{n}\sum_{i=1}^n \mathbf{1}(x_i \leq x)\) konvergiert nach dem Satz von Glivenko-Cantelli gleichmässig gegen die theoretische \(F(x)\) — der maximale Abstand \(\sup_x |F_n(x) - F(x)|\) geht mit wachsendem \(n\) gegen 0.


Empirische und theoretische Verteilungen — Vergleich

Ein wesentliches Ziel der Statistik ist es, theoretische Modelle zu finden, die empirische Daten gut beschreiben. Tabelle 1 zeigt die strukturellen Analogien zwischen beiden Welten.

Analogien zwischen empirischen und theoretischen Verteilungen (nach Mittag, Tab. 11.6)
Beschreibende Statistik Wahrscheinlichkeitsrechnung
Menge aller Merkmalsträger Menge möglicher Ausprägungen einer ZV
Relative Häufigkeiten \(h_j\) Wahrscheinlichkeitsfunktion \(f(x)\)
Empirische Verteilungsfunktion \(F_n(x)\) Theoretische Verteilungsfunktion \(F(x)\)
Mittelwert \(\bar{x}\) Erwartungswert \(\mu = E[X]\)
Empirische Varianz \(s^2\) Theoretische Varianz \(\sigma^2 = \text{Var}(X)\)
Empirische Quantile Theoretische Quantile

Das folgende Beispiel illustriert den Übergang: Wir simulieren 1 000 Würfe eines fairen Würfels und vergleichen die empirische Häufigkeitsverteilung mit der theoretischen Gleichverteilung.

Code
set.seed(42)
n <- 1000
wuerfe <- sample(1:6, n, replace = TRUE)
emp_df <- as.data.frame(table(wuerfe)) |>
  mutate(wuerfe = as.integer(as.character(wuerfe)),
         rel_haeufigkeit = Freq / n,
         typ = "Empirisch")
theo_df <- data.frame(
  wuerfe = 1:6,
  rel_haeufigkeit = 1/6,
  typ = "Theoretisch (1/6)"
)
ggplot(emp_df, aes(x = factor(wuerfe), y = rel_haeufigkeit)) +
  geom_col(fill = "steelblue", alpha = 0.7, width = 0.6) +
  geom_hline(yintercept = 1/6, color = "firebrick", linewidth = 1.2,
             linetype = "dashed") +
  annotate("text", x = 6.3, y = 1/6 + 0.005,
           label = "Theoretisch (1/6)", color = "firebrick", size = 3.5) +
  labs(title = paste0("Empirische Häufigkeiten nach ", n, " Würfen"),
       subtitle = "Rote Linie: theoretische Gleichverteilung",
       x = "Augenzahl", y = "Relative Häufigkeit") +
  theme_minimal()

Mit wachsendem \(n\) gleicht sich die empirische Verteilung der theoretischen immer stärker an. Dieses Phänomen ist das Gesetz der großen Zahlen in Aktion.


Diskrete Verteilungen

Übersicht der R-Funktionen

Für jede Verteilung stellt R vier Standardfunktionen bereit, die einem einheitlichen Namensschema folgen:

Einheitliches R-Schema für alle Verteilungen
Funktion Bedeutung Beispiel (Binomial)
d___() Wahrscheinlichkeitsfunktion / Dichte: \(P(X = x)\) dbinom(x, n, p)
p___() Verteilungsfunktion: \(P(X \leq x)\) pbinom(x, n, p)
q___() Quantilsfunktion: kleinster Wert \(x\) mit \(F(x) \geq p\) qbinom(p, n, p)
r___() Zufallszahlen aus der Verteilung rbinom(n, size, p)

Binomialverteilung \(B(n, p)\)

Definition und Kenngrößen

WichtigDefinition: Binomialverteilung B(n, p)

Notation: \(X \sim B(n, p)\)

Voraussetzungen: \(n\) unabhängige Bernoulli-Versuche; jeder Versuch hat Erfolgswahrscheinlichkeit \(p\).

Parameter: - \(n \in \mathbb{N}\): Anzahl der Versuche — Träger: \(x \in \{0, 1, \ldots, n\}\) - \(p \in [0, 1]\): Erfolgswahrscheinlichkeit je Versuch

Wahrscheinlichkeitsfunktion: \[f(x) = P(X = x) = \binom{n}{x} p^x (1-p)^{n-x}\]

Kenngrößen:

Formel
\(E[X]\) \(n \cdot p\)
\(\text{Var}(X)\) \(n \cdot p \cdot (1-p)\)
\(\sigma\) \(\sqrt{n \cdot p \cdot (1-p)}\)

Visualisierung

Code
tibble(x = 0:15) |>
  mutate(
    `B(15, 0.3)` = dbinom(x, 15, 0.3),
    `B(15, 0.5)` = dbinom(x, 15, 0.5),
    `B(15, 0.7)` = dbinom(x, 15, 0.7)
  ) |>
  pivot_longer(-x, names_to = "Verteilung", values_to = "P") |>
  ggplot(aes(x = factor(x), y = P, fill = Verteilung)) +
  geom_col(position = "dodge", alpha = 0.85) +
  scale_fill_manual(values = c("steelblue", "skyblue", "grey60")) +
  labs(title = "Binomialverteilung B(15, p) für verschiedene p",
       x = "x", y = "P(X = x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Qualitätskontrolle

Eine Fertigungslinie produziert Bauteile, von denen erfahrungsgemäß 8 % fehlerhaft sind. Eine Stichprobe von 20 Bauteilen wird entnommen. Wie gross ist die Wahrscheinlichkeit, dass genau 2 fehlerhafte Teile gefunden werden? Und dass höchstens 2 defekt sind?

Code
n <- 20; p <- 0.08

# P(X = 2)
p_genau2 <- dbinom(2, size = n, prob = p)
cat("P(X = 2)   =", round(p_genau2, 4), "\n")
P(X = 2)   = 0.2711 
Code
# P(X <= 2)
p_hoechstens2 <- pbinom(2, size = n, prob = p)
cat("P(X <= 2)  =", round(p_hoechstens2, 4), "\n")
P(X <= 2)  = 0.7879 
Code
# Erwartungswert und Standardabweichung
cat("E[X]  =", n * p, "\n")
E[X]  = 1.6 
Code
cat("SD(X) =", round(sqrt(n * p * (1 - p)), 3), "\n")
SD(X) = 1.213 

Anwendungsbeispiel 2 — Münzwurf-Experiment

Eine Münze wird 30-mal geworfen. Wie gross ist die Wahrscheinlichkeit, mindestens 18-mal „Kopf” zu erhalten? Visualisieren Sie die Verteilung und markieren Sie den kritischen Bereich.

Code
n <- 30; p <- 0.5
p_mindestens18 <- 1 - pbinom(17, size = n, prob = p)
cat("P(X >= 18) =", round(p_mindestens18, 4), "\n")
P(X >= 18) = 0.1808 
Code
tibble(x = 0:30,
       prob = dbinom(x, n, p),
       bereich = ifelse(x >= 18, "≥ 18 (Kopf dominiert)", "< 18")) |>
  ggplot(aes(x = factor(x), y = prob, fill = bereich)) +
  geom_col(alpha = 0.85) +
  scale_fill_manual(values = c("steelblue", "firebrick")) +
  labs(title = "B(30, 0.5) — Wahrscheinlichkeit für mindestens 18 Köpfe",
       x = "Anzahl Köpfe", y = "P(X = x)", fill = "") +
  theme_minimal() +
  theme(axis.text.x = element_text(size = 7))


R-Cheatsheet

VorsichtR-Cheatsheet: Binomialverteilung
Funktion Syntax Bedeutung
dbinom dbinom(x, size, prob) \(P(X = x)\) — Wahrscheinlichkeitsfunktion
pbinom pbinom(q, size, prob) \(P(X \leq q)\) — Verteilungsfunktion
qbinom qbinom(p, size, prob) Quantil: kleinster Wert mit \(F(x) \geq p\)
rbinom rbinom(n, size, prob) \(n\) Zufallszahlen
Code
# X ~ B(20, 0.4)
dbinom(6, size = 20, prob = 0.4)
pbinom(8, size = 20, prob = 0.4)
1 - pbinom(9, size = 20, prob = 0.4)
pbinom(10,size=20,prob=0.4) - pbinom(4,size=20,prob=0.4)
qbinom(0.95, size = 20, prob = 0.4)
rbinom(10,   size = 20, prob = 0.4)
1
P(X = 6)
2
P(X ≤ 8)
3
P(X > 9)
4
P(5 ≤ X ≤ 10)
5
95%-Quantil
6
10 Zufallszahlen simulieren
Code
# d: Wahrscheinlichkeit P(X = 3) bei B(10, 0.4)
dbinom(3, size = 10, prob = 0.4)
[1] 0.2149908
Code
# p: kumulierte Wahrscheinlichkeit P(X <= 4) bei B(10, 0.4)
pbinom(4, size = 10, prob = 0.4)
[1] 0.6331033
Code
# q: 90%-Quantil der B(10, 0.4)
qbinom(0.90, size = 10, prob = 0.4)
[1] 6
Code
# r: 8 Zufallszahlen aus B(10, 0.4)
rbinom(8, size = 10, prob = 0.4)
[1] 2 4 2 3 0 5 5 2

Diskrete Gleichverteilung \(U_d\{a, \ldots, b\}\)

Definition und Kenngrößen

WichtigDefinition: Diskrete Gleichverteilung U_d{1, …, k}

Notation: \(X \sim U_d\{1, \ldots, k\}\)

Voraussetzungen: Alle \(k\) Ausprägungen sind gleich wahrscheinlich (z. B. fairer Würfel, Roulette).

Parameter: - \(k \in \mathbb{N}\): Anzahl gleichwahrscheinlicher Ausprägungen — Träger: \(x \in \{1, 2, \ldots, k\}\)

Wahrscheinlichkeitsfunktion: \[f(x) = P(X = x) = \frac{1}{k}\]

Kenngrößen:

Formel
\(E[X]\) \(\dfrac{k+1}{2}\)
\(\text{Var}(X)\) \(\dfrac{k^2 - 1}{12}\)
\(\sigma\) \(\sqrt{\dfrac{k^2-1}{12}}\)

Visualisierung

Code
k <- 6
tibble(x = 1:k, prob = 1/k) |>
  ggplot(aes(x = factor(x), y = prob)) +
  geom_col(fill = "steelblue", width = 0.6, alpha = 0.85) +
  geom_hline(yintercept = 1/k, linetype = "dashed", color = "grey40") +
  labs(title = "Diskrete Gleichverteilung (k = 6, Würfel)",
       x = "Augenzahl", y = "P(X = x)") +
  scale_y_continuous(limits = c(0, 0.25)) +
  theme_minimal()

Anwendungsbeispiel 1 — Lottozahlen

Beim Lotto werden Zahlen von 1 bis 45 gezogen. Modellieren Sie eine einzelne Ziehung als diskrete Gleichverteilung. Wie gross ist die Wahrscheinlichkeit, eine Zahl ≤ 10 zu ziehen?

Code
k <- 45
p_kleiner_10 <- 10 / k
cat("P(X <= 10) =", round(p_kleiner_10, 4), "\n")
P(X <= 10) = 0.2222 
Code
cat("E[X] =", (k + 1) / 2, "\n")
E[X] = 23 
Code
cat("Var(X) =", round((k^2 - 1) / 12, 2), "\n")
Var(X) = 168.67 

Anwendungsbeispiel 2 — Simulation und Konvergenz

Simulieren Sie 10 000 Würfelwürfe. Zeigen Sie, wie die empirische Häufigkeit der Augenzahl 6 gegen den theoretischen Wert 1/6 konvergiert.

Code
set.seed(123)
n <- 10000
wuerfe <- sample(1:6, n, replace = TRUE)
kum_haeufigkeit <- cumsum(wuerfe == 6) / seq_along(wuerfe)

tibble(wurf = 1:n, rel_haeuf = kum_haeufigkeit) |>
  filter(wurf %% 10 == 0) |>
  ggplot(aes(x = wurf, y = rel_haeuf)) +
  geom_line(color = "steelblue") +
  geom_hline(yintercept = 1/6, color = "firebrick", linetype = "dashed") +
  annotate("text", x = 8500, y = 1/6 + 0.01, label = "1/6 ≈ 0.167",
           color = "firebrick", size = 3.5) +
  labs(title = "Konvergenz der rel. Häufigkeit (Augenzahl 6) gegen 1/6",
       x = "Anzahl Würfe", y = "Kumulative relative Häufigkeit") +
  theme_minimal()


R-Cheatsheet

VorsichtR-Cheatsheet: Diskrete Gleichverteilung
Funktion R-Code Bedeutung
Dichte \(f(x)\) ifelse(x %in% 1:k, 1/k, 0) \(P(X=x) = 1/k\)
Vert.-Fkt. \(F(x)\) pmin(pmax(floor(x),0),k)/k Kumuliert
Quantil ceiling(p * k) Kleinster Wert mit \(F \geq p\)
Simulation sample(1:k, n, replace=TRUE) \(n\) Zufallszahlen
Code
k <- 6  # Würfel
1/k
4/k
1 - 4/k
ceiling(0.75 * k)
sample(1:k, size = 10, replace = TRUE)
1
P(X = x) — gleich für alle x
2
P(X ≤ 4)
3
P(X > 4)
4
75%-Quantil
5
10 Zufallszahlen simulieren
Code
k <- 6  # Würfel

# d: P(X = x) = 1/k für alle x
f_x <- function(x, k) ifelse(x %in% 1:k, 1/k, 0)
f_x(3, k)
[1] 0.1666667
Code
# p: P(X <= x)
F_x <- function(x, k) pmin(pmax(floor(x), 0), k) / k
F_x(4, k)
[1] 0.6666667
Code
# q: Quantil
q_x <- function(prob, k) ceiling(prob * k)
q_x(0.75, k)
[1] 5
Code
# r: Zufallszahlen
sample(1:k, size = 10, replace = TRUE)
 [1] 2 5 2 3 6 4 5 3 3 4

Poisson-Verteilung \(\text{Pois}(\lambda)\)

Definition und Kenngrößen

WichtigDefinition: Poisson-Verteilung Pois(λ)

Notation: \(X \sim \text{Pois}(\lambda)\)

Voraussetzungen: Seltene, unabhängige Ereignisse mit konstanter Rate \(\lambda\) in einem festen Intervall (Zeit, Fläche, Volumen).

Parameter: - \(\lambda > 0\): mittlere Ereignisrate im Intervall — Träger: \(x \in \{0, 1, 2, \ldots\}\)

Wahrscheinlichkeitsfunktion: \[f(x) = P(X = x) = \frac{\lambda^x \, e^{-\lambda}}{x!}\]

Kenngrößen:

Formel
\(E[X]\) \(\lambda\)
\(\text{Var}(X)\) \(\lambda\)
\(\sigma\) \(\sqrt{\lambda}\)
TippMerkregel: Poisson-Dispersion

Ein charakteristisches Merkmal der Poisson-Verteilung: Erwartungswert und Varianz sind gleich (\(E[X] = \text{Var}(X) = \lambda\)). Weicht in realen Daten die empirische Varianz stark von \(\bar{x}\) ab, deutet dies auf Über- oder Unterdispersion hin — die Poisson-Annahme wäre dann verletzt.

Visualisierung

Code
tibble(x = 0:15) |>
  mutate(
    `λ = 1`   = dpois(x, 1),
    `λ = 3`   = dpois(x, 3),
    `λ = 7`   = dpois(x, 7)
  ) |>
  pivot_longer(-x, names_to = "Parameter", values_to = "P") |>
  ggplot(aes(x = x, y = P, color = Parameter, shape = Parameter)) +
  geom_line(linewidth = 0.8) +
  geom_point(size = 2) +
  scale_color_manual(values = c("steelblue", "skyblue", "grey40")) +
  labs(title = "Poisson-Verteilung für verschiedene λ",
       x = "x", y = "P(X = x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Anrufe im Call-Center

In einem Call-Center gehen durchschnittlich 4 Anrufe pro Minute ein. Wie gross ist die Wahrscheinlichkeit, dass in einer Minute genau 6 Anrufe eingehen? Und mehr als 7?

Code
lambda <- 4

cat("P(X = 6)   =", round(dpois(6, lambda), 4), "\n")
P(X = 6)   = 0.1042 
Code
cat("P(X > 7)   =", round(1 - ppois(7, lambda), 4), "\n")
P(X > 7)   = 0.0511 
Code
cat("E[X]       =", lambda, "\n")
E[X]       = 4 
Code
cat("SD(X)      =", round(sqrt(lambda), 4), "\n")
SD(X)      = 2 

Anwendungsbeispiel 2 — Radioaktiver Zerfall

Ein radioaktives Präparat emittiert im Mittel 2.5 Partikel pro Sekunde. Visualisieren Sie die Verteilung und berechnen Sie ein zentrales 95%-Schwankungsintervall.

Code
lambda <- 2.5
unt <- qpois(0.025, lambda)
ob  <- qpois(0.975, lambda)
cat("Zentrales 95%-Schwankungsintervall: [", unt, ",", ob, "]\n")
Zentrales 95%-Schwankungsintervall: [ 0 , 6 ]
Code
tibble(x = 0:10,
       prob = dpois(x, lambda),
       insi = ifelse(x >= unt & x <= ob, "Intervall", "außerhalb")) |>
  ggplot(aes(x = factor(x), y = prob, fill = insi)) +
  geom_col(alpha = 0.85) +
  scale_fill_manual(values = c("lightblue", "steelblue")) +
  labs(title = paste0("Pois(2.5) — 95%-Schwankungsintervall [", unt, ", ", ob, "]"),
       x = "x", y = "P(X = x)", fill = "") +
  theme_minimal()


R-Cheatsheet

VorsichtR-Cheatsheet: Poisson-Verteilung
Funktion Syntax Bedeutung
dpois dpois(x, lambda) \(P(X = x) = \frac{\lambda^x e^{-\lambda}}{x!}\)
ppois ppois(q, lambda) \(P(X \leq q)\)
qpois qpois(p, lambda) Quantil
rpois rpois(n, lambda) \(n\) Zufallszahlen
Code
# X ~ Pois(3.5)
dpois(4, lambda = 3.5)
ppois(5, lambda = 3.5)
1 - ppois(5, lambda = 3.5)
ppois(7,lambda=3.5) - ppois(2,lambda=3.5)
qpois(0.95, lambda = 3.5)
rpois(10, lambda = 3.5)
1
P(X = 4)
2
P(X ≤ 5)
3
P(X > 5)
4
P(3 ≤ X ≤ 7)
5
95%-Quantil
6
10 Zufallszahlen simulieren
Code
lambda <- 3.5

# d: P(X = 4)
dpois(4, lambda = lambda)
[1] 0.1888123
Code
# p: P(X <= 5)
ppois(5, lambda = lambda)
[1] 0.8576136
Code
# q: 95%-Quantil
qpois(0.95, lambda = lambda)
[1] 7
Code
# r: 10 Zufallszahlen
rpois(10, lambda = lambda)
 [1] 4 5 5 7 9 2 2 2 3 2

Hypergeometrische Verteilung \(H(N, M, n)\)

Definition und Kenngrößen

WichtigDefinition: Hypergeometrische Verteilung H(N, M, n)

Notation: \(X \sim H(N, M, n)\)

Voraussetzungen: Ziehen von \(n\) Elementen ohne Zurücklegen aus einer endlichen Grundgesamtheit der Grösse \(N\), davon \(M\) Treffer.

Parameter: - \(N\): Grundgesamtheitsgrösse - \(M\): Anzahl Treffer in der Grundgesamtheit - \(n\): Stichprobenumfang — Träger: \(x \in \{\max(0,\, n{+}M{-}N), \ldots, \min(n,M)\}\)

Wahrscheinlichkeitsfunktion: \[f(x) = P(X = x) = \frac{\binom{M}{x}\binom{N-M}{n-x}}{\binom{N}{n}}\]

Kenngrößen:

Formel
\(E[X]\) \(n \cdot \dfrac{M}{N}\)
\(\text{Var}(X)\) \(n \cdot \dfrac{M}{N} \cdot \dfrac{N-M}{N} \cdot \underbrace{\dfrac{N-n}{N-1}}_{\text{Korrekturfaktor}}\)

Der Korrekturfaktor \(\dfrac{N-n}{N-1}\) entfällt näherungsweise, wenn \(n \ll N\) — dann nähert sich die hypergeometrische der Binomialverteilung an.

Visualisierung

Code
# Lotto 6 aus 45: N=45, M=6 Gewinnzahlen, n=6 gezogen
tibble(x = 0:6,
       prob = dhyper(x, m = 6, n = 39, k = 6)) |>
  ggplot(aes(x = factor(x), y = prob)) +
  geom_col(fill = "steelblue", width = 0.6, alpha = 0.85) +
  labs(title = "Hypergeom. Verteilung: Lotto 6 aus 45",
       subtitle = "Anzahl Richtige beim Ziehen von 6 aus 45 (6 Gewinnnummern)",
       x = "Anzahl Richtige", y = "P(X = x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Lotto 6 aus 45

Beim Schweizer Lotto werden 6 Zahlen aus 45 gezogen. Berechnen Sie die Wahrscheinlichkeit für 0 bis 6 Richtige, wenn man 6 Zahlen tippt.

Code
N <- 45; M <- 6; n <- 6

for (x in 0:6) {
  p <- dhyper(x, m = M, n = N - M, k = n)
  cat("P(X =", x, ") =", formatC(p, digits = 8, format = "f"), "\n")
}
P(X = 0 ) = 0.40056464 
P(X = 1 ) = 0.42412726 
P(X = 2 ) = 0.15147402 
P(X = 3 ) = 0.02244060 
P(X = 4 ) = 0.00136463 
P(X = 5 ) = 0.00002873 
P(X = 6 ) = 0.00000012 

Anwendungsbeispiel 2 — Wareneingangskontrollen

Eine Lieferung enthält 100 Teile, davon sind 10 defekt. Es werden 15 Teile zufällig geprüft. Wie gross ist die Wahrscheinlichkeit, mindestens 3 defekte Teile zu finden?

Code
N <- 100; M <- 10; n <- 15

p_mind3 <- 1 - phyper(2, m = M, n = N - M, k = n)
cat("P(X >= 3) =", round(p_mind3, 4), "\n")
P(X >= 3) = 0.1705 
Code
cat("E[X]      =", round(n * M / N, 3), "\n")
E[X]      = 1.5 

R-Cheatsheet

VorsichtR-Cheatsheet: Hypergeometrische Verteilung
Funktion Syntax Bedeutung
dhyper dhyper(x, m, n, k) \(P(X=x)\): \(m\) Treffer, \(n\) Nieten, \(k\) Züge
phyper phyper(q, m, n, k) \(P(X \leq q)\)
qhyper qhyper(p, m, n, k) Quantil
rhyper rhyper(nn, m, n, k) \(nn\) Zufallszahlen
Code
# Urne: 10 Treffer, 40 Nieten; 5 Züge ohne Zurücklegen
dhyper(3, m=10, n=40, k=5)
phyper(2, m=10, n=40, k=5)
1 - phyper(2, m=10, n=40, k=5)
qhyper(0.95, m=10, n=40, k=5)
rhyper(10,   m=10, n=40, k=5)
1
P(X = 3)
2
P(X ≤ 2)
3
P(X > 2)
4
95%-Quantil
5
10 Zufallszahlen simulieren
Code
# dhyper(x, m, n, k): m Treffer, n Nieten, k Züge
# P(X = 3): 3 Treffer aus 5 Zügen, Urne hat 10 Treffer, 40 Nieten
dhyper(3, m = 10, n = 40, k = 5)
[1] 0.04417678
Code
# P(X <= 2)
phyper(2, m = 10, n = 40, k = 5)
[1] 0.9517397
Code
# 90%-Quantil
qhyper(0.90, m = 10, n = 40, k = 5)
[1] 2
Code
# 8 Zufallszahlen
rhyper(8, m = 10, n = 40, k = 5)
[1] 1 0 0 3 0 0 1 0

Geometrische Verteilung \(\text{Geom}(p)\)

Definition und Kenngrößen

WichtigDefinition: Geometrische Verteilung Geom(p)

Notation: \(X \sim \text{Geom}(p)\)

Voraussetzungen: Folge unabhängiger Bernoulli-Versuche mit Erfolgswahrscheinlichkeit \(p\); \(X\) zählt die Misserfolge vor dem ersten Erfolg (R-Konvention).

Parameter: - \(p \in (0, 1]\): Erfolgswahrscheinlichkeit — Träger: \(x \in \{0, 1, 2, \ldots\}\)

Wahrscheinlichkeitsfunktion: \[f(x) = P(X = x) = (1-p)^x \cdot p\]

Kenngrößen:

Formel
\(E[X]\) \(\dfrac{1-p}{p}\)
\(\text{Var}(X)\) \(\dfrac{1-p}{p^2}\)
\(\sigma\) \(\dfrac{\sqrt{1-p}}{p}\)
WarnungAchtung: Zwei Parametrisierungen in der Literatur

R zählt die Misserfolge vor dem ersten Erfolg: \(X \in \{0, 1, 2, \ldots\}\) mit \(f(x) = (1-p)^x \cdot p\). Viele Lehrbücher definieren stattdessen \(Y = X + 1\) = Anzahl Versuche bis zum ersten Erfolg: \(f_Y(y) = p(1-p)^{y-1}\), \(y \in \{1, 2, \ldots\}\). Beim Ablesen von Tabellen und Formeln immer prüfen, welche Konvention gilt.

TippMerkregel: Gedächtnislosigkeit

\[P(X > m + n \mid X > m) = P(X > n)\] Die bisherige Wartezeit spielt keine Rolle — nach \(m\) Misserfolgen ist die Restwartezeit identisch verteilt wie zu Beginn. Intuition: Eine Münze „erinnert” sich nicht an frühere Würfe. Die geometrische Verteilung ist die einzige diskrete gedächtnislose Verteilung.

Visualisierung

Code
tibble(x = 0:15) |>
  mutate(
    `p = 0.2` = dgeom(x, 0.2),
    `p = 0.4` = dgeom(x, 0.4),
    `p = 0.7` = dgeom(x, 0.7)
  ) |>
  pivot_longer(-x, names_to = "Parameter", values_to = "P") |>
  ggplot(aes(x = x, y = P, color = Parameter)) +
  geom_line(linewidth = 0.8) +
  geom_point(size = 1.8) +
  scale_color_manual(values = c("steelblue", "skyblue", "grey40")) +
  labs(title = "Geometrische Verteilung für verschiedene p",
       x = "Anzahl Misserfolge vor 1. Erfolg", y = "P(X = x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Produktionsfehler

Ein Qualitätsprüfer findet jedes geprüfte Teil mit Wahrscheinlichkeit 0.15 defekt. Wie gross ist die Wahrscheinlichkeit, dass er erst beim 5. Prüfling einen Defekt findet?

Code
p <- 0.15
# "Erst beim 5. Prüfling" = 4 Nicht-Defekte vor dem ersten Defekt
p_x4 <- dgeom(4, prob = p)
cat("P(X = 4) =", round(p_x4, 4), "\n")
P(X = 4) = 0.0783 
Code
cat("E[X] (mittlere Wartezeit in Misserfolgen) =",
    round((1 - p) / p, 2), "\n")
E[X] (mittlere Wartezeit in Misserfolgen) = 5.67 

Anwendungsbeispiel 2 — Wartezeit bis zum Treffer

Eine Münze wird geworfen bis das erste Mal „Kopf” erscheint (\(p = 0.5\)). Simulieren Sie 5 000 Experimente und vergleichen Sie die empirische Verteilung mit der theoretischen.

Code
set.seed(7)
p <- 0.5
sim <- rgeom(5000, prob = p)

tibble(x = 0:12) |>
  mutate(
    empirisch   = map_dbl(x, ~ mean(sim == .x)),
    theoretisch = dgeom(x, prob = p)
  ) |>
  pivot_longer(-x, names_to = "Typ", values_to = "P") |>
  ggplot(aes(x = factor(x), y = P, fill = Typ)) +
  geom_col(position = "dodge", alpha = 0.85) +
  scale_fill_manual(values = c("steelblue", "grey60")) +
  labs(title = "Geom(0.5): Empirisch vs. Theoretisch (n = 5 000)",
       x = "Anzahl Misserfolge vor 1. Kopf", y = "Relative Häufigkeit / P(X=x)") +
  theme_minimal()


Stetige Verteilungen

Bei stetigen Verteilungen ist die Wahrscheinlichkeit für einen einzelnen Punkt null. Man berechnet stets Wahrscheinlichkeiten für Intervalle mithilfe der Dichtefunktion \(f(x)\):

\[P(a \leq X \leq b) = \int_a^b f(x)\,dx = F(b) - F(a)\]


R-Cheatsheet

VorsichtR-Cheatsheet: Geometrische Verteilung
Funktion Syntax Bedeutung
dgeom dgeom(x, prob) \(P(X=x)\): \(x\) Misserfolge vor 1. Erfolg
pgeom pgeom(q, prob) \(P(X \leq q)\)
qgeom qgeom(p, prob) Quantil
rgeom rgeom(n, prob) \(n\) Zufallszahlen
Code
# X ~ Geom(0.3) — Misserfolge vor 1. Erfolg
dgeom(4, prob = 0.3)
pgeom(5, prob = 0.3)
1 - pgeom(4, prob = 0.3)
qgeom(0.50, prob = 0.3)
rgeom(10,   prob = 0.3)
1
P(X = 4)
2
P(X ≤ 5)
3
P(X > 4) = P(X ≥ 5)
4
Median (50%-Quantil)
5
10 Zufallszahlen simulieren
Code
p <- 0.3

# d: P(X = 2) — 2 Misserfolge vor erstem Erfolg
dgeom(2, prob = p)
[1] 0.147
Code
# p: P(X <= 4)
pgeom(4, prob = p)
[1] 0.83193
Code
# q: Median
qgeom(0.5, prob = p)
[1] 1
Code
# r: 10 Zufallszahlen
rgeom(10, prob = p)
 [1] 5 1 1 1 3 0 2 0 0 3

Normalverteilung \(N(\mu, \sigma^2)\)

Definition und Kenngrößen

WichtigDefinition: Normalverteilung N(μ, σ²)

Notation: \(X \sim N(\mu, \sigma^2)\)

Voraussetzungen: Messgrösse entsteht als Summe vieler kleiner, unabhängiger Einflüsse (Zentraler Grenzwertsatz).

Parameter: - \(\mu \in \mathbb{R}\): Erwartungswert (Lage) — Träger: \(x \in (-\infty, +\infty)\) - \(\sigma^2 > 0\): Varianz (Streuung)

Dichtefunktion: \[f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\]

Kenngrößen:

Formel
\(E[X]\) \(\mu\)
\(\text{Var}(X)\) \(\sigma^2\)
Symmetrie \(f(\mu + t) = f(\mu - t)\)
Standardisierung \(Z = \dfrac{X-\mu}{\sigma} \sim N(0,1)\)

Die 68-95-99.7-Regel:

Code
# 68-95-99.7 Regel
for (k in 1:3) {
  p <- pnorm(k) - pnorm(-k)
  cat("P(|Z| <=", k, ") =", round(p * 100, 2), "%\n")
}
P(|Z| <= 1 ) = 68.27 %
P(|Z| <= 2 ) = 95.45 %
P(|Z| <= 3 ) = 99.73 %

Visualisierung

Code
tibble(x = seq(130, 210, length.out = 400)) |>
  mutate(
    `N(170, 100)` = dnorm(x, 170, 10),
    `N(180, 25)`  = dnorm(x, 180, 5),
    `N(160, 225)` = dnorm(x, 160, 15)
  ) |>
  pivot_longer(-x, names_to = "Verteilung", values_to = "f") |>
  ggplot(aes(x = x, y = f, color = Verteilung)) +
  geom_line(linewidth = 1) +
  scale_color_manual(values = c("steelblue", "skyblue", "grey50")) +
  labs(title = "Normalverteilungen mit verschiedenen Parametern",
       x = "x", y = "f(x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Körpergrösse

Die Körpergrösse erwachsener Männer in der Schweiz sei \(N(178, 64)\)-verteilt (\(\sigma = 8\) cm). Wie gross ist der Anteil der Männer, die grösser als 190 cm sind? Welche Grösse überschreiten die grössten 5 %?

Code
mu <- 178; sigma <- 8

p_grösser190 <- 1 - pnorm(190, mu, sigma)
cat("P(X > 190) =", round(p_grösser190, 4), "\n")
P(X > 190) = 0.0668 
Code
p95_grenze <- qnorm(0.95, mu, sigma)
cat("95%-Perzentil =", round(p95_grenze, 1), "cm\n")
95%-Perzentil = 191.2 cm

Anwendungsbeispiel 2 — Messfehler und Standardisierung

Eine Messgrösse \(X \sim N(50, 16)\) wird standardisiert. Berechnen Sie \(P(46 \leq X \leq 54)\) sowohl direkt als auch über die Standardnormalverteilung.

Code
mu <- 50; sigma <- 4

# Direkt
p_direkt <- pnorm(54, mu, sigma) - pnorm(46, mu, sigma)

# Über Standardisierung
z1 <- (46 - mu) / sigma
z2 <- (54 - mu) / sigma
p_standard <- pnorm(z2) - pnorm(z1)

cat("Direkt:          P(46 <= X <= 54) =", round(p_direkt, 4), "\n")
Direkt:          P(46 <= X <= 54) = 0.6827 
Code
cat("Standardisiert:  P(", round(z1,2), "<= Z <=", round(z2,2), ") =",
    round(p_standard, 4), "\n")
Standardisiert:  P( -1 <= Z <= 1 ) = 0.6827 
Code
# Visualisierung
tibble(x = seq(38, 62, length.out = 300)) |>
  mutate(y = dnorm(x, mu, sigma),
         fill_area = ifelse(x >= 46 & x <= 54, y, NA)) |>
  ggplot(aes(x = x)) +
  geom_line(aes(y = y), color = "steelblue", linewidth = 1) +
  geom_area(aes(y = fill_area), fill = "steelblue", alpha = 0.4) +
  annotate("text", x = 50, y = 0.03, label = paste0(round(p_direkt*100,1), "%"),
           size = 4) +
  labs(title = "N(50, 16): P(46 ≤ X ≤ 54)",
       x = "x", y = "f(x)") +
  theme_minimal()


R-Cheatsheet

VorsichtR-Cheatsheet: Normalverteilung
Funktion Syntax Bedeutung
dnorm dnorm(x, mean, sd) Dichtefunktion \(f(x)\)
pnorm pnorm(q, mean, sd) \(P(X \leq q)\)
qnorm qnorm(p, mean, sd) Quantil (z.B. \(z_{0.975} = 1.96\))
rnorm rnorm(n, mean, sd) \(n\) Zufallszahlen
Code
# X ~ N(170, 100) — mean=170, sd=10
pnorm(180, mean=170, sd=10)
1 - pnorm(190, mean=170, sd=10)
pnorm(180,mean=170,sd=10) - pnorm(160,mean=170,sd=10)
qnorm(0.95, mean=170, sd=10)
rnorm(10,   mean=170, sd=10)
pnorm((185-170)/10)
qnorm(0.975)
1
P(X ≤ 180)
2
P(X > 190)
3
P(160 < X ≤ 180)
4
95%-Quantil
5
10 Zufallszahlen simulieren
6
Standardisiert: P(Z ≤ 1.5)
7
z₀.₉₇₅ = 1.96 (kritischer Wert)
Code
mu <- 170; sigma <- 10

# d: Dichte bei x = 175
dnorm(175, mean = mu, sd = sigma)
[1] 0.03520653
Code
# p: P(X <= 180) — Körpergrösse unter 180 cm
pnorm(180, mean = mu, sd = sigma)
[1] 0.8413447
Code
# q: 95%-Perzentil
qnorm(0.95, mean = mu, sd = sigma)
[1] 186.4485
Code
# r: 6 Zufallszahlen
rnorm(6, mean = mu, sd = sigma)
[1] 163.6470 155.5343 177.5292 161.9842 173.9523 165.0480

Chi²-Verteilung \(\chi^2(\nu)\)

Definition und Kenngrößen

WichtigDefinition: Chi²-Verteilung χ²(ν)

Notation: \(X \sim \chi^2(\nu)\)

Voraussetzungen: \(X = Z_1^2 + \cdots + Z_\nu^2\) mit \(Z_i \overset{iid}{\sim} N(0,1)\) — Summe von \(\nu\) quadrierten Standardnormalvariablen.

Parameter: - \(\nu \in \mathbb{N}\): Freiheitsgrade — Träger: \(x \in [0, +\infty)\)

Dichtefunktion: \[f(x) = \frac{x^{\nu/2 - 1} e^{-x/2}}{2^{\nu/2} \, \Gamma(\nu/2)}, \quad x > 0\]

Kenngrößen:

Formel
\(E[X]\) \(\nu\)
\(\text{Var}(X)\) \(2\nu\)
\(\sigma\) \(\sqrt{2\nu}\)
Schiefe \(\sqrt{8/\nu}\) (rechtsschief)
TippMerkregel: Hauptanwendungsgebiet \(\chi^2\)

Die \(\chi^2\)-Verteilung wird vor allem in Hypothesentests eingesetzt: beim Chi²-Anpassungstest, beim Chi²-Unabhängigkeitstest sowie bei Tests für die Varianz einer Normalverteilung. Die Teststatistik folgt dann näherungsweise einer \(\chi^2\)-Verteilung.

Visualisierung

Code
tibble(x = seq(0, 30, length.out = 400)) |>
  mutate(
    `ν = 2`  = dchisq(x, 2),
    `ν = 5`  = dchisq(x, 5),
    `ν = 10` = dchisq(x, 10)
  ) |>
  pivot_longer(-x, names_to = "Freiheitsgrade", values_to = "f") |>
  ggplot(aes(x = x, y = f, color = Freiheitsgrade)) +
  geom_line(linewidth = 1) +
  scale_color_manual(values = c("steelblue", "skyblue", "grey40")) +
  coord_cartesian(ylim = c(0, 0.25)) +
  labs(title = "Chi²-Verteilung für verschiedene Freiheitsgrade",
       x = "x", y = "f(x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Kritischer Wert für Chi²-Test

Bei einem Chi²-Unabhängigkeitstest mit 4 Freiheitsgraden und Signifikanzniveau \(\alpha = 0.05\): Wie lautet der kritische Wert? Visualisieren Sie die Ablehnungsregion.

Code
nu <- 4; alpha <- 0.05
krit <- qchisq(1 - alpha, df = nu)
cat("Kritischer Wert χ²(0.95; 4) =", round(krit, 3), "\n")
Kritischer Wert χ²(0.95; 4) = 9.488 
Code
tibble(x = seq(0, 20, length.out = 400)) |>
  mutate(y = dchisq(x, df = nu),
         region = ifelse(x >= krit, y, NA)) |>
  ggplot(aes(x = x)) +
  geom_line(aes(y = y), color = "steelblue", linewidth = 1) +
  geom_area(aes(y = region), fill = "firebrick", alpha = 0.4) +
  geom_vline(xintercept = krit, linetype = "dashed", color = "firebrick") +
  annotate("text", x = krit + 1.5, y = 0.02,
           label = paste0("χ² = ", round(krit,2)), color = "firebrick", size = 3.5) +
  labs(title = "Chi²(4): Ablehnungsregion für α = 0.05",
       x = "x", y = "f(x)") +
  theme_minimal()

Anwendungsbeispiel 2 — Varianztest

Eine Maschine soll eine Produktvarianz von \(\sigma_0^2 = 4\) einhalten. Aus \(n = 20\) Messungen ergibt sich \(s^2 = 6.5\). Berechnen Sie die Teststatistik und den p-Wert.

Code
n <- 20; s2 <- 6.5; sigma0_sq <- 4
chi_stat <- (n - 1) * s2 / sigma0_sq
p_wert   <- 1 - pchisq(chi_stat, df = n - 1)

cat("Teststatistik χ² =", round(chi_stat, 3), "\n")
Teststatistik χ² = 30.875 
Code
cat("p-Wert            =", round(p_wert, 4), "\n")
p-Wert            = 0.0417 
Code
cat("Entscheidung bei α=0.05:", ifelse(p_wert < 0.05, "H0 ablehnen", "H0 nicht ablehnen"), "\n")
Entscheidung bei α=0.05: H0 ablehnen 

R-Cheatsheet

VorsichtR-Cheatsheet: Chi²-Verteilung
Funktion Syntax Bedeutung
dchisq dchisq(x, df) Dichtefunktion \(f(x)\)
pchisq pchisq(q, df) \(P(X \leq q)\)
qchisq qchisq(p, df) Kritischer Wert (Quantil)
rchisq rchisq(n, df) \(n\) Zufallszahlen
Code
# X ~ Chi²(df=5)
pchisq(9.24, df=5)
1 - pchisq(9.24, df=5)
qchisq(0.95, df=5)
qchisq(0.025, df=5)
qchisq(0.975, df=5)
rchisq(10, df=5)
1
P(X ≤ 9.24)
2
p-Wert (einseitig rechts)
3
Kritischer Wert α = 0.05 (einseitig)
4
Untere Grenze 95%-Konfidenzintervall
5
Obere Grenze 95%-Konfidenzintervall
6
10 Zufallszahlen simulieren
Code
nu <- 5

# d: Dichte bei x = 4
dchisq(4, df = nu)
[1] 0.1439759
Code
# p: P(X <= 9.24) — kritischer Wert
pchisq(9.24, df = nu)
[1] 0.9001342
Code
# q: 95%-Quantil (kritischer Wert beim Chi²-Test)
qchisq(0.95, df = nu)
[1] 11.0705
Code
# r: 8 Zufallszahlen
rchisq(8, df = nu)
[1] 5.842023 8.088424 5.792677 2.169571 1.470449 6.460881 9.398892 7.557855

t-Verteilung \(t(\nu)\)

Definition und Kenngrößen

WichtigDefinition: t-Verteilung t(ν)

Notation: \(X \sim t(\nu)\)

Voraussetzungen: \(T = Z / \sqrt{V/\nu}\) mit \(Z \sim N(0,1)\) und \(V \sim \chi^2(\nu)\), unabhängig — typisch beim Testen von Mittelwerten bei unbekannter Varianz.

Parameter: - \(\nu \in \mathbb{N}\): Freiheitsgrade — Träger: \(x \in (-\infty, +\infty)\)

Dichtefunktion: \[f(x) = \frac{\Gamma\!\left(\tfrac{\nu+1}{2}\right)}{\sqrt{\nu\pi}\,\Gamma\!\left(\tfrac{\nu}{2}\right)} \left(1 + \frac{x^2}{\nu}\right)^{-(\nu+1)/2}\]

Kenngrößen:

Formel
\(E[X]\) \(0\) (für \(\nu > 1\))
\(\text{Var}(X)\) \(\dfrac{\nu}{\nu - 2}\) (für \(\nu > 2\))
Symmetrie Symmetrisch um 0
Konvergenz \(t(\nu) \xrightarrow{\nu\to\infty} N(0,1)\)
WarnungAchtung: Schwerere Ränder bei kleinen Stichproben

Die t-Verteilung hat im Vergleich zur Standardnormalverteilung schwerere Ränder (heavy tails). Mit zunehmenden Freiheitsgraden \(\nu\) nähert sie sich der \(N(0,1)\) an. Ab etwa \(\nu \geq 30\) ist der Unterschied praktisch vernachlässigbar — ein wichtiger Grund, warum grosse Stichproben vorteilhaft sind.

Visualisierung

Code
tibble(x = seq(-5, 5, length.out = 400)) |>
  mutate(
    `t(2)`   = dt(x, 2),
    `t(10)`  = dt(x, 10),
    `N(0,1)` = dnorm(x)
  ) |>
  pivot_longer(-x, names_to = "Verteilung", values_to = "f") |>
  ggplot(aes(x = x, y = f, color = Verteilung, linetype = Verteilung)) +
  geom_line(linewidth = 1) +
  scale_color_manual(values = c("steelblue", "skyblue", "firebrick")) +
  scale_linetype_manual(values = c("solid", "solid", "dashed")) +
  labs(title = "t-Verteilung vs. Standardnormalverteilung",
       subtitle = "Schwerere Ränder bei kleinen Freiheitsgraden",
       x = "x", y = "f(x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Einstichproben-t-Test

Eine Stichprobe von \(n = 16\) Messungen ergibt \(\bar{x} = 52.3\) und \(s = 4.8\). Testen Sie \(H_0: \mu = 50\) gegen \(H_1: \mu \neq 50\) zum Niveau \(\alpha = 0.05\).

Code
n <- 16; x_bar <- 52.3; s <- 4.8; mu0 <- 50

t_stat <- (x_bar - mu0) / (s / sqrt(n))
p_wert <- 2 * (1 - pt(abs(t_stat), df = n - 1))
krit   <- qt(0.975, df = n - 1)

cat("Teststatistik t    =", round(t_stat, 3), "\n")
Teststatistik t    = 1.917 
Code
cat("Kritischer Wert    =", round(krit, 3), "\n")
Kritischer Wert    = 2.131 
Code
cat("p-Wert (zweiseitig)=", round(p_wert, 4), "\n")
p-Wert (zweiseitig)= 0.0745 
Code
cat("Entscheidung:", ifelse(abs(t_stat) > krit, "H0 ablehnen", "H0 nicht ablehnen"), "\n")
Entscheidung: H0 nicht ablehnen 

Anwendungsbeispiel 2 — Konvergenz zu N(0,1)

Visualisieren Sie, wie die kritischen Werte des t-Tests für \(\alpha = 0.05\) (zweiseitig) mit steigenden Freiheitsgraden gegen den Normalwert 1.96 konvergieren.

Code
tibble(nu = 1:50,
       krit_t = qt(0.975, df = nu)) |>
  ggplot(aes(x = nu, y = krit_t)) +
  geom_line(color = "steelblue", linewidth = 1) +
  geom_point(size = 1.5, color = "steelblue") +
  geom_hline(yintercept = qnorm(0.975), color = "firebrick",
             linetype = "dashed", linewidth = 1) +
  annotate("text", x = 45, y = qnorm(0.975) + 0.1,
           label = "z = 1.96", color = "firebrick", size = 3.5) +
  labs(title = "Kritische Werte t(ν; 0.975) — Konvergenz gegen 1.96",
       x = "Freiheitsgrade ν", y = "Kritischer Wert") +
  theme_minimal()


R-Cheatsheet

VorsichtR-Cheatsheet: t-Verteilung
Funktion Syntax Bedeutung
dt dt(x, df) Dichtefunktion \(f(x)\)
pt pt(q, df) \(P(T \leq q)\)
qt qt(p, df) Kritischer Wert (Quantil)
rt rt(n, df) \(n\) Zufallszahlen
Code
# T ~ t(df=10)
pt(2.228, df=10)
2*(1-pt(abs(2.1), df=10))
qt(0.975, df=10)
qt(0.95,  df=10)
rt(10, df=10)
t.test(x, mu = 50)
t.test(x, y)
1
P(T ≤ 2.228)
2
p-Wert zweiseitiger t-Test
3
Kritischer Wert α = 0.05 (zweiseitig)
4
Kritischer Wert α = 0.05 (einseitig)
5
10 Zufallszahlen simulieren
6
Einstichproben-t-Test gegen μ₀ = 50
7
Zweistichproben-t-Test
Code
nu <- 10

# d: Dichte bei t = 1.5
dt(1.5, df = nu)
[1] 0.1274448
Code
# p: P(T <= 2.228) — zweiseitiger 95%-Test
pt(2.228, df = nu)
[1] 0.9749941
Code
# q: 97.5%-Quantil (kritischer Wert für zweiseitigen t-Test)
qt(0.975, df = nu)
[1] 2.228139
Code
# r: 8 Zufallszahlen
rt(8, df = nu)
[1] -0.21517957 -3.65054621  0.97362707  0.09467044  0.22161943 -1.62422363
[7] -0.45582828  0.23251795

Stetige Gleichverteilung \(U(a, b)\)

Definition und Kenngrößen

WichtigDefinition: Stetige Gleichverteilung U(a, b)

Notation: \(X \sim U(a, b)\)

Voraussetzungen: Alle Werte im Intervall \([a, b]\) sind gleich wahrscheinlich (konstante Dichte).

Parameter: - \(a < b\): untere und obere Grenze — Träger: \(x \in [a, b]\)

Dichtefunktion und Verteilungsfunktion: \[f(x) = \frac{1}{b-a}, \qquad F(x) = \frac{x-a}{b-a}\]

Kenngrößen:

Formel
\(E[X]\) \(\dfrac{a+b}{2}\)
\(\text{Var}(X)\) \(\dfrac{(b-a)^2}{12}\)
Median \(\dfrac{a+b}{2}\)

Visualisierung

Code
a <- 0; b <- 10
tibble(
  x    = c(a - 1, a, a, b, b, b + 1),
  f    = c(0,     0, 1/(b-a), 1/(b-a), 0, 0),
  F_x  = c(0, 0, 0, 1, 1, 1)
) |>
  ggplot(aes(x = x)) +
  geom_line(aes(y = f), color = "steelblue", linewidth = 1.2) +
  geom_line(aes(y = F_x), color = "grey50", linewidth = 1,
            linetype = "dashed") +
  annotate("text", x = 5, y = 0.13, label = "f(x) = 1/10", color = "steelblue") +
  annotate("text", x = 8.5, y = 0.95, label = "F(x)", color = "grey50") +
  labs(title = "Stetige Gleichverteilung U(0, 10)",
       subtitle = "Dichtefunktion (blau) und Verteilungsfunktion (grau gestrichelt)",
       x = "x", y = "") +
  theme_minimal()

Anwendungsbeispiel 1 — Wartezeit am Automaten

Die Wartezeit an einem Kassenautomaten sei gleichmässig auf \([0, 5]\) Minuten verteilt. Wie gross ist die Wahrscheinlichkeit, weniger als 2 Minuten zu warten? Was ist die mittlere Wartezeit?

Code
a <- 0; b <- 5
p_unter2 <- punif(2, min = a, max = b)
mu        <- (a + b) / 2
sigma_sq  <- (b - a)^2 / 12

cat("P(X < 2)   =", round(p_unter2, 4), "\n")
P(X < 2)   = 0.4 
Code
cat("E[X]       =", mu, "Minuten\n")
E[X]       = 2.5 Minuten
Code
cat("Var(X)     =", round(sigma_sq, 3), "\n")
Var(X)     = 2.083 

Anwendungsbeispiel 2 — Zufallszahlen-Generator

Computersimulationen basieren auf \(U(0,1)\)-verteilten Zufallszahlen. Überprüfen Sie anhand von 10 000 Simulationen, ob die empirische Verteilung tatsächlich gleichmässig ist.

Code
set.seed(99)
n <- 10000
sim <- runif(n, 0, 1)

tibble(x = sim) |>
  ggplot(aes(x = x)) +
  geom_histogram(aes(y = after_stat(density)), bins = 40,
                 fill = "steelblue", alpha = 0.7, color = "white") +
  geom_hline(yintercept = 1, color = "firebrick", linetype = "dashed",
             linewidth = 1) +
  annotate("text", x = 0.85, y = 1.08, label = "f(x) = 1",
           color = "firebrick", size = 3.5) +
  labs(title = "U(0,1): Histogramm aus 10 000 Simulationen",
       subtitle = "Rote Linie: theoretische Dichte",
       x = "x", y = "Dichte") +
  theme_minimal()


R-Cheatsheet

VorsichtR-Cheatsheet: Stetige Gleichverteilung
Funktion Syntax Bedeutung
dunif dunif(x, min, max) Dichte \(f(x) = 1/(b-a)\)
punif punif(q, min, max) \(P(X \leq q) = (q-a)/(b-a)\)
qunif qunif(p, min, max) Quantil \(a + p(b-a)\)
runif runif(n, min, max) \(n\) Zufallszahlen
Code
# X ~ U(2, 8)
dunif(5, min=2, max=8)
punif(6, min=2, max=8)
1 - punif(5, min=2, max=8)
punif(7,min=2,max=8) - punif(4,min=2,max=8)
qunif(0.75, min=2, max=8)
runif(10,   min=2, max=8)
1
Dichte f(5) = 1/(8-2) = 1/6
2
P(X ≤ 6) = 4/6
3
P(X > 5)
4
P(4 < X ≤ 7)
5
75%-Quantil
6
10 Zufallszahlen simulieren
Code
a <- 2; b <- 8

# d: Dichte bei x = 5 (konstant = 1/(b-a))
dunif(5, min = a, max = b)
[1] 0.1666667
Code
# p: P(X <= 6)
punif(6, min = a, max = b)
[1] 0.6666667
Code
# q: 75%-Quantil
qunif(0.75, min = a, max = b)
[1] 6.5
Code
# r: 8 Zufallszahlen
runif(8, min = a, max = b)
[1] 4.549020 2.626568 3.572777 4.222366 5.677469 5.608751 3.232072 7.980006

Exponentialverteilung \(\text{Exp}(\lambda)\)

Definition und Kenngrößen

WichtigDefinition: Exponentialverteilung Exp(λ)

Notation: \(X \sim \text{Exp}(\lambda)\)

Voraussetzungen: Wartezeit bis zum ersten Ereignis in einem Poisson-Prozess mit Rate \(\lambda\); Ereignisse treten unabhängig mit konstanter Rate auf.

Parameter: - \(\lambda > 0\): Ereignisrate (Kehrwert der mittleren Wartezeit) — Träger: \(x \in [0, +\infty)\)

Dichtefunktion und Verteilungsfunktion: \[f(x) = \lambda \, e^{-\lambda x}, \qquad F(x) = 1 - e^{-\lambda x}\]

Kenngrößen:

Formel
\(E[X]\) \(\dfrac{1}{\lambda}\)
\(\text{Var}(X)\) \(\dfrac{1}{\lambda^2}\)
\(\sigma\) \(\dfrac{1}{\lambda}\)
Median \(\dfrac{\ln 2}{\lambda}\)
HinweisTheorie-Check

Die Exponentialverteilung ist wie die geometrische Verteilung gedächtnislos: \(P(X > s + t \mid X > s) = P(X > t)\). Die bisherige Wartezeit hat keinen Einfluss auf die restliche Wartezeit — eine wichtige, aber in der Praxis oft zu prüfende Annahme.

Visualisierung

Code
tibble(x = seq(0, 10, length.out = 400)) |>
  mutate(
    `λ = 0.5` = dexp(x, 0.5),
    `λ = 1.0` = dexp(x, 1.0),
    `λ = 2.0` = dexp(x, 2.0)
  ) |>
  pivot_longer(-x, names_to = "Parameter", values_to = "f") |>
  ggplot(aes(x = x, y = f, color = Parameter)) +
  geom_line(linewidth = 1) +
  scale_color_manual(values = c("steelblue", "skyblue", "grey40")) +
  labs(title = "Exponentialverteilung für verschiedene λ",
       x = "x (Wartezeit)", y = "f(x)") +
  theme_minimal()

Anwendungsbeispiel 1 — Lebensdauer von Bauteilen

Die Lebensdauer eines elektronischen Bauteils sei \(\text{Exp}(0.02)\)-verteilt (mittlere Lebensdauer = 50 Stunden). Wie gross ist die Wahrscheinlichkeit, dass das Bauteil mindestens 100 Stunden hält? Visualisieren Sie die Überlebensfunktion.

Code
lambda <- 0.02
mu <- 1 / lambda
cat("Mittlere Lebensdauer: ", mu, "Stunden\n")
Mittlere Lebensdauer:  50 Stunden
Code
p_mind100 <- 1 - pexp(100, rate = lambda)
cat("P(X >= 100) =", round(p_mind100, 4), "\n")
P(X >= 100) = 0.1353 
Code
# Überlebensfunktion S(t) = 1 - F(t)
tibble(t = seq(0, 200, length.out = 400),
       S = 1 - pexp(t, rate = lambda)) |>
  ggplot(aes(x = t, y = S)) +
  geom_line(color = "steelblue", linewidth = 1.2) +
  geom_vline(xintercept = mu, linetype = "dashed", color = "grey50") +
  geom_hline(yintercept = exp(-1), linetype = "dashed", color = "grey50") +
  annotate("text", x = mu + 5, y = 0.95,
           label = paste0("E[X] = ", mu, "h"), size = 3.5, color = "grey40") +
  labs(title = "Überlebensfunktion S(t) = P(X > t) — Exp(0.02)",
       x = "Betriebszeit t (Stunden)", y = "S(t)") +
  theme_minimal()

Anwendungsbeispiel 2 — Zusammenhang mit Poisson

In einem Call-Center gehen durchschnittlich 6 Anrufe pro Stunde ein (Poisson-Prozess). Die Wartezeiten zwischen den Anrufen sind dann \(\text{Exp}(6)\)-verteilt. Simulieren Sie 5 000 Zwischenankunftszeiten und vergleichen Sie mit der theoretischen Dichte.

Code
set.seed(42)
lambda <- 6  # 6 Anrufe pro Stunde
sim <- rexp(5000, rate = lambda)

cat("Theoretische mittlere Wartezeit: ", round(1/lambda * 60, 1), "Minuten\n")
Theoretische mittlere Wartezeit:  10 Minuten
Code
cat("Empirischer Mittelwert:          ", round(mean(sim) * 60, 1), "Minuten\n")
Empirischer Mittelwert:           10.2 Minuten
Code
tibble(x = sim) |>
  ggplot(aes(x = x * 60)) +  # Umrechnung in Minuten
  geom_histogram(aes(y = after_stat(density)), bins = 50,
                 fill = "steelblue", alpha = 0.7, color = "white") +
  stat_function(fun = \(x) dexp(x / 60, rate = lambda) / 60,
                color = "firebrick", linewidth = 1.2) +
  labs(title = "Exp(6/h): Wartezeit zwischen Anrufen (n = 5 000)",
       subtitle = "Rote Kurve: theoretische Dichte",
       x = "Wartezeit (Minuten)", y = "Dichte") +
  theme_minimal()

R-Cheatsheet

VorsichtR-Cheatsheet: Exponentialverteilung
Funktion Syntax Bedeutung
dexp dexp(x, rate) Dichte \(f(x) = \lambda e^{-\lambda x}\)
pexp pexp(q, rate) \(P(X \leq q) = 1 - e^{-\lambda q}\)
qexp qexp(p, rate) Quantil \(-\ln(1-p)/\lambda\)
rexp rexp(n, rate) \(n\) Zufallszahlen
Code
# X ~ Exp(lambda=0.5) — mittlere Wartezeit = 1/0.5 = 2
dexp(1,   rate=0.5)
pexp(3,   rate=0.5)
1 - pexp(2, rate=0.5)
pexp(4,rate=0.5) - pexp(1,rate=0.5)
qexp(0.5, rate=0.5)
rexp(10,  rate=0.5)
1
Dichte f(1) = λ·e^(−λ·1)
2
P(X ≤ 3)
3
P(X > 2) = Überlebensfunktion S(2)
4
P(1 < X ≤ 4)
5
Median = ln(2)/λ
6
10 Zufallszahlen simulieren
Code
lambda <- 0.5  # mittlere Wartezeit = 1/λ = 2 Zeiteinheiten

# d: Dichte bei x = 1
dexp(1, rate = lambda)
[1] 0.3032653
Code
# p: P(X <= 3) — Wartezeit unter 3 Einheiten
pexp(3, rate = lambda)
[1] 0.7768698
Code
# q: Median der Verteilung
qexp(0.5, rate = lambda)
[1] 1.386294
Code
# r: 8 Zufallszahlen
rexp(8, rate = lambda)
[1] 0.8562907 0.6787967 3.8285809 1.8043657 1.3740832 1.3778312 0.8721955
[8] 4.3670866

Überblick: Alle Verteilungen auf einen Blick

Code
tibble(
  Verteilung = c(
    "Binomial B(n,p)", "Diskrete GV U_d{1..k}",
    "Poisson Pois(λ)", "Hypergeom H(N,M,n)",
    "Geometrisch Geom(p)",
    "Normalvert N(μ,σ²)", "Chi² χ²(ν)", "t-Vert t(ν)",
    "Stetige GV U(a,b)", "Exponential Exp(λ)"
  ),
  Typ = c(rep("Diskret", 5), rep("Stetig", 5)),
  `E[X]` = c("np", "(k+1)/2", "λ", "nM/N", "(1-p)/p",
              "μ", "ν", "0", "(a+b)/2", "1/λ"),
  `Var(X)` = c("np(1-p)", "(k²-1)/12", "λ", "np/N·(N-M)/N·(N-n)/(N-1)", "(1-p)/p²",
                "σ²", "2ν", "ν/(ν-2)", "(b-a)²/12", "1/λ²"),
  `R-Prefix` = c("binom","—","pois","hyper","geom","norm","chisq","t","unif","exp")
) |>
  knitr::kable(caption = "Übersicht aller behandelten Verteilungen") |>
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover"), full_width = TRUE) |>
  kableExtra::row_spec(0, bold = TRUE) |>
  kableExtra::pack_rows("Diskrete Verteilungen", 1, 5) |>
  kableExtra::pack_rows("Stetige Verteilungen", 6, 10)
Übersicht aller behandelten Verteilungen
Verteilung Typ E[X] Var(X) R-Prefix
Diskrete Verteilungen
Binomial B(n,p) Diskret np np(1-p) binom
Diskrete GV U_d{1..k} Diskret (k+1)/2 (k²-1)/12
Poisson Pois(λ) Diskret λ λ pois
Hypergeom H(N,M,n) Diskret nM/N np/N·(N-M)/N·(N-n)/(N-1) hyper
Geometrisch Geom(p) Diskret (1-p)/p (1-p)/p² geom
Stetige Verteilungen
Normalvert N(μ,σ²) Stetig μ σ² norm
Chi² χ²(ν) Stetig ν chisq
t-Vert t(ν) Stetig 0 ν/(ν-2) t
Stetige GV U(a,b) Stetig (a+b)/2 (b-a)²/12 unif
Exponential Exp(λ) Stetig 1/λ 1/λ² exp
TippWelche Verteilung für welchen Fall?
  • Binomial: Anzahl Erfolge in \(n\) unabhängigen Versuchen mit konstantem \(p\)
  • Diskrete Gleichverteilung: Alle \(k\) Ausprägungen gleich wahrscheinlich (Würfel, Roulette)
  • Poisson: Seltene Ereignisse in Zeit/Fläche bei konstanter Intensität \(\lambda\)
  • Hypergeometrisch: Ziehen ohne Zurücklegen aus endlicher Grundgesamtheit (Lotto, Qualitätssicherung)
  • Geometrisch: Wartezeit bis zum ersten Erfolg — diskret (Anzahl Misserfolge zuvor)
  • Normalverteilung: Messwerte als Summe vieler kleiner Einflüsse; universell durch ZGS
  • Chi²: Varianzschätzung, Anpassungs- und Unabhängigkeitstests
  • t-Verteilung: Mittelwerttests bei unbekannter Varianz, kleine Stichproben
  • Stetige Gleichverteilung: Wartezeiten auf Intervallen; Grundlage von Simulationen
  • Exponentialverteilung: Wartezeit bis zum nächsten Ereignis im Poisson-Prozess; Lebensdaueranalyse