mtcars-abhaengig_var2

dyn
probability
mtcars
Published

January 11, 2023

Aufgabe

Im Folgenden ist der Datensatz mtcars zu analysieren.

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. Wir nehmen die Anteile der gesuchten Größen als Schätzwert für deren Wahrscheinlichkeit.

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

Schauen wir zuerst mal in den Datensatz:

mtcars %>% 
  select(mpg, hp) %>% 
  slice_head(n = 5)
                   mpg  hp
Mazda RX4         21.0 110
Mazda RX4 Wag     21.0 110
Datsun 710        22.8  93
Hornet 4 Drive    21.4 110
Hornet Sportabout 18.7 175

Dann berechnen wir die binären Variablen.

Zuerst av_high:

# split by mean:
d2 <-
  mtcars %>% 
  select(mpg, hp) %>% 
  mutate(av_high = case_when(
    mpg <= mean(mpg) ~ 0,
    mpg > mean(mpg) ~ 1
  )) %>% 
  select(-mpg) 

glimpse(d2)
Rows: 32
Columns: 2
$ hp      <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, …
$ av_high <dbl> 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,…

av_high = 1 zeigt hohe Werte in mpg an, und av_high = 0 zeigt geringe Werte (im Verhältnis zum Mittelwert).

Achtung! Wenn es fehlende Werte im Datensatz gäbe, müssten wir diese in geeigneter Manier vorab entfernen. Also z.B.:

# split by mean:
d2 <-
  mtcars %>% 
  select(mpg, hp) %>% 
  drop_na() |> 
  mutate(av_high = case_when(
    mpg <= mean(mpg) ~ 0,
    mpg > mean(mpg) ~ 1
  )) %>% 
  select(-mpg) 

glimpse(d2)
Rows: 32
Columns: 2
$ hp      <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, …
$ av_high <dbl> 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,…

Oder so:

# split by mean:
d2 <-
  mtcars %>% 
  select(mpg, hp) %>% 
  mutate(av_high = case_when(
    mpg <= mean(mpg, na.rm = TRUE) ~ 0,
    mpg > mean(mpg, na.rm = TRUE) ~ 1
  )) %>% 
  select(-mpg) 

glimpse(d2)
Rows: 32
Columns: 2
$ hp      <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, …
$ av_high <dbl> 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,…

Man beachte, dass hohe Werte in MPG einen geringen Spritverbrauch bedeuten (also eine hohe Sparsamkeit im Verbrauch).

Dann berechnen wir uv_high:

d3 <-
  d2 %>% 
  select(av_high, hp) %>% 
  mutate(uv_high = case_when(
    hp <= mean(hp) ~ 0,
    hp > mean(hp) ~ 1
  )) %>% 
  select(-hp) 

glimpse(d3)
Rows: 32
Columns: 2
$ av_high <dbl> 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,…
$ uv_high <dbl> 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,…

Auch hier gilt, dass die Funktionen der deskriptiven Statistik alle Beine von sich strecken und den Dienst “verweigern”, wenn es fehlende Werte im Vektor geben sollte. Sie meinen es natürlich nur gut mit Ihnen. 🤷‍♂️

Dann zählen wir die gesuchten Wahrscheinlichkeiten bzw. Anteile der AV:

d3 %>% 
  count(av_high)
  av_high  n
1       0 18
2       1 14

Es gibt also 14 Autos, die den oben gesuchten “hinteren Teil” der Bedingung erfüllen (av_high = 1).

Filtern wir als nächstes nur in diesen 14 Autos nach dem “vorderen Teil” der gesuchten Wahrscheinlichkeit, also uv_high = 0.

d3 %>% 
  filter(av_high == 1) %>% 
  count(uv_high) %>% 
  mutate(prop = n/sum(n))
  uv_high  n prop
1       0 14    1

Es gibt also 14 von 14 Autos, die diese Bedingung, uv_high = 0 erfüllen. Das sind 100%.

In Worten: Von den Autos mit hoher Sparsamkeit haben alle eine geringe PS-Zahl. Das macht intuitiv Sinn.

Der gesuchte Wert beträgt also 1.


Categories:

  • dyn
  • probability