CommencerCommencer gratuitement

Visualiser les a priori de la régression

Dans l’exercice précédent, vous avez simulé 10 000 samples pour chaque paramètre (\(a\), \(b\), \(s\)) du modèle bayésien de régression du poids \(Y\) par la taille \(X\) : \(Y \sim N(m, s^2)\) avec une moyenne \(m = a + bX\). L’ensemble des valeurs \(a\), \(b\) et \(s\) dans chaque ligne de samples représente un scénario de régression a priori plausible. Pour explorer l’étendue de ces scénarios a priori, vous allez simuler 50 paires de valeurs de taille et de poids à partir de chacun des 12 premiers ensembles de paramètres a priori \(a\), \(b\) et \(s\).

Cet exercice fait partie du cours

Modélisation bayésienne avec RJAGS

Afficher le cours

Instructions

  • Créez un data frame prior_simulation qui contient n = 50 répétitions des 12 premiers ensembles de paramètres a priori dans samples (600 lignes au total !).
  • Pour chacune des 600 lignes de prior_simulation :
    • Simulez une valeur de height selon un modèle \(N(170, 10^2)\).
    • Simulez une valeur de weight selon \(N(a + b X, s^2)\) où \(X\) est la taille et \((a,b,s)\) est l’ensemble des paramètres a priori.
  • Vous avez maintenant 50 paires simulées de height et weight pour chacun des 12 ensembles de paramètres. Utilisez ggplot() pour construire un nuage de points de ces 50 paires pour chaque set de valeurs de paramètres. Assurez-vous de placer weight sur l’axe des ordonnées !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)
Modifier et exécuter le code