Diese Übung soll dir helfen, die Binomialverteilung und die
Normalverteilung besser zu verstehen und in R
anhand dieser
Verteilungen Wahrscheinlichkeiten zu berechnen. Alle relevanten Codes
findest du im R-Workshop (siehe Moodle). Um die Aufgaben zu lösen,
öffnest du dir am besten ein neues Skript und schreibst die Codes dort
hinein. Das Skript kannst du mit Kommentaren (#) versehen und dann
abspeichern. Für diese Übung musst du keinen Datensatz laden.
Solltest du bei einer Aufgabe nicht weiterkommen, empfehlen wir dir
zuerst Google zu fragen oder in den Unterlagen nachzuschauen und erst
dann die Lösung anschauen.
Wir verwenden als Beispiel den Intelligenzquotienten (IQ). Ob wir den “wahren” Mittelwert und die “wahre” Standardabweichung des IQ’s in der Population wirklich kennen, ist diskutabel. Für diese Übung glauben dieser Website. Demnach ist der IQ normalverteilt mit \(\mu = 100\) und \(\sigma = 15\):
\[ IQ\sim{\mathcal{N}(100, 15^2)} \] Anmerkung: Bei der Notation \(IQ\sim{\mathcal{N}(100, 15^2)}\) wird in der Regel die Varianz und nicht die Standardabweichung angegeben. Daher \(15^2\).
Simuliere die Daten für den IQ für ca. 10% der Schweizer Bevölkerung,
also für 850’000 Personen (du brauchst dazu die R-Funktion
rnorm()
). Weise die Daten einer neuen Variable
iq_swiss
zu. Visualisiere die Variable
iq_swiss
mithilfe eines Histogramms.
iq_swiss <- rnorm(850000, 100, 15)
hist(iq_swiss, main = "Verteilung des IQ's in der Schweiz (n = 850'000)", col = "gray", freq = FALSE)
Da die 850’000 Werte zufällig aus einer Normalverteilung mit \(\mu = 100\) und \(\sigma = 15\) gezogen werden, erstaunt es nicht, dass die Werte ebenfalls normalverteilt sind.
Um Wahrscheinlichkeiten anhand der Normalverteilung berechnen zu können, muss die Variable zuerst z-transformiert werden:
\[z_i = \frac{x_i-\mu_X}{\sigma_X}.\]
Anhand des z-Wertes kann die Fläche unter der Normalverteilungskurve
berechnet werden. Die Funktion pnorm()
gibt dir immer die
Fläche links, des angegebenen z-Wertes an: \(Pr(X \le x)\). Möchtest du berechnen, wie
gross die Fläche rechts vom z-Wert liegt (\(Pr(X\ge x)\)), muss du die
Gegenwahrscheinlichkeit \(1-Pr(X \le
x)\) berechnen: 1-pnorm(z)
.
Den z-Wert für eine gegebene Wahrscheinlichkeit \(Z(Pr = p)\) erhälst du mit Hilfe der
Funktion qnorm(p)
.
iq_swiss
) einen IQ-Wert
von 108 oder mehr hat?## [1] 0.2969014
Hier das Ganze noch formal und visuell (kleiner Exkurs).
\[ Pr(X > 108) = \int_{108}^{\infty} \frac{1}{15 \sqrt{2\pi}} \exp\left( -\frac{(t - 100)^2}{2 \cdot 15^2} \right) \, dt. \]
Der Ausdruck
\[ \frac{1}{15 \sqrt{2\pi}} \exp\left( -\frac{(t - 100)^2}{2 \cdot 15^2} \right) \]
ist die Wahrscheinlichkeitsdichtefunktion (PDF) der Normalverteilung \(\mathcal{N}(100, 15^2)\).
Die Dichtefunktion gibt nicht direkt die Wahrscheinlichkeit an, sondern wie dicht die Wahrscheinlichkeit an der Stelle \(t\) konzentriert ist.
Die wahre Wahrscheinlichkeit, dass der IQ in einem bestimmten Intervall liegt, erhält man durch Integration der Dichtefunktion über dieses Intervall. Das ist nicht sehr praktisch, weshalb wir eine z-Transformation durchführen und mit Hilfe der Standardnomalverteilung \(\Phi\) rechnen:
\[ \begin{align*} Pr(X > 108) &= 1 - \Phi(\frac{108-100}{15}) = 1 - \Phi(0.5333) \end{align*}. \]
# Dieser Code ist nicht prüfungsrelevant
library(tidyverse)
ggplot(NULL, aes(c(-3,3))) +
geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(-3, z)) +
geom_area(stat = "function", fun = dnorm, fill = "#00998a", xlim = c(z, 3)) +
labs(x = paste("z"), y = "") +
scale_y_continuous(breaks = NULL) +
scale_x_continuous(breaks = z, "Z")
Die grüne Fläche beginnt beim besagten Wert von \(\frac{108-100}{15}\), geht bis \(\infty\) und beträgt 29% der Gesamtfläche. Fläche unter der Kurve = Wahrscheinlichkeit.
Wenn wir anhand unserer Stichprobe rechnen, wie gross diese Proportion ist, kommen wir auf ein sehr ähnliches Resultat:
## [1] 0.2971835
Das macht Sinn, weil wir die Daten als eine Normalverteilung mit den Parametern \(\mu = 100\) und \(\sigma = 15\) simuliert haben. Weil \(n\) mit 850000 gross ist, ist die Abweichung von der simulierten zur theoretischen Verteilung sehr klein.
Berechne auf Populationsebene:
## [1] 0.06017176
# Dieser Code ist nicht prüfungsrelevant
ggplot(NULL, aes(c(-3,3))) +
geom_area(stat = "function", fun = dnorm, fill = "#00998a", xlim = c(-3, z)) +
geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(z, 3)) +
labs(x = paste("z"), y = "") +
scale_y_continuous(breaks = NULL) +
scale_x_continuous(breaks = z)
x1 <- 80
z1 <- (x1-mu)/sigma
p1 <- pnorm(z1) # Fläche unterhalb von 80
x2 <- 110
z2 <- (x2-mu)/sigma
p2 <- 1-pnorm(z2) # Fläche oberhalb von 110
p_tot <- 1-(p1+p2) # Die Randwahrscheinlichkeiten ziehen wir von den 100% ab
p_tot
## [1] 0.6562962
# Dieser Code ist nicht prüfungsrelevant
ggplot(NULL, aes(c(-3,3))) +
geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(-3, z1)) +
geom_area(stat = "function", fun = dnorm, fill = "#00998a", xlim = c(z1, z2)) +
geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(z2, 3)) +
labs(x = paste("z"), y = "") +
scale_y_continuous(breaks = NULL) +
scale_x_continuous(breaks = c(z1, z2))
p <- 0.3
z <- qnorm(1-p) # qnorm um das Quantil der Standardnormalverteilung, also den z-Wert herauszufinden
x <- z*sigma+mu # einfache algebraische Umformung der z-Transformation
x
## [1] 107.866
# Dieser Code ist nicht prüfungsrelevant
ggplot(NULL, aes(c(-3,3))) +
geom_area(stat = "function", fun = dnorm, fill = "grey80", xlim = c(-3, z)) +
geom_area(stat = "function", fun = dnorm, fill = "#00998a", xlim = c(z, 3)) +
labs(x = paste("z"), y = "") +
scale_y_continuous(breaks = NULL) +
scale_x_continuous(breaks = z)
## [1] 0.3
## [1] -1.644854
z1 <- qnorm(0.025) #Die 5% werden auf beide Seiten aufgeteilt, also die tiefsten 2.5%...
z2 <- qnorm(0.975) #... und die höchsten 2.5%
x1 <- z1 * sigma + mu
x2 <- z2 * sigma + mu
x1
## [1] 70.60054
## [1] 129.3995
## [1] -1.959964 1.959964
Die Zahl 1.96 wird dir darum noch öfters begegnen…
Beispiel: In ungefähr 50% der Fälle kommt es nach einer manuellen manipulation der Wirbelsäule zu leichten (und harmlosen) Nebenwirkungen (Paige et al. 2017). Wir gehen also davon aus, dass die Wahrscheinlichkeit \(\pi = 0.5\) für Nebenwirkungen. In einer Praxis werden pro Woche rund 80 Manipulationen an der Wirbelsäule durchgeführt. Die Variable \(X\) (Anzahl Personen mit Nebenwirkungen) ist Binomialverteilt:
\[ X \sim \mathcal{Bin}(80, 0.5) \]
Die Funktionen für die Binomialverteilung sind analog zur
Normalverteilung: Die Funktion pbinom(x, n, p)
gibt dir die
Wahrscheinlichkeit für maximal \(x\)
Personen mit Nebenwirkungen: \(Pr(X \le
x)\). Mit 1-pbinom(x, n, p)
für mehr als \(x\) Personen mit Nebenwirkungen: \(Pr(X > x)\).
Anders als bei der Normalverteilung kann man bei der
Binomialverteilung auch Punktwahrscheinlichkeiten berechnen. Mit
dbinom(x, n, p)
berechnest du die Wahrscheinlichkeit für
genau \(x\) Personen mit
Nebenwirkungen: \(Pr(X = x)\).
\(n = 80\) , \(\pi = 0.5\)
Wie gross ist die Wahrscheinlichkeit, dass genau die Hälfte der Personen (in einer Woche) Nebenwirkungen hat: \(Pr(X = 40)\)?
## [1] 0.08892788
Wie gross ist die Wahrscheinlichkeit, dass mehr als die Hälfte der Personen (in einer Woche) Nebenwirkungen hat: \(Pr(X > 40)\)?
## [1] 0.4555361
Wie gross ist die Wahrscheinlichkeit, dass weniger als 20 Personen (in einer Woche) Nebenwirkungen haben?
Vorsicht: Weniger als 20 bedeutet \(Pr(X \le 19)\) und nicht \(Pr(X \le 20)\)
## [1] 1.365935e-06