ÎncepețiÎncepe gratuit

Vizualizarea priorilor de regresie

În exercițiul anterior, ai simulat 10.000 de samples pentru fiecare parametru (\(a\), \(b\), \(s\)) din modelul de regresie Bayesiană a greutății \(Y\) în funcție de înălțimea \(X\): \(Y \sim N(m, s^2)\) cu media \(m = a + bX\). Setul de valori \(a\), \(b\) și \(s\) din fiecare rând al lui samples reprezintă un scenariu de regresie plauzibil conform priorului. Pentru a explora diversitatea acestor scenarii, vei simula 50 de perechi de valori pentru înălțime și greutate din fiecare dintre primele 12 seturi de parametri prior \(a\), \(b\) și \(s\).

Acest exercițiu face parte din cursul

Modelare bayesiană cu RJAGS

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează un data frame prior_simulation care include n = 50 replicate ale primelor 12 seturi de parametri prior din samples (600 de rânduri în total!).
  • Pentru fiecare dintre cele 600 de rânduri din prior_simulation:
    • Simulează o valoare height dintr-un model \(N(170, 10^2)\).
    • Simulează o valoare weight din \(N(a + b X, s^2)\), unde \(X\) este înălțimea, iar \((a,b,s)\) reprezintă setul de parametri prior.
  • Acum ai 50 de perechi simulate de height și weight pentru fiecare dintre cele 12 seturi de parametri. Folosește ggplot() pentru a construi un scatterplot al acestor 50 de perechi pentru fiecare set de valori ale parametrilor. Asigură-te că weight apare pe axa y!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Replicate the first 12 parameter sets 50 times each
prior_scenarios_rep <- bind_rows(replicate(n = ___, expr = samples[1:12, ], simplify = FALSE)) 

# Simulate 50 height & weight data points for each parameter set
prior_simulation <- prior_scenarios_rep %>% 
    mutate(height = rnorm(n = 600, mean = ___, sd = ___)) %>% 
    mutate(weight = rnorm(n = 600, mean = ___, sd = ___))

# Plot the simulated data & regression model for each parameter set
ggplot(prior_simulation, aes(x = ___, y = ___)) + 
    geom_point() + 
    geom_smooth(method = "lm", se = FALSE, size = 0.75) + 
    facet_wrap(~ set)
Editează și rulează codul