class: right, bottom, test, title-slide # Gaussmodelle: Schätzen einer metrischen Variablen ## Kapitel 4 --- <style> .center2 { margin: 0; position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } </style> ## Gliederung </br> </br> </br> .xxlarge[ 1. [Teil 1: Verteilungen](#verteilungen) 2. [Teil 2: Gauss-Modelle: Wie groß sind die !Kung San?](#gaussmodelle) 3. [Hinweise](#hinweise) ] --- ## Software Für dieses Thema benötigen Sie einige R-Pakete, die Sie wie folgt installieren können: ```r pakete <- c("tidyverse", "rstan", "rstanarm", "bayesplot") install.packages(pakete) ``` Für `rstan` wird [weitere Software](https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started) benötigt. --- name: verteilungen class: center, middle, inverse # Verteilungen --- ## Häufigkeitsverteilung .pull-left[ Die Verteilung eines *diskreten* Merkmals `\(X\)` mit `\(k\)` Ausprägungen zeigt, wie häufig die einzelnen Ausprägungen sind. ```r data(mtcars) mtcars %>% count(cyl) ``` ``` ## cyl n ## 1 4 11 ## 2 6 7 ## 3 8 14 ``` ] .pull-right[ Ein *stetiges* Merkmal lässt sich durch Klassenbildung diskretisieren: <img src="Kapitel_4_chunk-img/Normalverteilung-2-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Wahrscheinlichkeitsverteilung Eine *diskrete* Wahrscheinlichkeitsverteilung des Merkmals `\(X\)` ordnet jeder der `\(k\)` Ausprägungen `\(X=x\)` eine Wahrscheinlichkeit `\(p\)` zu. So hat die Variable *Geschlecht eines Babies* die beiden Ausprägungen *Mädchen* und *Junge* mit den Wahrscheinlichkeiten `\(p_M = 51.2\%\)` bzw. `\(p_J = 48.8\%\)` <a name=cite-gelman_regression_2021></a>([Gelman, Hill, and Vehtari, 2021](#bib-gelman_regression_2021)). Bei *stetigen* Merkmalen `\(X\)` geht man von unendlich vielen Ausprägungen aus; die Wahrscheinlichkeit einer bestimmten Ausprägung ist (praktisch) Null: `\(p(X=x_j)=0, \quad j=1,...,k\)`. Daher gibt man stattdessen die *Dichte* der Wahrscheinlichkeit an: Das ist die Wahrscheinlichkeit(smasse) pro eine Einheit von `\(X\)`. --- ## Beispiele für Wahrscheinlichkeitsdichte .pull-left[ <img src="Kapitel_4_chunk-img/Normalverteilung-3-1.png" width="100%" style="display: block; margin: auto;" /> Bei `\(X=0\)` hat eine Einheit von `\(X\)` die Wahrscheinlichkeitsmasse von 40%. In Summe liegen 100% der Wahrscheinlichkeitsmasse unter der Kurve. ] .pull-right[ <img src="Kapitel_4_chunk-img/Normalverteilung-4-1.png" width="100%" style="display: block; margin: auto;" /><img src="Kapitel_4_chunk-img/Normalverteilung-4-2.png" width="100%" style="display: block; margin: auto;" /> Bei `\(X=0\)` hat eine Einheit von `\(X\)` die Wahrscheinlichkeitsmasse von 50% bzw. 33%. ] --- ## Quantile und Verteilungsfunktion - *Quantile* teilen eine Verteilung so ein, dass ein Anteil `\(p\)` kleiner und der andere Teil `\(1-p\)` größer oder gleich dem Quantil `\(q\)` ist. - *Beispiel*: "50%-Quantil = 100" meint, dass 50% der Werte der Verteilung einen Wert kleiner als 100 haben. - Die *Verteilungsfunktion F* für ein Quantil `\(q\)` gibt den Anteil der Verteilung an, der nur Werte höchstens so groß wie `\(q\)` beinhaltet. Sie zeigt also die kumulierte Wahrscheinlichkeit `\([-\infty, q)\)`. - *Beispiel*: "F(100) = 50%" meint, dass der Anteil der Verteilung für Werte nicht größer als 100 50% beträgt. <img src="Kapitel_4_chunk-img/unnamed-chunk-3-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Gesetz der großen Zahl Zieht man (zufällig) immer mehr Werte aus einer Verteilung (mit endlichem Mittelwert), nähert sich der Mittelwert der Stichprobe immer mehr mit dem Mittelwert (oft als Erwartungswert bezeichnet) der Verteilung an <a name=cite-taleb2019technical></a>([Taleb, 2019](https://nassimtaleb.org/2020/01/final-version-fat-tails/)) <img src="Kapitel_4_chunk-img/Normalverteilung-5-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Normal auf dem Fußballfeld Sie und 1000 Ihrer besten Freunde stehen auf der Mittellinie eines Fußballfelds (eng). Auf Kommando werfen alle jeweils eine Münze; bei Kopf geht man einen Schritt nach links, bei Zahl nach rechts. Das wird 16 Mal wiederholt. Wie wird die Verteilung der Positionen wohl aussehen? <img src="Kapitel_4_chunk-img/Normalverteilung-6-1.png" width="100%" style="display: block; margin: auto;" /> .footnote[<a name=cite-mcelreath_statistical_2020></a>([McElreath, 2020](#bib-mcelreath_statistical_2020))] --- ## Normal durch Addieren Die Summe vieler (gleich starker) Zufallswerte (aus der gleichen Verteilung) erzeugt eine Normalverteilung; egal aus welcher Verteilung die Zufallswerte kommen (Zentraler Grenzwertsatz). <img src="Kapitel_4_chunk-img/Normalverteilung-7-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Nicht verwechseln <img src="https://github.com/sebastiansauer/QM2-Folien/raw/main/img/ch33910f1.jpg" width="30%" style="display: block; margin: auto;" /> <a name=cite-freeman_visual_2006></a>([Freeman, 2006](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2465539/)) --- ## Normalverteilung vs. randlastige Verteilungen <img src="Kapitel_4_chunk-img/Normalverteilung-9-1.png" width="100%" style="display: block; margin: auto;" /> Bei randlastigen Verteilungen ("fat tails") kommen Extremereignisse viel häufiger vor als bei Normalverteilungen. Deshalb ist es wichtig sein, zu wissen, ob eine Normalverteilung oder eine randlastige Verteilung vorliegt. Viele statistische Methoden sind nicht zuverlässig bei (stark) randlastigen Methoden ([Taleb, 2019](https://nassimtaleb.org/2020/01/final-version-fat-tails/)) --- ## Beispiele für Normal- und randlastige Verteilungen .pull-left[ ### Normal verteilt - Größe - Münzwürfe - Gewicht - IQ - Blutdruck - Ausschuss einer Maschine ] .pull-right[ ### Randlastig verteilt - Vermögen - Verkaufte Bücher - Ruhm - Aktienkurse - Erdbeben - Pandemien - Kriege - Erfolg auf Tinder - Meteroritengröße - Stadtgrößen ] --- ## Formel der Normalverteilung Vereinfacht ausgedrückt lässt die Normalverteilung `\(\mathcal{N}\)` durch Exponenzieren einer Quadratfunktion beschreiben: `$$\mathcal{N} \propto e^{-x^2}$$` mit `\(e=2.71...\)`, der Eulerschen Zahl. .pull-left[ ```r d <- tibble( x = seq(-3, 3, length.out = 100), y = exp(-x^2) ) d %>% ggplot() + aes(x = x, y = y) + geom_line() ``` ] .pull-right[ <img src="Kapitel_4_chunk-img/Normalverteilung-10-1.png" width="100%" style="display: block; margin: auto;" /> ] Die Normalverteilung wird auch *[Gauss](https://de.wikipedia.org/wiki/Carl_Friedrich_Gau%C3%9F)-Verteilung* oder *Glockenkurve* genannt. --- ## IQ-Verteilung: Quantile `\(IQ \sim \mathcal{N}(100,15)\)` - Wie schlau muss man sein, um zu den unteren 75%, 50%, 25%, 5%, 1% zu gehören? - Anders gesagt: Welcher IQ-Wert wird von 75%, 50%, ... der Leute nicht überschritten? .pull-left[ Ziehen wir Stichproben aus `\(\mathcal{N}(100,15)\)`: ```r d <-tibble( iq = rnorm(1e4, mean = 100, sd = 15)) probs <- c(0.75,.5,.25,.05,.01) d_summary <- d %>% summarise( p = probs, q = quantile(iq, probs)) ``` ] .pull-right[
p
q
0.75
110
0.50
100
0.25
90
0.05
75
0.01
65
Das *Quantil* `\(q\)` zur kumulierten Wahrscheinlichkeit `\(p=75\)` ist 110, etc. ] --- ## IQ-Verteilung: Anteile `\(IQ \sim \mathcal{N}(100,15)\)` - Welcher Anteil `\(p\)` gehört zu den IQ-Werten 75, 100, 115, 130? - Anders gesagt: Welcher Anteil der Wahrscheinlichkeitsmasse der Verteilung liegt unter IQ=75, IQ=100, etc.? .pull-left[ Ziehen wir Stichproben aus `\(\mathcal{N}(100,15)\)`: ```r d <- tibble( iq = rnorm(1e4, mean = 100, sd = 15)) %>% mutate(iq = round(iq)) qs <- c(75,100,115,130) d %>% count(p_100 = iq < 100) %>% mutate(prop = n / sum(n)) ``` ] .pull-right[
p_100
n
prop
FALSE
5090
0.51
TRUE
4910
0.49
Anstelle von `iq < 100` kann man `iq < 115` einsetzen, etc. Die *Verteilungsfunktion* (der Anteil der Wahrscheinlichkeitsmasse), `p`, für IQ-Werte nicht größer als 100, d.h. zum Quantil `\(q=100\)`, ist 50%, etc. ] --- ## Quantile der Normalverteilung visualisiert `\(IQ \sim \mathcal{N}(100, 15)\)` ```r qnorm(.50, mean = 100, sd = 15) # 50%-Quantil pnorm(100, mean = 100, sd = 15) # Verteilungsfunktion für IQ=100 ``` <img src="Kapitel_4_chunk-img/unnamed-chunk-16-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Normalverteilung als konservative Wahl .left-column[ </br> </br> </br> </br> </br> <img src="https://upload.wikimedia.org/wikipedia/commons/f/f8/10_Deutsche_Mark_-_detail.png" width="100%" style="display: block; margin: auto;" /> .tiny[Uni Greifswald, Public domain, via Wikimedia Commons] ] .right-column[ ### Ontologische Begründung - Wirken viele, gleichstarke Einflüsse additiv zusammen, entsteht eine Normalverteilung ([McElreath, 2020](#bib-mcelreath_statistical_2020)), Kap. 4.1.4. ### Epistemologische Begründung - Wenn wir nur wissen, dass eine Variable über einen endlichen Mittelwert und eine endliche Varianz verfügt und wir keine weiteren Annahmen treffen bzw. über kein weiteres Vorwissen verfügen, dann ist die Normalverteilung die plausibelste Verteilung (maximale Entropie) ([McElreath, 2020](#bib-mcelreath_statistical_2020)), Kap. 7 und 10. ] --- ## Zweidimensionale Normalverteilung, unkorreliert <img src="https://github.com/sebastiansauer/QM2-Folien/raw/main/img/mult-norm.png" width="70%" style="display: block; margin: auto;" /> .tiny[[Quelle](https://tex.stackexchange.com/questions/31708/draw-a-bivariate-normal-distribution-in-tikz)] .footnote[[Vgl. auch dieses Diagramm](http://ballistipedia.com/index.php?title=File:Bivariate.png)] --- ## 2D-Normalverteilung mit R, unkorreliert `\(r(X,Y) = 0\)` .pull-left[ ```r d1 <- tibble( x=rnorm(1e4), y=rnorm(1e4) ) ggplot(d1) + aes(x, y) + geom_hex() ggplot(d1) + aes(x, y) + geom_density2d() ``` .tiny[[ggplot-Referenz](https://ggplot2.tidyverse.org/reference/geom_density_2d.html), [Quellcode](https://www.r-graph-gallery.com/2d-density-plot-with-ggplot2.html)] Mit `scale_fill_continuous(type = "viridis")`kann man die Farbpalette der Füllfarbe ändern. ] .pull-right[ <img src="Kapitel_4_chunk-img/Normalverteilung-2-bis-1.png" width="100%" style="display: block; margin: auto;" /><img src="Kapitel_4_chunk-img/Normalverteilung-2-bis-2.png" width="100%" style="display: block; margin: auto;" /> ] --- ## 2D-Normalverteilung mit R, korreliert, r=0.7 .pull-left[ Die ersten paar Zeilen der Daten:
X1
X2
1.07
1.16
−0.15
−0.82
1.47
0.11
Berechnen wir die Korrelation `r`: ```r d2 %>% summarise( r = cor(X1,X2), n = n() ) ```
r
n
0.70
10,000.00
] .pull-right[ <img src="Kapitel_4_chunk-img/Normalverteilung-7-bis-1.png" width="100%" style="display: block; margin: auto;" /><img src="Kapitel_4_chunk-img/Normalverteilung-7-bis-2.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Die Mensch-ärgere-dich-nicht-Verteilung .pull-left[ - Wie lange muss man warten, bis man bei Mensch-ärgere-dich-nicht raus darf? - Wieviel Vitamine sind nach einer Woche noch in meiner Möhre? - Wie lange hält eine Glühbirne, bevor sie den Geist aufgibt? - Wie weit rollt ein Apfel vom Stamm? - Wie weit liegt eine Expertin mit ihrer Schätzung daneben? - ... ] .pull-right[ Solche Fragen kann man mit dieser Verteilung darstellen: <img src="Kapitel_4_chunk-img/unnamed-chunk-17-1.png" width="100%" style="display: block; margin: auto;" /> ] </br> .content-box-blue[Voilà: Die Exponentialverteilung] --- ## Darf ich vorstellen: Die Exponential-Verteilung <img src="Kapitel_4_chunk-img/Post-Regression-18-1.png" width="100%" style="display: block; margin: auto;" /> `$$X \sim \operatorname{Exp}(1)$$` - Eine *Exp*onentialverteilung ist nur für positive Werte, `\(x>0\)`, definiert. - Steigt X um eine Einheit, so ändert sich Y um einen konstanten Faktor. - Sie hat nur einen Parameter, genannt *Rate* oder `\(\lambda\)` ("lambda"). - `\(\frac{1}{\lambda}\)` gibt gleichzeitig Mittelwert und Streuung ("Gestrecktheit") der Verteilung an. - Je größer die Rate `\(\lambda\)`, desto *kleiner* die Streuung und der Mittelwert der Verteilung. - Je größer `\(1/\lambda\)`, desto *größer* die Streuung und der Mittelwert der Verteilung. --- ## Exponentialverteilung berechnen .pull-left[ Im einfachsten Fall gilt: `\(y = 2^{-x}\)` bzw. `\(y = e^{-x}\)` mit `\(e=2.71...\)` ```r d <- tibble( x = seq(0, 5, by = 0.01), y = 2^(-x), y2 = 2.71^(-x)) # e=2.71... d %>% ggplot(aes(x)) + geom_line(aes(y=y)) + geom_line(aes(y=y2), color ="blue") + labs(title = paste0("blau: e hoch x,","schwarz: 2 hoch x")) ``` ] .pull-right[ <img src="Kapitel_4_chunk-img/exp1-plot-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Exponentialverteilung mit R Für `\(e^x\)` -- Exponenziern mit `\(e\)` (Eulersche Zahl) als Basis -- gibt's in R die Funktion `exp()`. Mit `dexp()` bekommt man die zugehörige Wahrscheinlichkeitsdichte. .pull-left[ ```r d <- tibble( x = seq(0, 5,.1), y1 = dexp(x, rate = 1), y2 = dexp(x, rate = 0.5) ) d %>% ggplot(aes(x)) + geom_line(aes(y = y1)) + geom_line(aes(y = y2), color = "blue") ``` ] .pull-right[ <img src="Kapitel_4_chunk-img/Post-Regression-19-1.png" width="100%" style="display: block; margin: auto;" /> `$$\beta \sim \operatorname{Exp}(1)$$` `$$\color{blue}\beta \color{blue}\sim \color{blue}{\operatorname{Exp}(0.5)}$$` ] Je kleiner die Rate `\(\lambda\)`, desto *größer* die Streuung der Verteilung. --- ## Quantile der Exponentialverteilung ... Wenn du nicht mehr weiter weißt, ziehe ein Stichprobe. Wie weit fällt ein Apfel 🍎 vom Stamm 🌳, wenn wir `\(\text{Apfel} \sim \mathcal{E}(1)\)` annehmen? ```r d <- tibble(apfel = rexp(n = 1e4, rate = 1)) d %>% ggplot(aes(x = apfel)) + geom_histogram() ``` <img src="Kapitel_4_chunk-img/unnamed-chunk-19-1.png" width="100%" style="display: block; margin: auto;" /> --- name: gaussmodelle class: center, middle, inverse # Gaussmodelle ## Wie groß sind die !Kung San? --- ## !Kung San .pull-left[ <img src="https://upload.wikimedia.org/wikipedia/commons/b/b5/Wandering_hunters_%28Masarwa_bushmen%29%2C_North_Kalahari_Desert.jpg" width="100%" style="display: block; margin: auto;" /> .tiny[ [Quelle](https://upload.wikimedia.org/wikipedia/commons/b/b5/Wandering_hunters_%28Masarwa_bushmen%29%2C_North_Kalahari_Desert.jpg) Internet Archive Book Images, No restrictions, via Wikimedia Commons] ] .pull-right[ <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/KhoisanLanguagesModernDistribution.png/1024px-KhoisanLanguagesModernDistribution.png" width="100%" style="display: block; margin: auto;" /> .tiny[By Andrewwik.0 - Own work, CC BY-SA 4.0, [Quelle](https://commons.wikimedia.org/w/index.php?curid=79801340)] ] --- background-image: url("https://upload.wikimedia.org/wikipedia/commons/e/e6/Kalahari_PICT0036.JPG") background-position: center background-size: contain .footnote[Winfried Bruenken (Amrum), CC BY-SA 2.5 <https://creativecommons.org/licenses/by-sa/2.5>, via Wikimedia Commons] --- ## !Kung Data .pull-left[ [Datenquelle](https://raw.githubusercontent.com/sebastiansauer/2021-wise/main/Data/Howell1a.csv) .tiny[ ```r library(tidyverse) Kung_path <- # Datenquelle s.o. "https://tinyurl.com/jr7ckxxj" d <- read_csv(Kung_path) d2 <- d %>% filter(age > 18) ``` ] ] .pull-right[ Wir interessieren uns für die Größe der erwachsenen !Kung, `\(N=346\)`: ```r d2 <- d %>% filter(age >= 18) ``` ```r library(rstatix) get_summary_stats(d2) ``` ] </br>
variable
n
min
max
median
q1
q3
iqr
mad
mean
sd
se
ci
age
346
19.00
88.00
40.00
29.00
51.00
22.00
16.31
41.54
15.81
0.85
1.67
height
346
136.53
179.07
154.31
148.59
160.66
12.06
8.47
154.64
7.77
0.42
0.82
male
346
0.00
1.00
0.00
0.00
1.00
1.00
0.00
0.47
0.50
0.03
0.05
weight
346
31.52
62.99
45.01
40.33
49.38
9.04
6.72
45.05
6.46
0.35
0.68
--- ## Wir gehen apriori von normalverteilter Größe aus .left-column[ </br> </br> <img src="https://upload.wikimedia.org/wikipedia/commons/8/83/SVG_Human_Silhouette.svg" width="50%" style="display: block; margin: auto;" /> .footnote[.tiny[Own alterations andFile:SVG_Human_With_All_Organs.svg by Madhero88, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons] ] ] .right-column[ `$$\mu \sim \mathcal{N}(178, 20)$$` <img src="Kapitel_4_chunk-img/Kung-9-1.png" width="70%" style="display: block; margin: auto;" /> ] --- ## Unser Gauss-Modell der !Kung Wir nehmen an, dass `\(\mu\)` und `\(h_i\)` normalverteilt sind und `\(\sigma\)` exponentialverteilt (da notwendig positiv) ist: .left-column[ Likelihood: `\(h_i \sim \mathcal{N}(\mu, \sigma)\)` Prior für `\(\mu\)`: `\(\mu \sim \mathcal{N}(178, 20)\)` Prior für `\(\sigma\)`: `\(\sigma \sim \mathcal{E}(0, 0.1)\)` </br> </br> `\(95\%KI( \mu):\)` `\(178 \pm 40\)` ] .right-column[ <img src="Kapitel_4_chunk-img/Kung-10-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Der Likelihood wird von den Prioris gespeist ### Likelihood Die einzelnen Größen `\(h_i\)` sind normalverteilt mit Mittelwert `\(\mu\)` und Streuung `\(\sigma\)`: `$$h_i \sim \mathcal{N}(\color{blue}{\mu},\color{green}{\sigma})$$` ### Prioris Mittelwert der Größe ist normalverteilt mit `\(\mu=178\)` und `\(\sigma=20\)`: `$$\color{blue}{\mu \sim \mathcal{N}(178, 20)}$$` Die Streuung `\(\sigma\)` der Größen ist exponentialverteil mit `\(\lambda = 0.1\)`. `$$\color{green}{\sigma \sim \mathcal{E}(0.1)}$$` --- ## Welche Beobachtungen sind auf Basis unseres Modells zu erwarten? .pull-left[ ```r n <- 1e4 sim <- tibble(sample_mu = rnorm(n, mean = 178, sd = 20), sample_sigma = rexp(n, rate = 0.1)) %>% mutate(height = rnorm(n, mean = sample_mu, sd = sample_sigma)) height_sim_sd <- sd(sim$height) %>% round() height_sim_mean <- mean(sim$height) %>% round() ``` ] .pull-right[ 💭 Was denkt der Golem (`m41`) apriori von der Größe der !Kung? 🦾 Ziehen wir mal ein paar Stichproben auf Basis des Modells. Voilà: <img src="Kapitel_4_chunk-img/Kung-12-1.png" width="100%" style="display: block; margin: auto;" /> ] .footnote[.tiny[[Quellcode](https://bookdown.org/content/4857/geocentric-models.html#a-gaussian-model-of-height)]] --- ## Priori-Werte prüfen mit der Priori-Prädiktiv-Verteilung - Die Priori-Prädiktiv-Verteilung (`sim`) simuliert Beobachtungen (nur) auf Basis der Priori-Annahmen: `\(h_i \sim \mathcal{N}(\mu, \sigma),\)` `\(\mu \sim \mathcal{N}(178, 20),\)` `\(\sigma \sim \mathcal{E}(0.1)\)` - So können wir prüfen, ob die Priori-Werte vernünftig sind. .pull-left[ Die Priori-Prädiktiv-Verteilung zeigt, dass unsere Priori-Werte ziemlich vage sind, also einen zu breiten Bereich an Größenwerten zulassen: <img src="Kapitel_4_chunk-img/Kung-13-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ Anteil `\(h_i > 200\)`: ```r anteil_großer_kung <- sim %>% count( height > 200) %>% mutate(prop = n/sum(n)) anteil_großer_kung ``` ``` ## # A tibble: 2 × 3 ## `height > 200` n prop ## <lgl> <int> <dbl> ## 1 FALSE 8328 0.833 ## 2 TRUE 1672 0.167 ``` 🤔 Sehr große Buschleute? 17 Prozent sind größer als 2 Meter. Das ist diskutabel, muss aber kein schlechter Prior sein. ] --- ## Vorhersagen der Priori-Werte <img src="Kapitel_4_chunk-img/Kung-15-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Extrem vage Priori-Verteilung für die Streuung? `$$\sigma \sim \mathcal{E}(\lambda=0.01)$$` .pull-left[ <img src="Kapitel_4_chunk-img/Kung-16-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ Die Streuung der Größen ist weit: <img src="Kapitel_4_chunk-img/unnamed-chunk-22-1.png" width="100%" style="display: block; margin: auto;" /> ] 🤔 Das Modell geht apriori von ein paar Prozent Menschen mit *negativer* Größe aus. Ein Haufen Riesen 👹 werden auch erwartet. 🤯 Vage (flache, informationsarme, "neutrale", "objektive") Priori-Werte machen oft keinen Sinn. --- ## Zufällige Motivationsseite <img src="https://raw.githubusercontent.com/sebastiansauer/QM2-Folien/main/img/pretty_good.gif" width="100%" style="display: block; margin: auto;" /> --- ## Posteriori-Verteilung des Größen-Modells, `m41` .pull-left[ <img src="Kapitel_4_chunk-img/post-m41-plot-1.png" width="100%" style="display: block; margin: auto;" /> <img src="Kapitel_4_chunk-img/unnamed-chunk-24-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ - Wir bekommen eine Wahrscheinlichkeitsverteilung für `\(\mu\)` und eine für `\(\sigma\)` (bzw. eine zweidimensionale Verteilung, für die `\(\mu,\sigma\)`-Paare). - Trotz des eher vagen Priors ist die Streuung Posteriori-Werte für `\(\mu\)` und `\(\sigma\)` klein: Die große Stichprobe hat die Priori-Werte überstimmt. - Ziehen wir Stichproben aus der Posteriori-Verteilung, so können wir interessante Fragen stellen. ] --- ## Hallo, Posteriori-Verteilung ... wir hätten da mal ein paar Fragen an Sie. 🕵 .pull-left[ - Mit welcher Wahrscheinlichkeit ist die mittlere !Kung-Person größer als 1,55m? - Welche mittlere Körpergröße wird mit 95% Wahrscheinlichkeit nicht überschritten, laut dem Modell? - In welchem 90%-PI liegt `\(\mu\)` vermutlich? - Mit welcher Unsicherheit `\(\sigma\)` ist die Schätzung der mittleren Körpergröße behaftet? - Welcher Wert der mittleren Körpergröße hat die höchste Wahrscheinlichkeit? ] .pull-left[ <img src="Kapitel_4_chunk-img/Kung-22-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Posteriori-Stichproben mit `stan_glm()` berechnen - Mit `stan_glm()` können wir komfortabel die Posteriori-Verteilung berechnen. - Die Gittermethode wird nicht verwendet, aber die Ergebnisse sind - in bestimmten Situationen - ähnlich. - Es werden aber auch viele Stichproben simuliert (sog. MCMC-Methode). - Gibt man keine Priori-Werte an, so greift die Funktion auf Standardwerte zurück. .pull-left[ ```r library(rstanarm) # berechnet Post.-Vert.: stan_glm( # modelldefinition: AV ~ UV, , # Datensatz: data = meine_daten ) ``` ] .pull-right[ Modelldefinition: `\(h_i \sim \mathcal{N}(\mu, \sigma)\)`, Likelihood `\(\mu \sim \mathcal{N}(155, 19)\)`, Prior Größenmittelwert `\(\sigma \sim \mathcal{E}(0.13)\)`, Prior Streuung der Größen ] --- ## Ausgabe von `stan_glm()` ```r m41 <- stan_glm(height ~ 1, data = d2) print(m41) ``` ``` ## stan_glm ## family: gaussian [identity] ## formula: height ~ 1 ## observations: 346 ## predictors: 1 ## ------ ## Median MAD_SD ## (Intercept) 154.6 0.4 ## ## Auxiliary parameter(s): ## Median MAD_SD ## sigma 7.8 0.3 ## ## ------ ## * For help interpreting the printed output see ?print.stanreg ## * For info on the priors used see ?prior_summary.stanreg ``` --- ## Wie tickt `stan_glm()`? .left-column[ </br> </br> </br> <img src="https://mc-stan.org/rstanarm/reference/figures/stanlogo.png" width="100%" style="display: block; margin: auto;" /> .tiny[[Quelle](https://mc-stan.org/), <a name=cite-stan></a>([Team, 2021](https://mc-stan.org))] ] .right-column[ - *Stan* ist eine Software zur Berechnung von Bayesmodellen; das Paket `rstanarm` stellt Stan für uns bereit. - `stan_glm()` ist für die Berechnung von Regressionsmodellen ausgelegt. - Will man nur die Verteilung einer Variablen (wie `heights`) schätzen, so hat man man ... eine Regression ohne Prädiktor. - Eine Regression ohne Prädiktor schreibt man auf Errisch so: `y ~ 1`. Die `1` steht also für die nicht vorhandene UV; `y` meint die AV (`height`). - `MAD_SD` ist eine robuste Version der Streuung, mit inhaltlich gleicher Aussage - `(Intercept)` (Achsenabschnitt) gibt den Mittelwert an. ] [Dokumentation RstanARM](https://mc-stan.org/rstanarm/) --- ## Stichproben aus der Posteriori-Verteilung ziehen ```r post_m41 <- as_tibble(m41) print(post_m41) ``` .pull-left[ Hier die ersten paar Zeilen von `post_m41`:
(Intercept)
sigma
154.9014
7.951013
154.9072
8.072041
155.0016
7.523712
154.1477
7.599040
154.3553
7.690318
154.7677
7.683235
] .pull-right[ Mit welcher Wahrscheinlichkeit ist `\(\mu>155\)`? ```r names(post_m41) <- c("mu", "sigma") post_m41 %>% count(mu > 155) %>% mutate(prop = n/sum(n)) ``` ``` ## # A tibble: 2 × 3 ## `mu > 155` n prop ## <lgl> <int> <dbl> ## 1 FALSE 3224 0.806 ## 2 TRUE 776 0.194 ``` ] --- ## Antworten von der Posteriori-Verteilung .pull-left[ Welche mittlere Körpergröße wird mit 95% Wahrscheinlichkeit nicht überschritten, laut dem Modell `m41`? ```r post_m41 %>% summarise( q95 = quantile(mu, .95)) ``` ``` ## # A tibble: 1 × 1 ## q95 ## <dbl> ## 1 155. ``` ] .pull-right[ In welchem 90%-PI liegt `\(\mu\)` vermutlich? ```r post_m41 %>% summarise( pi_90 = quantile(mu, c(0.05, 0.95))) ``` ``` ## # A tibble: 2 × 1 ## pi_90 ## <dbl> ## 1 154. ## 2 155. ``` ] </br> </br> </br> 🏋️ Ähnliche Fragen bleiben als Übung für die Leseris 🤓. --- ## Standard-Prioriwerte bei `stan_glm()` 1/3 ```r prior_summary(m41) ``` ``` ## Priors for model 'm41' ## ------ ## Intercept (after predictors centered) ## Specified prior: ## ~ normal(location = 155, scale = 2.5) ## Adjusted prior: ## ~ normal(location = 155, scale = 19) ## ## Auxiliary (sigma) ## Specified prior: ## ~ exponential(rate = 1) ## Adjusted prior: ## ~ exponential(rate = 0.13) ## ------ ## See help('prior_summary.stanreg') for more details ``` --- ## Standard-Prioriwerte bei `stan_glm()` 2/3 - `stan_glm()` verwendet (in der Voreinstellung) *schwach informative* Priori-Werte, die nur wenig Vorabwissen in das Modell geben. - Es werden dafür die Stichproben-Daten als Priori-Daten verwendet. - Man sollte diese Standardwerte als Minimalvorschlag sehen. Kennt man sich im Sachgebiet aus, kann man meist bessere Prioris finden. - Die Voreinstellung hat keinen tiefen Hintergrund; andere Werte wären auch denkbar. - `Intercept`: `\(\mu\)`, der Mittelwert der Verteilung `\(X\)` - `\(\mu \sim \mathcal{N}(\bar{X}, sd(X)\cdot 2.5)\)` - als Streuung von `\(\mu\)` wird die 2.5-fache Streuung der Stichprobe angenommen. - `Auxiliary (sigma)`: `\(\sigma\)`, die Streuung der Verteilung `\(X\)` - `\(\sigma \sim \mathcal{E}(\lambda=1/sd(X))\)` - als Streuung von `\(h_i\)` wird 7.8 angenommen. --- ## Visualisierung verschiedener Exponentialverteilungen <img src="Kapitel_4_chunk-img/unnamed-chunk-32-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Modell `m42`: unsere Priori-Werte ```r m42 <- stan_glm(height ~ 1, prior_intercept = normal(178, 20), # mu prior_aux = exponential(0.1), # sigma refresh = FALSE, # bitte nicht so viel Ausgabe drucken data = d2) print(m42) ``` ``` ## stan_glm ## family: gaussian [identity] ## formula: height ~ 1 ## observations: 346 ## predictors: 1 ## ------ ## Median MAD_SD ## (Intercept) 154.7 0.4 ## ## Auxiliary parameter(s): ## Median MAD_SD ## sigma 7.8 0.3 ## ## ------ ## * For help interpreting the printed output see ?print.stanreg ## * For info on the priors used see ?prior_summary.stanreg ``` --- ## Posteriori-Verteilung plotten .pull-left[ ```r library(bayesplot) plot(m42, pars = "(Intercept)") plot(m42, pars = "sigma") #plot(m42) ``` Im Standard werden Mediane und 50%- sowie 90%-Perzentilintervalle gezeigt, [s. Doku](https://mc-stan.org/rstanarm/reference/plot.stanreg.html). ] .pull-right[ <img src="Kapitel_4_chunk-img/unnamed-chunk-36-1.png" width="100%" style="display: block; margin: auto;" /><img src="Kapitel_4_chunk-img/unnamed-chunk-36-2.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Fazit .pull-left[ - Wir haben die Posteriori-Verteilung für ein Gauss-Modell berechnet. - Dabei hatten wir ein einfaches Modell mit metrischer Zielvariablen, ohne Prädiktoren, betrachtet. - Die Zielvariable, Körpergröße (`height`), haben wir als normalverteilt mit den Parametern `\(\mu\)` und `\(\sigma\)` angenommen. - Für `\(\mu\)` und `\(\sigma\)` haben wir jeweils keinen einzelnen (fixen) Wert angenommen, sondern eine Wahrscheinlichkeitsverteilung, der mit der Priori-Verteilung für `\(\mu\)` bzw. `\(\sigma\)` festgelegt ist. ] .pull-right[ .center[.content-box-blue[🧡 Bleiben Sie dran!]] </br> <img src="https://github.com/sebastiansauer/QM2-Folien/raw/main/img/chicken_standard_deviation.jpg" width="100%" style="display: block; margin: auto;" /> ] --- name: hinweise class: center, middle, inverse # Hinweise --- ## Zu diesem Skript - Dieses Skript bezieht sich auf folgende [Lehrbücher](#literatur): - Statistical Rethinking, Kapitel 4.1 - 4.3 - Dieses Skript wurde erstellt am 2021-11-08 14:08:29 - Lizenz: [CC-BY](https://creativecommons.org/licenses/by/4.0/) - Autor ist Sebastian Sauer. - Um diese HTML-Folien korrekt darzustellen, ist eine Internet-Verbindung nötig. - Mit der Taste `?` bekommt man eine Hilfe über Shortcuts. - Wenn Sie die Endung `.html` in der URL mit `.pdf` ersetzen, bekommen Sie die PDF-Version der Datei. Wenn Sie mit `.Rmd` ersetzen, den Quellcode. - Eine PDF-Version kann erzeugt werden, indem man im Chrome-Browser druckt (Drucken als PDF). --- name: literatur ## Literatur <a name=bib-freeman_visual_2006></a>[Freeman, M.](#cite-freeman_visual_2006) (2006). "A visual comparison of normal and paranormal distributions". In: _Journal of Epidemiology and Community Health_ 60.1, p. 6. <a name=bib-gelman_regression_2021></a>[Gelman, A., J. Hill, and A. Vehtari](#cite-gelman_regression_2021) (2021). _Regression and other stories_. Analytical methods for social research. Cambridge University Press. <a name=bib-mcelreath_statistical_2020></a>[McElreath, R.](#cite-mcelreath_statistical_2020) (2020). _Statistical rethinking: a Bayesian course with examples in R and Stan_. 2nd ed. CRC texts in statistical science. Taylor and Francis, CRC Press. <a name=bib-taleb2019technical></a>[Taleb, N. N.](#cite-taleb2019technical) (2019). _The statistical consequences of fat tails, papers and commentaries_. <a name=bib-stan></a>[Team, S. D.](#cite-stan) (2021). _Stan Modeling Language Users Guide and Reference Manual Version 2.28_.