[1] "hp"
mtcars-abhaengig_var3
Aufgabe
Im Folgenden ist der Datensatz mtcars
zu analysieren. Er ist unter dieser Quelle erhältlich.
Der Datensatz ist z.B. als CSV-Datei von dieser Webseite abrufbar.
Hilfe zum Datensatz ist via help("name_des_datensatzes")
oder auf dieser Webseite abrufbar.
Ob die Variable hp
(UV; Ereignis \(A\)) und Spritverbrauch (mpg
; AV; Ereignis \(B\)) wohl voneinander abhängig sind? Was meinen Sie? Was ist Ihre Einschätzung dazu? Vermutlich haben Sie ein (wenn vielleicht auch implizites) Vorab-Wissen zu dieser Frage. Lassen wir dieses Vorab-Wissen aber einmal außen vor und schauen uns rein Daten dazu an. Vereinfachen wir die Frage etwas, indem wir beide Variablen am Mittelwert aufteilen: Wenn eine Beobachtung (d.h. ein Auto) einen Wert in der jeweiligen Variablen höchstens so groß wie der Mittelwert der Variable aufweist, geben wir der Beobachtung der Wert 0
, ansonsten den Wert 1
.
Die resultierenden binären Variablen nennen wir av_high
bzw. uv_high
(im schönsten Denglisch).
Berechnen Sie: \(Pr(\neg \text{uvhigh} \, | \, \text{avhigh})\)
Hinweise:
- Das “Ellbogen-Zeichen” \(\neg\) kennzeichnet eine logische Negierung (das Gegenteil).
- Die angegebene Wahrscheinlichkeit ist eine bedingte Wahrscheinlichkeit.
- Weitere Hinweise
Lösung
Dieser Prädiktor wurde als UV bestimmt:
Schauen wir zuerst mal in den Datensatz:
%>%
d select(mpg, one_of(pred_chosen)) %>%
slice_head(n = 5)
# A tibble: 5 × 2
mpg hp
<dbl> <dbl>
1 21 110
2 21 110
3 22.8 93
4 21.4 110
5 18.7 175
Dann berechnen wir die binären Variablen:
# split by mean:
<-
d2 %>%
d select(mpg, all_of(pred_chosen)) %>%
mutate(av_high = case_when(
<= mean(mpg) ~ 0,
mpg > mean(mpg) ~ 1
mpg %>%
)) select(-mpg)
# split at mean:
1] <- ifelse(d[[pred_chosen]] < mean(d[[pred_chosen]]), 0, 1)
d2[names(d2)[1] <- "uv_high"
# abstracted variables names:
<- names(d2)[1]
pred_binary_name <- names(d2)[2] av_binary_name
Dann filtern wir die gesuchten Wahrscheinlichkeiten bzw. Anteile der AV:
<-
d3 %>%
d2 filter(av_high == 1)
<- nrow(d3)
av_high_sum av_high_sum
[1] 14
Es gibt also 14 Autos, die den oben gesuchten “hinteren Teil” der Bedingung erfüllen (av_high = TRUE)
.
Filtern wir als nächstes nach dem “vorderen Teil” der gesuchten Wahrscheinlichkeit (was das gleiche ist wie ein Anteil in diesem Fall):
<-
d3a %>%
d3 count(uv_high)
Betrachten wir die nach av_high = TRUE
gefilterte Häufigkeitstabelle:
uv_high | n |
---|---|
0 | 14 |
1 | 1 |
Und dann zählen wir die relativen Häufigkeiten der UV, und zwar für uv_high == FALSE
:
<-
prop_not_uv_high_cond_av_high %>%
d3a mutate(prop = n / av_high_sum) %>%
filter(uv_high == 0) %>%
pull(prop)
<- prop_not_uv_high_cond_av_high
sol sol
[1] 1
Der gesuchte Wert beträgt also 1
.
Visualisieren wir noch die bedingten Wahrscheinlichkeiten, so könnte man die gesuchten Anteile einfach abzählen:
%>%
d2 mutate(across(everything(), factor)) %>% # factor() brauchn wir nur für die Farbfüllung
ggplot() +
aes_string(x = av_binary_name, fill = pred_binary_name) +
geom_bar() +
scale_y_continuous(breaks = 1:100) +
scale_x_discrete(drop = FALSE) # zeigt Kategorien ohne Daten in der Legende an.
Sieht man in dem Diagramm nur eine Farbe (anstelle von zweien), so heißt das, dass es nur eine Gruppe gibt (und nicht zwei). Die Häufigkeit der nicht vorhandenen Gruppe ist demnach Null.
Am besten, Sie führen den letzten Code Schritt für Schritt aus und schauen sich jeweils das Ergebnis an, das hilft beim Verstehen.
Alternativ kann man sich die Häufigkeiten auch so ausgeben lassen:
av_high
uv_high 0 1
0 0.1666667 1.0000000
1 0.8333333 0.0000000
Categories:
- dyn
- probability
- num