data(penguins, package = "palmerpenguins") # Paket muss installiert sein
penguins-relationen
1 Aufgabe
1.1 Hintergrund
In dieser Aufgabe betrachten wir die Relationen einiger Ereignisse im Zusammenhang mit dem Datensatz penguins
.
Sie können den Datensatz z.B. so importieren:
Sei das Ereignis \(W\) ein weiblicher Pinguin. Sei das Ereignis \(S\) ein “schwerer” Pinguin, definiert als schwerer als der Median aller Pinguine (des Datensatzes). Sei \(WS\) ein weiblicher, schwerer Pinguin.
Berechnen Sie folgende Wahrscheinlichkeiten, wobei wir den jeweiligen Anteil der Tiere als Wahrscheinlichkeit interpretieren.
1.2 Teilaufgaben
- \(Pr(W \cup S)\)
- \(Pr(W \cap S)\)
- \(Pr(\neg S)\)
- \(Pr(\neg W)\)
- \(Pr(W \setminus WS)\)
- \(Pr(S \setminus WS)\)
Hinweise:
- Beachten Sie die üblichen Hinweise des Datenwerks.
2 Lösung
Setup:
library(tidyverse)
Median berechnen:
|>
penguins drop_na(body_mass_g) |>
summarise(body_mass_g_mean = median(body_mass_g))
body_mass_g_mean |
---|
4050 |
<-
weight_md |>
penguins drop_na(body_mass_g) |>
summarise(body_mass_g_mean = median(body_mass_g))
weight_md
body_mass_g_mean |
---|
4050 |
2.1 A. \(Pr(W \cup S)\)
Das logische “ODER” wird vom |
-Operator abgebildet in R:
|>
penguins filter(sex == "female" | body_mass_g > weight_md) |>
nrow()
[1] 261
Das sind 261 Zeilen von insgesamt 344:
nrow(penguins)
[1] 344
Also:
261/344
[1] 0.7587209
Die Wahrscheinlichkeit liegt bei 76%.
2.2 B. \(Pr(W \cap S)\)
Das logische “UND” wird vom &
-Operator abgebildet in R:
<-
anzahl_w_und_s |>
penguins filter(sex == "female" & body_mass_g > weight_md) |>
nrow()
anzahl_w_und_s
[1] 53
Das sind 53 Zeilen von insgesamt 344, also:
/nrow(penguins) anzahl_w_und_s
[1] 0.1540698
2.3 C. \(Pr(\neg S)\)
|>
penguins filter(body_mass_g <= weight_md) |>
nrow() / nrow(penguins)
[1] 0.5610465
2.4 D. \(Pr(\neg W)\)
|>
penguins filter(sex != "female") |>
nrow() / nrow(penguins)
[1] 0.4883721
2.5 E. \(Pr(W \setminus WS)\)
Die Logische Differenz bekommt man in R mit der Funktion setdiff
.
<- penguins |> filter(sex == "female")
weiblich
<-
weiblich_schwer |>
penguins filter(sex == "female", body_mass_g > weight_md)
<- setdiff(weiblich, weiblich_schwer)
weiblich_minus_weiblichschwer
|>
weiblich_minus_weiblichschwer head()
species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex | year |
---|---|---|---|---|---|---|---|
Adelie | Torgersen | 39.5 | 17.4 | 186 | 3800 | female | 2007 |
Adelie | Torgersen | 40.3 | 18.0 | 195 | 3250 | female | 2007 |
Adelie | Torgersen | 36.7 | 19.3 | 193 | 3450 | female | 2007 |
Adelie | Torgersen | 38.9 | 17.8 | 181 | 3625 | female | 2007 |
Adelie | Torgersen | 41.1 | 17.6 | 182 | 3200 | female | 2007 |
Adelie | Torgersen | 36.6 | 17.8 | 185 | 3700 | female | 2007 |
|>
weiblich_minus_weiblichschwer nrow() / nrow(penguins)
[1] 0.3255814
Es gibt mehrere Wege, die logische Differenz zu berechnen.
2.6 F. \(Pr(S \setminus WS)\)
<- penguins |> filter(body_mass_g > weight_md)
schwer
<- setdiff(schwer, weiblich_schwer)
schwer_minus_weiblichschwer
|> head() schwer_minus_weiblichschwer
species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex | year |
---|---|---|---|---|---|---|---|
Adelie | Torgersen | 39.2 | 19.6 | 195 | 4675 | male | 2007 |
Adelie | Torgersen | 42.0 | 20.2 | 190 | 4250 | NA | 2007 |
Adelie | Torgersen | 34.6 | 21.1 | 198 | 4400 | male | 2007 |
Adelie | Torgersen | 42.5 | 20.7 | 197 | 4500 | male | 2007 |
Adelie | Dream | 39.8 | 19.1 | 184 | 4650 | male | 2007 |
Adelie | Dream | 44.1 | 19.7 | 196 | 4400 | male | 2007 |
|>
schwer_minus_weiblichschwer nrow() / nrow(penguins)
[1] 0.2790698
2.7 Hinweis
Der Nenner der Wahrscheinlichkeit sollte die Anzahl aller Pinguine sein, für die alle relevanten Informationen verfügbar sind. Da body_mass_g
und sex
für die gesamte Aufgabe relevant sind, sollten nur Tiere ohne fehlende Werte in diesen Spalten betrachtet werden.
<- penguins |> drop_na(body_mass_g, sex) penguins_nona