library(rstanarm) # Bayes-Modelle
library(tidyverse)
library(easystats)
<- "https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv"
penguins_url
<- read.csv(penguins_url) penguins
penguins-rope
1 Aufgabe
Wir untersuchen folgende Forschungsfrage:
Unterscheiden sich die Körpermasse von Pinguinen der Arten Adelie und Gentoo signifikant voneinander?
Hinweise:
- Dabei verstehen wir hier unter “signifikant” einen Unterschied von mindestens 500g (in Bezug auf die Grenzen eines 89%-HDI).
- Weniger als der genannte Wert würde forschungsinhaltlich ein vernachlässigbar geringer Wert bedeuten.
- Beachten Sie die üblichen Hinweise des Datenwerks.
Achtung: Viele Forscher verstehen unter “signifikant” etwas ganz anderes. (Interessanterweise sind sich aber einige Forscher nicht sicher, was sie darunter verstehen. Fragen Sie sie doch mal.)
Wir berechnen folgendes Modell zur Beantwortung der Forschungsfrage:
<- stan_glm(body_mass_g ~ species,
m data = penguins,
refresh = 0, # unterdrückt Ausgabe der Posteriori-Stichproben
seed = 42 # zur Reproduzierbarkeit
)
Dann betrachten wir die Parameter des Modells:
<- parameters(m, ci_method = "HDI", ci =.89)
m_params m_params
Parameter | Median | CI | CI_low | CI_high | pd | Rhat | ESS | Prior_Distribution | Prior_Location | Prior_Scale |
---|---|---|---|---|---|---|---|---|---|---|
(Intercept) | 3700.6231 | 0.89 | 3638.81696 | 3757.2271 | 1.00000 | 0.9993739 | 4057.018 | normal | 4201.754 | 2004.886 |
speciesChinstrap | 32.4854 | 0.89 | -81.93567 | 140.5625 | 0.68525 | 0.9999821 | 4281.545 | normal | 0.000 | 5015.916 |
speciesGentoo | 1374.4328 | 0.89 | 1283.91409 | 1469.9053 | 1.00000 | 1.0002181 | 4453.515 | normal | 0.000 | 4171.626 |
2 Lösung
Wie man in der Tabelle sieht, ist der Unterschied der Körpermasse von Pinguinen der Arten Adelie und Gentoo signifikant. Der Unterschied beträgt mind. 1283.9140872 g, laut dem Modell und dem 89%-HDI.
Das sieht man auch im Diagramm:
|> plot(show_intercept = TRUE) m_params
Und noch etwas deutlicher in diesem Diagramm:
|> hdi(ci = .89, parameters = "speciesGentoo") |>
m plot() +
annotate("rect", xmin = -500, xmax = 500, ymin = 0, ymax = Inf, alpha = 0.5, fill = "pink") +
labs(subtitle = "ROPE shown in pink color")
Die Rope-Statistiken sagen klar, dass wir die ROPE-Hypothese ablehnen können für 500g Unterschied:
|> rope(range = c(-500, 500)) m
Parameter | CI | ROPE_low | ROPE_high | ROPE_Percentage | Effects | Component |
---|---|---|---|---|---|---|
(Intercept) | 0.95 | -500 | 500 | 0 | fixed | conditional |
speciesChinstrap | 0.95 | -500 | 500 | 1 | fixed | conditional |
speciesGentoo | 0.95 | -500 | 500 | 0 | fixed | conditional |
Das sieht man auch im ROPE-Diagramm gut (ROPE als blaues Rechteck dargestellt):
|> rope(range = c(-500, 500)) |> plot() m