penguins-stan-05

bayes
regression
exam-22
qm2
qm2-pruefung
Published

January 11, 2023

Aufgabe

Wir untersuchen Einflussfaktoren bzw. Prädiktoren auf das Körpergewicht von Pinguinen. In dieser Aufgabe untersuchen wir den Zusammenhang von Schnabellänge (als UV) und Körpergewicht (als AV).

Aufgabe: Wie breit ist das 95%-ETI, wenn Sie nur die Spezies Adelie untersuchen?

Hinweise:

  • Sie können den Datensatz z.B. hier beziehen oder über das R-Paket palmerpenguins.
  • Weitere Hinweise











Lösung

Zentrieren ist eigentlich immer nützlich, aber hier streng genommen nicht unbedingt nötig. Der Hauptgrund dafür ist, dass Stan für uns den Prior für den Intercept festlegt, und zwar auf Basis der Daten, wir uns also nicht um die komische Frage zu kümmern brauchen, welchen Prior wir für den unzentrierten Achsenabschnitt vergeben wollten: Wie schwer sind Pinguins der Schnabellänge Null? Mit zentrierten Prädiktoren ist die Frage nach dem Prior viel einfacher zu beantworten: Wie schwer ist ein Pinguin mit mittelgroßem Schnabel?

Setup:

library(tidyverse)
library(easystats)
library(rstanarm)

data("penguins", package = "palmerpenguins")

Es wird in dieser Aufgabe vorausgesetzt, dass Sie den Datensatz selbständig importieren können. Tipp: Kurzes Googeln hilft ggf., den Datensatz zu finden.

Alternativ könnten Sie den Datensatz als CSV-Datei importieren:

d_path <- "https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv"

Ein Blick in die Daten zur Kontrolle, ob das Importieren richtig funktioniert hat:

penguins <- data_read(d_path)
penguins_adelie <- 
  penguins %>% 
  filter(species == "Adelie")

glimpse(penguins)
Rows: 344
Columns: 9
$ rownames          <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1…
$ species           <chr> "Adelie", "Adelie", "Adelie", "Adelie", "Adelie", "A…
$ island            <chr> "Torgersen", "Torgersen", "Torgersen", "Torgersen", …
$ bill_length_mm    <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, …
$ bill_depth_mm     <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, …
$ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186…
$ body_mass_g       <int> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, …
$ sex               <chr> "male", "female", "female", "", "female", "male", "f…
$ year              <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007…

Vertrauen ist gut, aber - was Golems betrifft - ist Kontrolle eindeutig besser ;-)

m1 <- stan_glm(body_mass_g ~  bill_length_mm,  # Regressionsgleichung
               data = penguins_adelie, #  Daten
               seed = 42,  # Repro.
               refresh = 0)  # nicht so viel Output
parameters(m1, ci = .95, ci_method = "eti")
Parameter      | Median |            95% CI |     pd |  Rhat |     ESS |                       Prior
----------------------------------------------------------------------------------------------------
(Intercept)    |  18.20 | [-881.48, 930.13] | 51.75% | 1.000 | 3988.00 | Normal (3700.66 +- 1146.42)
bill_length_mm |  94.71 | [  71.21, 118.31] |   100% | 1.000 | 3962.00 |     Normal (0.00 +- 430.43)

Uncertainty intervals (equal-tailed) and p-values (two-tailed) computed
  using a MCMC distribution approximation.

Die Lösung lautet also, wie in der Ausgabe zu den Parametern ersichtlich, 47.1.


Categories:

  • bayes
  • regression
  • exam-22