wskt-df-r

probability
R
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 <-
  data.frame(
    A = c(1, 1, 0, 0),
    B = c(1, 0, 1, 0)
  )

d
  A B
1 1 1
2 1 0
3 0 1
4 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:

A B
1 1
1 0
0 1
0 0

\(Pr(A\cap B)\)

d |> 
  filter(A == 1 & B == 1)
  A B
1 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
1           FALSE 3
2            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
1           FALSE 3   0.75
2            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
1           FALSE 3   0.75
2            TRUE 1   0.25

Oder so:

d |> 
  count(!(A == 1) & B == 1) |> 
  mutate(Anteil = n / sum(n))
  !(A == 1) & B == 1 n Anteil
1              FALSE 3   0.75
2               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
1               FALSE 1   0.25
2                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
1 0 1
2 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
1 0 1
2 1 1

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

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

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