Hier finden Sie die Lösungen zu den Übungsaufgaben von Abschnitt 44.5 .
Die hier vorgestellten Lösungen stellen immer nur eine mögliche Vorgehensweisen dar und sind sicherlich nicht der Weisheit letzter Schluss. In R
führen viele Wege nach Rom, und wenn Sie mit anderem Code zu den richtigen Ergebnissen kommen, dann ist das völlig in Ordnung.
Lösung zur Aufgabe 44.5.1
# lade Kartenspiele
load (url ("https://www.produnis.de/R/data/cards.RData" ))
# ziehe Karte
sample (poker, 1 )
[1] Herz 5
52 Levels: Kreuz 2 < Karo 2 < Herz 2 < Pik 2 < Kreuz 3 < Karo 3 < ... < Pik As
# alternativ kann das 'probs'-Paket verwendet werden
karten <- probs:: cards (makespace= TRUE )
probs:: sim (karten, ntrials= 1 )
# lade Datensatz
coin <- c ("Kopf" , "Zahl" )
# wirf 2 Münzen
sample (coin, 2 , replace= TRUE )
# alternativ kann das 'probs'-Paket verwendet werden
coin <- probs:: tosscoin (2 , makespace= TRUE )
probs:: sim (coin, ntrials= 1 )
# lade Datensatz
würfel <- c (1 : 6 )
# wirf 2 Münzen
sample (würfel, 2 , replace= TRUE )
# alternativ kann das 'probs'-Paket verwendet werden
würfel <- probs:: rolldie (2 , makespace= TRUE )
probs:: sim (würfel, ntrials= 1 )
Lösung zur Aufgabe 44.5.2
# erzeuge Wahrscheinlichkeitsraum
münzen <- probs:: tosscoin (2 , makespace= TRUE )
# werfe 10mal 2 Münzen
versuch <- probs:: sim (münzen, ntrials= 10 )
# berechne Wahrscheinlichkeitsverteilung
probs:: empirical (versuch)
toss1 toss2 probs
1 T H 0.3
2 H T 0.4
3 T T 0.3
# werfe 100mal 2 Münzen
versuch <- probs:: sim (münzen, ntrials= 100 )
# berechne Wahrscheinlichkeitsverteilung
probs:: empirical (versuch)
toss1 toss2 probs
1 H H 0.30
2 T H 0.20
3 H T 0.28
4 T T 0.22
# werfe 1.000mal 2 Münzen
versuch <- probs:: sim (münzen, ntrials= 1000 )
# berechne Wahrscheinlichkeitsverteilung
probs:: empirical (versuch)
toss1 toss2 probs
1 H H 0.252
2 T H 0.248
3 H T 0.249
4 T T 0.251
# werfe 1.000.000mal 2 Münzen
versuch <- probs:: sim (münzen, ntrials= 1000000 )
# berechne Wahrscheinlichkeitsverteilung
probs:: empirical (versuch)
toss1 toss2 probs
1 H H 0.249949
2 T H 0.249696
3 H T 0.250325
4 T T 0.250030
Mit zunehmender Wiederholung nähern sich die Wahrscheinlichkeitsverteilungen den relativen Häufigkeiten an.
Je häufiger das Zufallsexperiment wiederholt wird, desto mehr nähern sich die beobachteten Wahrscheinlichkeiten den theoretischen Wahrscheinlichkeiten an.
Lösung zur Aufgabe 44.5.3
boxen <- c ("A" , "A" , "A" , "B" , "B" , "C" )
# ziehe 3 Boxen ohne Zurücklegen
sample (boxen, 3 , replace= FALSE )
boxen <- c ("A" , "A" , "A" , "B" , "B" , "C" )
# ziehe 3 Boxen ohne Zurücklegen
sample (boxen, 3 , replace= TRUE )
Lösung zur Aufgabe 44.5.4
df <- tribble (
~ Windpocken, ~ Masern, ~ Röteln, ~ Häufigkeit,
"No" , "No" , "No" , 2654 ,
"No" , "No" , "Yes" , 1436 ,
"No" , "Yes" , "No" , 1682 ,
"No" , "Yes" , "Yes" , 668 ,
"Yes" , "No" , "No" , 1747 ,
"Yes" , "No" , "Yes" , 476 ,
"Yes" , "Yes" , "No" , 876 ,
"Yes" , "Yes" , "Yes" , 265
)
# Wahrscheinlichkeitsraum
wr <- probs:: probspace (df[,- 4 ], probs= df$ Häufigkeit/ sum (df$ Häufigkeit))
wr
Windpocken Masern Röteln probs
1 No No No 0.27070583
2 No No Yes 0.14647083
3 No Yes No 0.17156263
4 No Yes Yes 0.06813545
5 Yes No No 0.17819257
6 Yes No Yes 0.04855161
7 Yes Yes No 0.08935129
8 Yes Yes Yes 0.02702978
# Erstelle daraus die marginale Verteilung
probs:: marginal (wr)
Windpocken Masern Röteln probs
1 No No No 0.27070583
2 Yes No No 0.17819257
3 No Yes No 0.17156263
4 Yes Yes No 0.08935129
5 No No Yes 0.14647083
6 Yes No Yes 0.04855161
7 No Yes Yes 0.06813545
8 Yes Yes Yes 0.02702978
# Wahrscheinlichkeitsraum
wr <- probs:: probspace (df[,- 4 ], probs= df$ Häufigkeit/ sum (df$ Häufigkeit))
# berechne Wahrscheinlichkeit
probs:: Prob (wr, event= Windpocken== "Yes" )
Die Wahrscheinlichkeit beträgt 34.31%.
# berechne Wahrscheinlichkeit
probs:: Prob (wr, event= Windpocken== "Yes" | Röteln== "Yes" )
Die Wahrscheinlichkeit beträgt 55.77%.
# berechne Wahrscheinlichkeit
probs:: Prob (wr, event= Masern== "Yes" & Röteln== "Yes" )
Die Wahrscheinlichkeit beträgt 9.52%.
# berechne Wahrscheinlichkeit
probs:: Prob (wr, event= Windpocken== "Yes" , given= Masern== "Yes" )
Die Wahrscheinlichkeit beträgt 32.68%.
# berechne Wahrscheinlichkeit
probs:: Prob (wr, event= Masern== "No" & Röteln== "No" ,
given= Windpocken== "Yes" )
Die Wahrscheinlichkeit beträgt 51.93%.
Lösung zur Aufgabe 44.5.5
df <- tribble (
~ Schwanger, ~ Test, ~ Häufigkeit,
"Nein" , "-" , 3876 ,
"Nein" , "+" , 47 ,
"Ja" , "-" , 12 ,
"Ja" , "+" , 131
)
# Wahrscheinlichkeitsraum
wr <- probs:: probspace (df[,- 3 ], probs= df$ Häufigkeit/ sum (df$ Häufigkeit))
wr
Schwanger Test probs
1 Nein - 0.953271028
2 Nein + 0.011559272
3 Ja - 0.002951303
4 Ja + 0.032218396
# Erstelle daraus die marginale Verteilung
probs:: marginal (wr)
Schwanger Test probs
1 Ja - 0.002951303
2 Nein - 0.953271028
3 Ja + 0.032218396
4 Nein + 0.011559272
# Wahrscheinlichkeitsraum
probs:: Prob (wr, event= Schwanger== "Ja" )
Die Prävalenz liegt bei 3.52%.
# Wahrscheinlichkeitsraum
probs:: Prob (wr, event= Test== "+" )
Die Wahrscheinlichkeit liegt bei 4.38%.
# Wahrscheinlichkeitsraum
probs:: Prob (wr, event= Test== "+" , given= Schwanger== "Ja" )
Die Sensitivität liegt bei 91.61%.
# Wahrscheinlichkeitsraum
probs:: Prob (wr, event= Test== "-" , given= Schwanger== "Nein" )
Die Spezifität liegt bei 98.8%.
# Wahrscheinlichkeitsraum
probs:: Prob (wr, event= Schwanger== "Ja" , given= Test== "+" )
Der positiv prädiktive Wert liegt bei 73.6%.
# Wahrscheinlichkeitsraum
probs:: Prob (wr, event= Schwanger== "Nein" , given= Test== "-" )
Der negative prädiktive Wert liegt bei 99.69%.
Alternativ kann auch die Funktion sens.spec()
aus dem Paket jgsbook
verwendet werden:
jgsbook:: sens.spec (rp= 131 , fp= 12 , rn= 3876 , fn= 47 )
sens spec ppw npw
1 73.6 99.69 91.61 98.8
Lösung zur Aufgabe 44.5.6
würfel <- 1 : 6
münze <- c ("Kopf" , "Zahl" )
bild <- c (7 : 10 ,"B" , "D" , "K" , "A" )
farbe <- c ("Kreuz" , "Pik" , "Karo" , "Herz" )
Ereignisraum <- expand.grid (Münze= münze, Bild= bild,
Farbe= farbe, Würfel= würfel)
head (Ereignisraum)
Münze Bild Farbe Würfel
1 Kopf 7 Kreuz 1
2 Zahl 7 Kreuz 1
3 Kopf 8 Kreuz 1
4 Zahl 8 Kreuz 1
5 Kopf 9 Kreuz 1
6 Zahl 9 Kreuz 1
Lösung zur Aufgabe 44.5.7
df <- tribble (
~ Impfung, ~ Grippe, ~ Häufigkeit,
"Nein" , "Nein" , 418 ,
"Nein" , "Ja" , 312 ,
"Ja" , "Nein" , 233 ,
"Ja" , "Ja" , 37 )
wr <- probs:: probspace (df[,- 3 ],probs= df$ Häufigkeit/ sum (df$ Häufigkeit))
wr
Impfung Grippe probs
1 Nein Nein 0.418
2 Nein Ja 0.312
3 Ja Nein 0.233
4 Ja Ja 0.037
# Erstelle daraus die marginale Verteilung
probs:: marginal (wr)
Impfung Grippe probs
1 Ja Ja 0.037
2 Nein Ja 0.312
3 Ja Nein 0.233
4 Nein Nein 0.418
probs:: Prob (wr,event= Impfung== "Ja" )
Die Wahrscheinlichkeit beträgt 27%.
probs:: Prob (wr,event= Grippe== "Ja" )
Die Prävalenz beträgt 34.9%.
probs:: Prob (wr,event= Grippe== "Ja" , given= Impfung== "Ja" )
Die Wahrscheinlichkeit beträgt 13.7%.
Lösung zur Aufgabe 44.5.8
df <- tribble (
~ Ebola, ~ Test, ~ Häufigkeit,
"Nein" , "+" , 28 ,
"Nein" , "-" , 97465 ,
"Ja" , "+" , 147 ,
"Ja" , "-" , 65 )
wr <- probs:: probspace (df[,- 3 ],probs= df$ Häufigkeit/ sum (df$ Häufigkeit))
wr
Ebola Test probs
1 Nein + 0.0002865769
2 Nein - 0.9975436262
3 Ja + 0.0015045289
4 Ja - 0.0006652679
# Erstelle daraus die marginale Verteilung
probs:: marginal (wr)
Ebola Test probs
1 Ja - 0.0006652679
2 Nein - 0.9975436262
3 Ja + 0.0015045289
4 Nein + 0.0002865769
probs:: Prob (wr,event= Ebola== "Ja" )
Die Prävalenz beträgt 0.22%.
probs:: Prob (wr,event= Test== "-" )
Die Prävalenz beträgt 99.82%.
# entweder
# Sensitivität
probs:: Prob (wr,event= Test== "+" , given= Ebola== "Ja" )
# Spezifität
probs:: Prob (wr,event= Test== "-" , given= Ebola== "Nein" )
# oder
jgsbook:: sens.spec (fp= 28 , rn= 97465 , rp= 147 , fn= 65 )
sens spec ppw npw
1 69.34 99.97 84 99.93
jgsbook:: sens.spec (fp= 28 , rn= 97465 , rp= 147 , fn= 65 )
sens spec ppw npw
1 69.34 99.97 84 99.93
Er kann besser Gesunde erkennen.
# positiv prädiktiv
probs:: Prob (wr,event= Ebola== "Ja" , given= Test== "+" )
Die Wahrscheinlichkeit liegt bei 84%.
# negativ prädiktiv
probs:: Prob (wr,event= Ebola== "Nein" , given= Test== "-" )
Die Wahrscheinlichkeit liegt bei 99.93%.
große Schlarmann, J. (2024).
Angewandte Übungen in R . Hochschule Niederrhein.
https://github.com/produnis/angewandte_uebungen_in_R
große Schlarmann, J. (2025a).
table traineR . Workouts für {data.table} . Hochschule Niederrhein.
https://www.produnis.de/tabletrainer/
große Schlarmann, J. (2025b).
trainingslageR . Ein Übungsbuch für R-Einsteiger*innen und Fortgeschrittene. Hochschule Niederrhein.
https://www.produnis.de/trainingslager