class: right, bottom, test, title-slide # Lineare Modelle ## Kapitel 5 --- name: gliederung <style> .center2 { margin: 0; position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } </style> ## Gliederung </br> .xxlarge[ 1. [Teil 1: Die Post-Verteilung der Regression berechnen](#teil-1) 2. [Teil 2: Die Post-Verteilung befragen](#teil-2) 3. [Teil 3: Die PPV befragen](#teil-3) 4. [Hinweise](#hinweise) ] --- name: teil-1 class: center, middle # Teil 1 ## Post-Verteilung der Regression --- ## Einfache Regression .pull-left[ - Die (einfache) Regression prüft, inwieweit zwei Variablen, `\(Y\)` und `\(X\)` linear zusammenhängen. - Je mehr sie zusammenhängen, desto besser kann man `\(X\)` nutzen, um `\(Y\)` vorherzusagen (und umgekehrt). - Hängen `\(X\)` und `\(Y\)` zusammen, heißt das nicht (unbedingt), dass es einen *kausalen* Zusammenhang zwische `\(X\)` und `\(Y\)` gibt. - Linear bedeutet, der Zusammenhang ist additiv und konstant: wenn `\(X\)` um eine Einheit steigt, steigt `\(Y\)` immer um `\(b\)` Einheiten (nicht kausal, sondern deskriptiv gemeint). ] .pull-right[ <img src="Kapitel_5_chunk-img/Post-Regression-2-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Statistiken zum !Kung-Datensatz [Datenquelle](https://raw.githubusercontent.com/sebastiansauer/2021-wise/main/Data/Howell1a.csv), <a name=cite-mcelreath_statistical_2020></a>([McElreath, 2020](#bib-mcelreath_statistical_2020)) .tiny[ ```r library(tidyverse) library(rstatix) Kung_path <- "https://tinyurl.com/jr7ckxxj" # Datenquelle s.o. d <- read_csv(Kung_path) d2 <- d %>% filter(age > 18) get_summary_stats(d2) ``` ]
variable
n
min
max
median
q1
q3
iqr
mad
mean
sd
se
ci
age
346.0
19.0
88.0
40.0
29.0
51.0
22.0
16.3
41.5
15.8
0.8
1.7
height
346.0
136.5
179.1
154.3
148.6
160.7
12.1
8.5
154.6
7.8
0.4
0.8
male
346.0
0.0
1.0
0.0
0.0
1.0
1.0
0.0
0.5
0.5
0.0
0.1
weight
346.0
31.5
63.0
45.0
40.3
49.4
9.0
6.7
45.0
6.5
0.3
0.7
Das mittlere Körpergewicht (`weight`) liegt bei ca. 45kg (sd 7 kg). --- ## Visualisierung von `weight` und `height` Explorative Datenanalyse (keine Inferenz auf Populationswerte, sondern auf die Stichprobe bezogen) <img src="Kapitel_5_chunk-img/Post-Regression-6-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Prädiktor zentrieren 1/2 - Zieht man von jedem Gewichtswert den Mittelwert ab, so bekommt man die Abweichung des Gewichts vom Mittelwert (Prädiktor "zentrieren"). - Wenn man den Prädiktor (`weight`) zentriert hat, ist der Achsenabschnitt, `\(\alpha\)`, einfacher zu verstehen. - In einem Modell mit zentriertem Prädiktor (`weight`) gibt der Achsenabschnitt die Größe einer Person mit durchschnittlichem Gewicht an. - Würde man `weight` nicht zentrieren, gibt der Achsenabschnitt die Größe einer Person mit `weight=0` an, was nicht wirklich sinnvoll zu interpretieren ist. <a name=cite-gelman_regression_2021></a>([Gelman, Hill, and Vehtari, 2021](#bib-gelman_regression_2021)Kap. 10.4, 12.2) --- ## Prädiktor zentrieren 2/2 .pull-left[ ```r d2 <- d2 %>% mutate( weight_c = weight - mean(weight)) ``` ] .pull-right[
height
weight
age
male
weight_c
152
48
63
1
3
140
36
63
0
−9
137
32
65
0
−13
] <img src="Kapitel_5_chunk-img/Post-Regression-9-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Bei jedem Prädiktorwert eine Post-Verteilung für `\(\mu\)` <img src="Kapitel_5_chunk-img/Post-Regression-12-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Modelldefinition von `m43` - Für jede Ausprägung des Prädiktors (`weight`), `\(h_i\)`, wird eine Post-Verteilung für die abhängige Variable (`height`) berechnet. - Der Mittelwert `\(\mu\)` für jede Post-Verteilung ergibt sich aus dem .green[linearen Modell (unserer Regressionsformel)]. - Die Post-Verteilung berechnet sich auf Basis der .blue[Priori-Werte] und des .red[Likelihood] (Bayes-Formel). - Wir brauchen .blue[Priori-Werte] für die Steigung `\(\beta\)` und den Achsenabschnitt `\(\alpha\)` der Regressionsgeraden. - Außerdem brauchen wir einen .blue[Priori-Wert], der die Streuung `\(\sigma\)` der Größe (`height`) angibt; dieser Wert wird als exonentialverteilt angenommen. - Der .green[Likelihood] gibt an, wie wahrscheinlich ein Wert `height` ist, gegeben `\(\mu\)` und `\(\sigma\)`. $$ `\begin{align*} \color{red}{\text{height}_i} & \color{red}\sim \color{red}{\operatorname{Normal}(\mu_i, \sigma)} && \color{red}{\text{Likelihood}} \\ \color{green}{\mu_i} & \color{green}= \color{green}{\alpha + \beta\cdot \text{weight}_i} && \color{green}{\text{Lineares Modell} } \\ \color{blue}\alpha & \color{blue}\sim \color{blue}{\operatorname{Normal}(178, 20)} && \color{blue}{\text{Priori}} \\ \color{blue}\beta & \color{blue}\sim \color{blue}{\operatorname{Normal}(0, 10)} && \color{blue}{\text{Priori}}\\ \color{blue}\sigma & \color{blue}\sim \color{blue}{\operatorname{Exp}(0.1)} && \color{blue}{\text{Priori}} \end{align*}` $$ --- ## Likelihood, `m43` $$ `\begin{aligned} \color{red}{\text{height}_i} & \color{red}\sim \color{red}{\operatorname{Normal}(\mu_i, \sigma)} && \color{red}{\text{Likelihood}} \end{aligned}` $$ - Der Likelihood von `m43` ist ähnlich zu den vorherigen Modellen (`m41, m42`). - Nur gibt es jetzt ein kleines "Index-i" am `\(\mu\)` und am `\(h\)` (h wie `heights`). - Es gibt jetzt nicht mehr nur einen Mittelwert `\(\mu\)`, sondern für jede Beobachtung (Zeile) einen Mittelwert `\(\mu_i\)`. - Lies etwa so: > "Die Wahrscheinlichkeit, eine bestimmte Größe bei Person `\(i\)` zu beobachten, gegeben `\(\mu\)` und `\(\sigma\)` ist normalverteilt (mit Mittelwert `\(\mu\)` und Streuung `\(\sigma\)`)". --- ## Regressionsformel, `m43` $$ `\begin{aligned} \color{green}{\mu_i} & \color{green}= \color{green}{\alpha + \beta\cdot \text{weight}_i} && \color{green}{\text{Lineares Modell} } \\ \end{aligned}` $$ - `\(\mu\)` ist jetzt nicht mehr ein Parameter, der (stochastisch) geschätzt werden muss. `\(\mu\)` wird jetzt (deterministisch) *berechnet*. Gegeben `\(\alpha\)` und `\(\beta\)` ist `\(\mu\)` ohne Ungewissheit bekannt. - `\(\text{weight}_i\)` ist der Prädiktorwert (`weight`) der `\(i\)`ten Beobachtung, also einer !Kung-Person (Zeile `\(i\)` im Datensatz). - Lies etwa so: > "Der Mittelwert `\(\mu_i\)` der `\(i\)`ten Person berechnet sich als Summe von `\(\alpha\)` und `\(\beta\)` mal `\(\text{weight}_i\)`". - `\(\mu_i\)` ist eine lineare Funktion von `weight`. - `\(\beta\)` gibt den Unterschied in `height` zweier Beobachtung an, die sich um eine Einheit in `weight` unterscheiden (Steigung der Regressionsgeraden). - `\(\alpha\)` gibt an, wie groß `\(\mu\)` ist, wenn `weight` Null ist (Achsenabschnitt, engl. intercept). --- ## Priori-Werte des Modells `m43` $$ `\begin{align*} \color{blue}\alpha & \color{blue}\sim \color{blue}{\operatorname{Normal}(178, 20)} && \color{blue}{\text{Priori Achsenabschnitt}} \\ \color{blue}\beta & \color{blue}\sim \color{blue}{\operatorname{Normal}(0, 10)} && \color{blue}{\text{Priori Regressionsgewicht}}\\ \color{blue}\sigma & \color{blue}\sim \color{blue}{\operatorname{Exp}(0.1)} && \color{blue}{\text{Priori Sigma}} \end{align*}` $$ - Parameter sind hypothetische Kreaturen: Man kann sie nicht beobachten, sie existieren nicht wirklich. Ihre Verteilungen nennt man Priori-Verteilungen. - `\(\alpha\)` wurde in `m41` als `\(\mu\)` bezeichnet, da wir dort eine "Regression ohne Prädiktoren" berechnet haben. - `\(\sigma\)` ist uns schon als Parameter bekannt und behält seine Bedeutung aus dem letzten Kapitel. - Da `height` nicht zentriert ist, der Mittelwert von `\(\alpha\)` bei 178 und nicht 0. - `\(\beta\)` fasst unser Vorwissen, ob und wie sehr der Zusammenhang zwischen Gewicht und Größe positiv (gleichsinnig) ist. - 🤔 Moment. Dieser Prior, `\(\beta\)` erachtet positive und negative Zusammenhang als gleich wahrscheinlich?! - Sind wir wirklich indifferent, ob der Zusammenhang von Gewicht und Größe positiv oder negativ ist? [Nein, sind wir nicht.](https://media.giphy.com/media/daPCSjwus6UR2JxRX1/giphy.gif) --- ## Priori-Prädiktiv-Verteilung für `m43` - Was denkt [wir](https://media.giphy.com/media/Aausss8uUBIe3bZ3d2/giphy.gif) bzw. unser Golem *apriori* über den Zusammenhang von Größe und Gewicht? - Um diese Frage zu beantworten ziehen wir Stichproben aus den Priori-Verteilungen des Modells, also für `\(\alpha\)`, `\(\beta\)` und `\(\sigma\)`. .pull-left[
a
b
sigma
182.5
1.0
1.4
181.7
8.7
23.9
142.6
8.3
1.9
162.0
3.4
4.2
178.1
5.0
49.0
] .pull-right[ Jede Zeile definiert eine Regressionsgerade. ] --- ## Prior-Prädiktiv-Simulation für `m43` mit `stan_glm()` ```r m43_prior_pred <- stan_glm(height ~ weight_c, prior = normal(0, 10), # beta prior_intercept = normal(178, 20), # alpha prior_aux = exponential(0.1), # sigma refresh = FALSE, prior_PD = TRUE, # DIESER Schalter macht's data = d2) m43_prior_pred_draws <- m43_prior_pred %>% as_tibble() %>% rename(a = `(Intercept)`, b = weight_c) %>% slice_sample(n = 50) ``` --- ## Visualisieren der Prior-Prädiktiv-Verteilung ```r d2 %>% ggplot() + geom_point(aes(x = weight_c, y = height)) + geom_abline(data = m43_prior_pred_draws, aes(intercept = a, slope = b), color = "skyblue", size = 0.2) + scale_y_continuous(limits = c(0, 500)) + geom_hline(yintercept = 272, size = .5) + geom_hline(yintercept = 0, linetype = "dashed") ``` 🤯 Einige dieser Regressionsgeraden sind unsinnig! <img src="Kapitel_5_chunk-img/unnamed-chunk-18-1.png" width="100%" style="display: block; margin: auto;" /> .tiny[Die durchgezogene horizontale Linie gibt die Größe des [größten Menschens, Robert Pershing Wadlow](https://en.wikipedia.org/wiki/Robert_Wadlow), an.] --- ## Ein positiver Wert für `\(\beta\)` ist plausibler .pull-left[ ### Oh no Eine Normalverteilung mit viel Streuung: <img src="Kapitel_5_chunk-img/Post-Regression-16-1.png" width="100%" style="display: block; margin: auto;" /> 👎 `\(\beta=-20\)` wäre mit diesem Prior gut möglich: Pro kg Gewicht sind Menschen im Schnitt 20cm kleiner, laut dem Modell. Quatsch. ] .pull-right[ ### Oh yes Wir bräuchten eher so eine Verteilung, mit mehr Masse auf der positiven Seite (x>0): <img src="Kapitel_5_chunk-img/Post-Regression-17-1.png" width="100%" style="display: block; margin: auto;" /> 👍 Vermutlich besser: Ein Großteil der Wahrscheinlichkeitsmasse ist `\(X>0\)`. Allerdings gibt's keine Gewähr, dass unser Prior "richtig" ist. ] --- ## Priori-Prädiktiv-Simulation, 2. Versuch .right-column[ ```r m43a_prior_pred <- stan_glm( height ~ weight_c, prior = normal(2, 2), # Regressionsgewicht prior_intercept = normal(178, 20), # mu prior_aux = exponential(0.1), # sigma refresh = FALSE, # Schalter für Prior-Pred-Verteilung: prior_PD = TRUE, data = d2) m43a_prior_pred_draws <- m43a_prior_pred %>% as_tibble() %>% # Spaltennamen kürzen: rename(a = `(Intercept)`) %>% rename(b = weight_c, s = sigma) ``` ] .left-column[ </br>
a
b
s
146.0
2.1
1.7
182.8
1.5
1.8
202.7
3.0
8.9
151.6
0.6
4.4
157.1
−0.4
7.7
] </br> .footnote[Das Argument `prior_PD = TRUE` sorgt dafür, dass keine Posteriori-Verteilung, sondern eine Prior-Prädiktiv-Verteilung berechnet wird.] --- ## Visualisieren der Prior-Prädiktiv-Verteilung, `m43a` Unsere Priori-Werte scheinen einigermaßen vernünftige Vorhersagen zu tätigen. Allerdings erwartet unser Golem einige Riesen. <img src="Kapitel_5_chunk-img/unnamed-chunk-21-1.png" width="100%" style="display: block; margin: auto;" /> .tiny[Die durchgezogene horizontale Linie gibt die Größe des [größten Menschens, Robert Pershing Wadlow](https://en.wikipedia.org/wiki/Robert_Wadlow), an.] --- ## Moment, kann hier jeder machen, was er will? .center[ .content-box-blue[Es doch den einen, richtigen, objektiven Priori-Wert geben?!] ] </br> .center[ .content-box-blue[Kann denn jeder hier machen, was er will?! Wo kommen wir da hin?!] ] </br> </br> > This is a mistake. There is no more a uniquely correct prior than there is a uniquely correct likelihood. Statistical models are machines for inference. Many machines will work, but some work better than others. Priors can be wrong, but only in the same sense that a kind of hammer can be wrong for building a table. [McElreath (2020)](#bib-mcelreath_statistical_2020), p. 96. --- ## Hier ist unser Modell, `m43a` $$ `\begin{align} \text{height}_i &\sim \operatorname{Normal}(\mu_i, \sigma) \\ \mu_i &= \alpha + \beta \cdot \text{weight}_i\\ \alpha &\sim \operatorname{Normal}(178, 20)\\ \beta &\sim \operatorname{Normal}(5,3)\\ \sigma &\sim \operatorname{Exp}(0.1) \end{align}` $$ ```r # Zufallszahlen festlegen: set.seed(42) # Posteriori-Vert. berechnen: m43a <- stan_glm( height ~ weight_c, # Regressionsformel prior = normal(5, 3), # beta prior_intercept = normal(178, 20), # mu prior_aux = exponential(0.1), # sigma refresh = 0, # zeig mir keine Details data = d2) ``` --- ## Eine Zusammenfassung der Posteriori-Verteilung für `m43a` ``` ## stan_glm ## family: gaussian [identity] ## formula: height ~ weight_c ## observations: 346 ## predictors: 2 ## ------ ## Median MAD_SD ## (Intercept) 154.6 0.3 ## weight_c 0.9 0.0 ## ## Auxiliary parameter(s): ## Median MAD_SD ## sigma 5.1 0.2 ## ## ------ ## * For help interpreting the printed output see ?print.stanreg ## * For info on the priors used see ?prior_summary.stanreg ``` --- name: teil-2 class: center, middle # Teil 2 ## Die Post-Verteilung befragen --- ## Mittelwerte von `\(\alpha\)` und `\(\beta\)` aus der Post-Verteilung .pull-left[ ```r post_m43a <- as_tibble(m43a) ``` Die ersten paar Zeilen:
id
(Intercept)
weight_c
sigma
1
154.8
0.9
4.9
2
154.7
0.8
4.8
3
154.9
1.0
5.1
] .pull-right[ ```r names(post_m43a) <- c("a", "b", "sigma") post_m43a_summary <- post_m43a %>% summarise( a_mean = mean(a), b_mean = mean(b), s_mean = mean(sigma)) ```
a_mean
b_mean
s_mean
154.7
0.9
5.1
] --- ## Visualisieren der "mittleren" Regressiongeraden .pull-left[
a_mean
b_mean
s_mean
154.7
0.9
5.1
] .pull-right[ ```r d2 %>% ggplot() + aes(x = weight_c, y = height) + geom_point() + geom_abline( slope = 0.9, intercept = 154, color = "blue") ``` ] <img src="Kapitel_5_chunk-img/unnamed-chunk-24-1.png" width="100%" style="display: block; margin: auto;" /> --- ## Zentrale Statistiken zu den Parametern In diesem Modell gibt es drei Parameter: `\(\mu, \beta, \sigma\)`. .pull-left[ ### Mittelwerte - Mittlere Größe? - Schätzwert für den Zusammenhang von Gewicht und Größe? - Schätzwert für Ungewissheit in der Schätzung der Größe? ```r post_m43a_summary ``` ``` ## # A tibble: 1 × 3 ## a_mean b_mean s_mean ## <dbl> <dbl> <dbl> ## 1 155. 0.908 5.14 ``` ] .pull-right[ ### Streuungen - Wie unsicher sind wir uns in den Schätzungen der Parameter? ```r post_m43a_summary2 <- post_m43a %>% summarise( a_sd = sd(a), b_sd = sd(b), s_sd = sd(sigma)) ```
a_sd
b_sd
s_sd
0.28
0.04
0.19
] --- ## Ungewissheit von `\(\alpha\)` und `\(\beta\)` aus der Post-Verteilung .pull-left[ Die ersten 10 Stichproben ```r d2 %>% ggplot(aes(x = weight_c, y = height)) + geom_point() + geom_abline( data = post_m43a %>% slice_head(n=10), aes(slope = b, intercept = a), alpha = .3) ``` <img src="Kapitel_5_chunk-img/Post-Regression-befragen-10-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ Die ersten 100 Stichproben ```r d2 %>% ggplot(aes(x = weight_c, y = height)) + geom_point() + geom_abline( data = post_m43a %>% slice_head(n=100), aes(slope = b, intercept = a), alpha = .02) ``` <img src="Kapitel_5_chunk-img/Post-Regression-befragen-11-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Fragen zu Quantilen des Achsenabschnitts Bei einem zentrierten Prädiktor misst der Achsenabschnitt die mittlere Größe. .pull-left[ - Welche mittlere Größe mit zu 50%, 90% Wskt. nicht überschritten? - Welche mittlere Größe mit zu 95% Wskt. nicht unterschritten? - Von wo bis wo reicht der innere 50%-Schätzbereich der mittleren Größe? ``` ## # A tibble: 1 × 3 ## q_50 q_90 q_05 ## <dbl> <dbl> <dbl> ## 1 155. 155. 154. ``` ``` ## # A tibble: 2 × 1 ## pi_50 ## <dbl> ## 1 154. ## 2 155. ``` ] .pull-right[ ```r post_m43a %>% summarise( q_50 = quantile(a, prob = .5), q_90 = quantile(a, prob = .9), q_05 = quantile(a, prob = .05)) post_m43a %>% summarise( pi_50 = quantile(a, prob = c(.25, .75))) ``` ] --- ## Fragen zu Wahrscheinlichkeitsmassen des Achsenabschnitts Bei einem zentrierten Prädiktor misst der Achsenabschnitt die mittlere Größe. .pull-left[ - Wie wahrscheinlich ist es, dass die mittlere Größe bei mind. 155 cm liegt? ```r post_m43a %>% count(gross = a >= 155) %>% mutate(prop = n / sum(n)) ``` ``` ## # A tibble: 2 × 3 ## gross n prop ## <lgl> <int> <dbl> ## 1 FALSE 3574 0.894 ## 2 TRUE 426 0.106 ``` Die Wahrscheinlichkeit beträgt 0.11. ] .pull-right[ - Wie wahrscheinlich ist es, dass die mittlere Größe höchstens 154.5 cm beträgt? ```r post_m43a %>% count(klein = (a <= 154.5)) %>% mutate(prop = n / sum(n)) ``` ``` ## # A tibble: 2 × 3 ## klein n prop ## <lgl> <int> <dbl> ## 1 FALSE 2810 0.702 ## 2 TRUE 1190 0.298 ``` Die Wahrscheinlichkeit beträgt 0.3. ] --- ## Ungewissheit von Achsenabschnitt und Steigung ... als Histogramme visualisiert .pull-left[ ### Achsenabschnitt ```r post_m43a %>% ggplot(aes(x = a)) + geom_density() ``` <img src="Kapitel_5_chunk-img/Post-Regression-befragen-13-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ ### Regressionsgewicht (Steigung) ```r post_m43a %>% ggplot(aes(x = b)) + geom_density() ``` <img src="Kapitel_5_chunk-img/Post-Regression-befragen-14-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Ungewissheit für `\(\mu|\text{weight}=45, 50\)` .pull-left[ - 50 kg ist 5 kg über dem MW - `b` ist zentriert: `b=0` ist MW von `weight` ```r mu_at_45_50 <- post_m43a %>% mutate(mu_at_45 = a, mu_at_50 = a + b * 5) ``` ```r mu_at_45_50 %>% ggplot(aes(x = mu_at_45)) + geom_density() ``` ```r mu_at_45_50 %>% ggplot(aes(x = mu_at_50)) + geom_density() ``` ] .pull-right[ <img src="Kapitel_5_chunk-img/Post-Regression-befragen-17-1.png" width="100%" style="display: block; margin: auto;" /> <img src="Kapitel_5_chunk-img/Post-Regression-befragen-18-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Post-Verteilung bedingt auf einen Prädiktorwert .pull-left[ Was ist das 90% PI für `\(\mu|w=50\)` ? ```r mu_at_45_50 %>% summarise(pi = quantile(mu_at_50, prob = c(0.05, .95))) ``` ``` ## # A tibble: 2 × 1 ## pi ## <dbl> ## 1 159. ## 2 160. ``` Die mittlere Größe - gegeben `\(w=50\)` - liegt mit 90% Wahrscheinlichkeit zwischen den beiden Werten. ] .pull-right[ Welche mittlere Größe wird mit 95% Wahrscheinlichkeit nicht überschritten, wenn die Person 45kg wiegt? ```r mu_at_45_50 %>% summarise(q_95 = quantile(mu_at_45, prob = .95)) ``` ``` ## # A tibble: 1 × 1 ## q_95 ## <dbl> ## 1 155. ``` ] --- name: teil-3 class: center, middle # Teil 3 ## Die PPV befragen --- ## Perzentil-Intervalle für verschiedenen Prädiktor-Werte Wir erstellen uns eine Sequenz an Prädiktorwerten, die uns interessieren: ```r weight_df <- tibble(weight_c = seq(-20,20, by = 5)) ``` Für diese Werte lassen wir uns dann die Perzentil-Intervalle (PI) ausgeben: .pull-left[ ```r mus <- predictive_interval( m43a, newdata = weight_df) %>% as_tibble() %>% bind_cols(weight_df) ``` Um die Perzentilintervalle zu erstellen, wird für jeden Prädiktorwert eine Posteriori-Verteilung erstellt und das 5%- sowie 95%-Quantil berechnet. ] .pull-right[
weight_c
5%
95%
−20.0
128.0
144.8
−15.0
132.4
149.5
−10.0
137.0
154.2
−5.0
141.6
158.6
0.0
146.3
163.2
5.0
150.6
167.9
10.0
155.6
172.4
15.0
159.7
176.9
20.0
164.5
181.6
] --- ## Perzentilintervalle für verschiedenen Prädiktorwerte visualisiert .pull-left[ <img src="Kapitel_5_chunk-img/unnamed-chunk-30-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="Kapitel_5_chunk-img/unnamed-chunk-31-1.png" width="100%" style="display: block; margin: auto;" /> Je dicker die Violine, desto wahrscheinlicher `\(\mu|\text{weight_c}_i\)`. ] --- ## Die PPV visualisiert .pull-left[ Vergleichen wir die echten Werte für `height`, `\(h\)`, mit den von der PPV simulierten Werten für `height`, `\(h_{sim}\)`. ```r library(bayesplot) h <- d2$height h_sim <- posterior_predict(m43a, draws = 50) ppc_dens_overlay( h, h_sim) ``` `?posterior_predict` zeigt Hilfe für diese Funktion. Die Funktion zeigt die Vorhersagen für die AV laut der Posteriori-Verteilung. ] .pull-right[ <img src="Kapitel_5_chunk-img/unnamed-chunk-32-1.png" width="100%" style="display: block; margin: auto;" /> Die zwei Gipfel hat unser Modell nicht mitgekriegt, ansonsten decken sich die Vorhersagen der PPV gut mit den echten Daten. ] --- ## PPV plotten, von Hand ```r set.seed(42) ppv_m43a <- posterior_predict( m43a, newdata = weight_df, draws = 100) %>% as_tibble() %>% pivot_longer( cols = everything(), names_to = "weight_condition", values_to = "height") ``` ```r ppv_m43a %>% ggplot(aes(x = height)) + geom_density() ``` --- ## Fragen an die PPV .pull-left[ - Wie groß sind die !Kung im Schnitt? - Welche Größe wird von 90% der Personen nicht überschritten? - Wie groß sind die 10% kleinsten? ```r ppv_m43a %>% summarise( q_10 = quantile( height, prob = .1), height_mean = mean(height), q_50 = quantile( height, prob = .5), q_90 = quantile( height, prob = .9) ) ``` ``` ## # A tibble: 1 × 4 ## q_10 height_mean q_50 q_90 ## <dbl> <dbl> <dbl> <dbl> ## 1 138. 154. 154. 172. ``` ] .pull-right[ - Was ist der 50% Bereich der Körpergröße? ```r ppv_m43a %>% summarise( pi_50 = quantile( height, prob = c(.25, .75)) ) ``` ``` ## # A tibble: 2 × 1 ## pi_50 ## <dbl> ## 1 144. ## 2 165. ``` ] --- name: hinweise class: center, middle, inverse # Hinweise --- ## Zu diesem Skript - Dieses Skript bezieht sich auf folgende [Lehrbücher](#literatur): - Rethink, Kap. 4.4, ROS, Kap. 9.2 - Dieses Skript wurde erstellt am 2021-11-22 12:48:18 - 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-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.