wskt-df-r

probability
R
computer
Published

January 18, 2024

Question

In dieser Aufgabe betrachten wir typische Relationen von Ereignissen, um typische Fragen der Wahrscheinlichkeitsrechnung zu beantworten.

Gegeben sei folgender Datensatz d:

#echo: true
d <-
  data.frame(
    A = c(1, 1, 0, 0),
    B = c(1, 0, 1, 0)
  )

d
A B
1 1
1 0
0 1
0 0

Der Datensatz d stellt alle vier Kombinationen der beiden Variablen A und B da (wir gehen davon aus, dass es sich um binäre Variablen, wie Ereignisse, handelt, der Einfachheit halber).

Dabei steht A == 1 für \(A\) (Ereignis \(A\) ist der Fall) und A == 0 für \(\neg A\), A tritt nicht ein, ist nicht der Fall.

Generell wird in der Wissenschaft und Technik 0 für “nein, falsch” und 1 für “ja, wahr, richtig” verwendet.

Aufgabe: Berechnen Sie mit R \(Pr(A\cap B), Pr(\neg A\cap B), Pr(A\cup B), Pr(A|B), Pr(B|A)\)!

Solution

Gesucht sind mehrere Relationen: \(Pr(A\cap B), Pr(\neg A\cap B), Pr(A\cup B), Pr(A|B), Pr(B|A)\)

Setup

library(tidyverse)

Hier ist unserer Datentabelle d, wie oben erstellt::

A B
1 1
1 0
0 1
0 0

\(Pr(A\cap B)\)

d |> 
  filter(A == 1 & B == 1)
A B
1 1

Also 1 von 4 Zeilen, das heißt 1/4 oder .25.

Man kann das auch mit count ausrechnen:

d |> 
  count(A == 1 & B == 1)
A == 1 & B == 1 n
FALSE 3
TRUE 1

Der Operator & steht für das logische “UND” (Schnitt, intersect).

Und so kann man sich noch die Anteile ausrechnen lassen:

d |> 
  count(A == 1 & B == 1) |> 
  mutate(Anteil = n / sum(n))
A == 1 & B == 1 n Anteil
FALSE 3 0.75
TRUE 1 0.25

\(Pr(\neg A\cap B)\)

\(Pr(\neg A\cap B)\) ist im Prinzip identisch zum Schnitt ohne Negation:

d |> 
  count(A == 0 & B == 1) |> 
  mutate(Anteil = n / sum(n))
A == 0 & B == 1 n Anteil
FALSE 3 0.75
TRUE 1 0.25

Oder so:

d |> 
  count(!(A == 1) & B == 1) |> 
  mutate(Anteil = n / sum(n))
!(A == 1) & B == 1 n Anteil
FALSE 3 0.75
TRUE 1 0.25

Der Operator ! entspricht der logischen Negation.

\(Pr(A\cup B)\)

Kommen wir zu \(Pr(A\cup B)\), der logischen Vereinigung, auch logisches “ODER” genannt.

d |> 
  count((A == 1) | (B == 1)) |> 
  mutate(Anteil = n / sum(n))
(A == 1) | (B == 1) n Anteil
FALSE 1 0.25
TRUE 3 0.75

Der Operator | steht in R für das logische ODER.

Wie man sieht, kann man die Klammern um (A == 1) | (B == 1) verwenden für bessere Sichtbarkeit. Es ist aber nicht nötig.

\(Pr(A|B)\)

\(Pr(A|B)\) entspricht einem Filtern, d.h. bedingen auf B entspricht einem Filtern, so dass nur noch \(B\) und nicht \(\neg B\) übrig bleibt.

d |> 
  filter(B == 1) |> 
  count(A)
A n
0 1
1 1

1 Fall von 2 erfüllt die Bedingung A == 1, also 50%.

\(Pr(B|A)\)

Diese Aufgabe ist analog zu \(Pr(A|B)\):

d |> 
  filter(A == 1) |> 
  count(B)
B n
0 1
1 1

Bonus \(Pr(B|\neg A)\)

\(Pr(B|\neg A)\) - Eigentlich nichts Neues:

d |> 
  filter(!(A == 1)) |> 
  count(B)
B n
0 1
1 1