CommencezCommencez gratuitement

Visualiser les lois a priori de la régression

Dans l'exercice précédent, vous avez simulé 10 000 samples pour chacun des paramètres (\(a\), \(b\), \(s\)) dans le modèle bayésien de régression du poids \(Y\) en fonction de 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 jeux de paramètres a priori \(a\), \(b\) et \(s\).

Cette activité fait partie du cours

Modélisation bayésienne avec RJAGS

Voir le cours

Instructions de l’exercice

  • Créez un tableau de données prior_simulation qui inclut n = 50 répétitions des 12 premiers jeux 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 le jeu de paramètres a priori.
  • Vous avez maintenant 50 paires simulées de height et weight pour chacun des 12 jeux 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 y !

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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