6  Postverteilung

Übungsaufgaben zum Ziehen und Verwenden von Stichproben

Warning

Hinweis: Achtung, die Ergebnisse können selbst mit set.seed() etwas variieren!

6.1 Aufgabe 1

Ziehen Sie eine Stichprobe mit einer Größe von 10.000 Fällen. Grundlage ist der Globusversuch mit 14 von 20 Wassertreffern. Nehmen Sie an, dass Sie für 10 Hypothesen apriori indifferent sind.

set.seed(42)

sample1 <-
  tibble(gitter = seq(0, 1, by = 0.1),
         prior = 1)%>%
  mutate(likelihood = dbinom(14, size = 20, prob = gitter),
         unst_post = prior * likelihood,
         post = unst_post / sum(unst_post))%>%
  slice_sample(n = 1e4,
               weight_by = post,
               replace = TRUE)
1
Gitter erstellen
2
Stichprobe ziehen

6.2 Aufgabe 2

Wie groß ist die Wahrscheinlichkeit, dass der Wasseranteil größer als 50 Prozent ist?

sample1%>%
  count(gitter > .5)%>%
  mutate(Anteil = n/10000)

Die Wahrscheilichkeit, dass der Wasseranteil größer als 50 Prozent ist, liegt bei ~ 90 Prozent. Kürzer wäre folgender Code:

sample1 %>% 
  summarise(Anteil = mean(gitter > .5))

Die Funktion mean prüft, wie viele Fälle der Bedinung entsprechen und teilt die Anzahl dieser Fälle durch die Gesamtanzahl aller Fälle. Der Befehl summarise ist notwendig, um diese Information aus dem sample zu extrahieren. Den Namen der Outputspalte “Anteil” kann man auch weglassen.

6.3 Aufgabe 3

Wie groß ist die Wahrscheinlichkeit, dass der Wasseranteil zwischen 65 und 75 Prozent liegt?

sample1%>%
  filter(gitter > .65)%>%
  filter(gitter < .75)%>%
  count()%>%
  summarise(`Anteil in Prozent` = n / 10000 * 100)

Die Wahrscheinlichkeit, dass der Wasseranteil zwischen 65 und 75 Prozent ist, liegt bei ~ 40 Prozent. Eleganter:

sample1 %>% 
  summarise(Anteil = mean(gitter > .65 & gitter < .75))

Das “&”-Zeichen ist eine Und-Verknüpfung. R errechnet also die Wahrscheinlichkeit für \(P(>0,65\cap<0,75)\).

6.4 Aufgabe 4

Welcher ist der mittlere Wasseranteil und wie groß ist die Standardabweichung der Verteilung?

sample1%>%
  summarise(`Mittlerer Wasseranteil` = mean(gitter),
            `Standardabweichung der möglichen Wasseranteile` = sd(gitter))

6.5 Aufgabe 5

Welcher Wasseranteil wird mit einer Wahrscheinlichkeit von 70 Prozent nicht überschritten?

sample1%>%
  summarise(quant70 = quantile(gitter, prob = .7))

Mit einer Wahrscheinlichkeit von 70 Prozent wird ein Wasseranteil von 70 Prozent nicht überschritten.

6.6 Aufgabe 6

Beantworten Sie Aufgabe 5 ein weiteres Mal, ohne dabei die Funktion quantile() zu verwenden.

sample1%>%
  arrange(gitter)%>%
  slice_head(n = 7000)%>%
  arrange(-gitter)

Wir sehen, der größte Wert der Spalte gitter, nachdem wir 7000 Werte abgeschnitten haben, ist 0.7. Das heißt ein Wasseranteil von 0.7 muss größer sein, als 70 % Prozent der insgesamt 10.000 Werte.

6.7 Aufgabe 7

Bilden Sie ein symmetrisches Perzentilinterval, das zeigt, zwischen welchen beiden Parameterwerten sich 80 Prozent der Verteilung befinden.

sample1%>%
  select(gitter)%>%
  eti(ci = .8)

80 % aller Zeilen haben einen Wasseranteil von 60 bis 80 Prozent.

6.8 Aufgabe 8

Geben Sie die Breite des Intervalls mit der höchsten Wahrscheinlichkeitsdichte, das 95 % aller Werte beinhaltet, an.

sample1%>%
  select(gitter)%>%
  hdi()
0.50 - 0.80
[1] -0.3

Die Breite des HDI ist 0.3.
Hier noch eine andere Variante, die das Ergebnis direkt ausspuckt:

sample1%>%
  select(gitter)%>%
  hdi() %>% 
  mutate(width = CI_high - CI_low) %>%
  select(width)

6.9 Codesammlung

Stichprobe von 10 000 ziehen auf Basis von Gitter mit X von n Treffern

set.seed(42)

sample1 <-
  tibble(gitter = seq(0, 1, by = 0.1), #Gitter erstellen
         prior = 1)%>%
  mutate(likelihood = dbinom(x, size = n, prob = gitter),
         unst_post = prior * likelihood,
         post = unst_post / sum(unst_post))%>%
  slice_sample(n = 1e4, #Stichprobe ziehen
               weight_by = post,
               replace = TRUE)

Wie groß ist die Wahrscheinlichkeit, dass der Anteil größer als X% ist?

sample1%>%
  count(gitter > .X)%>%
  mutate(Anteil = n/10000)

#ODER
sample1 %>% 
  summarise(Anteil = mean(gitter > .X))

Mittlerer Anteil und Standardabweichung der möglichen Anteile

sample1%>%
  summarise(`Mittlerer Anteil` = mean(gitter),
            `Standardabweichung der möglichen Anteile` = sd(gitter))

Wie groß ist die Wahrscheinlichkeit für einen Anteil zwischen X und Y Prozent?

sample1%>%
  filter(gitter > .X)%>%
  filter(gitter < .Y)%>%
  count()%>%
  summarise(`Anteil in Prozent` = n / 10000 * 100)

#ODER
sample1 %>% 
  summarise(Anteil = mean(gitter > .65 & gitter < .75))

Welcher Anteil wird mit einer Wahrscheinlichkeit von X% nicht überschritten?

sample1%>%
  summarise(quantX = quantile(gitter, prob = .X))

#OHNE quantile()
sample1%>%
  arrange(gitter)%>%
  slice_head(n = X%*1e4)%>%
  arrange(-gitter)

Symmetrisches Perzentilintervall (Equal Tails Interval = eti), dass zeigt, zwischen welchen beiden Parameterwerten sich X% der Verteilung befinden

sample1%>%
  select(gitter)%>%
  eti(ci = .X) #eti steht für equal tails interval, ci für confidence interval

Breite des Intervalls mit der höchsten Wahrscheinlichkeitsdichte berechnen, das X% aller Werte beinhaltet:

# Breite des Intervalls direkt berechnen
sample1%>%
  select(gitter)%>%
  hdi(ci = .X) %>% #hdi = high density interval = Intervall mit der höchsten Wahrscheinlichkeitsdichte
  mutate(width = CI_high - CI_low) %>% #die obere Grenze des KOnfidenzintervalls von der niedrigeren abziehen, um die Breite zu bekommen
  select(width) # nur die Breite anzeigen lassen

# Intervallgrenzen ausgeben lassen (falls nach der Breite gefragt ist, müsste man hier noch die beiden Grenzen voneinander abziehen)
sample1%>%
  select(gitter)%>%
  hdi(ci = .X)