Il y a une section sur les quantités générées à la fin qui est censée être capable de gérer la simulation, mais la documentation (à partir de la version 1.3, mais la version 2 devrait être bientôt disponible) n'explique pas en détail comment y parvenir. Vous pourriez envisager de demander la liste de diffusion.
Dans Stan, les simulations postérieures peuvent être générées de deux manières. La première approche consiste à traiter les variables prédites comme des paramètres, puis à définir leurs distributions dans le bloc de modèle. La deuxième approche, qui fonctionne également pour les variables discrètes, consiste à générer des données répliquées à l'aide de générateurs de nombres aléatoires dans le bloc de quantités générées.
Ce qui suit n'est pas une réponse complète, mais j'espère que c'est mieux que pas de réponse. Dans mes propres applications, j'applique des vérifications prédictives postérieures pour examiner les prédictions du modèle pour une seule mesure dépendante qui a été générée à partir d'un modèle linéaire. C'est simple dans JAGS, mais un peu plus opaque dans Stan.
data{
int<lower=1> N; // no. rows
real x[N]; // predictor
real y[N]; // dependent variable
}
parameters{
real alpha; // int.
real beta; // slope
real<lower=0> sigma_e; // resid. var.
real y_tilde[N]; // post. pred.
}
model{
real mu[N];
for(i in 1:N){
mu[i] <- alpha + beta*x[i];
}
y ~ normal(mu,sigma_e); //lik
y_tilde ~ normal(mu,sigma_e);
alpha ~ normal(0,5);
beta ~ normal(0,5);
sigma_e ~ cauchy(0,5);
}
generated quantities{
real minimum;
real maximum;
minimum <- min(y_tilde);
maximum <- max(y_tilde);
}
Il doit y avoir une meilleure façon de le faire, donc quelqu'un s'il vous plaît postez une meilleure réponse. Mais le code ci-dessus génère N distributions prédictives postérieures, une pour chaque observation. Je le fais pour que la distribution prédictive des extrema puisse être trouvée, mais si vous êtes uniquement intéressé par la quantité prédictive postérieure, y_tildevous pourrez peut-être vous en passer. Pour les grands ensembles de données, la solution ci-dessus est évidemment trop gourmande en espace.
Réponses:
Selon le manuel d'utilisation de Stan v2.2.0 (pages 361–362):
J'utilise habituellement ce dernier.
la source
Ce qui suit n'est pas une réponse complète, mais j'espère que c'est mieux que pas de réponse. Dans mes propres applications, j'applique des vérifications prédictives postérieures pour examiner les prédictions du modèle pour une seule mesure dépendante qui a été générée à partir d'un modèle linéaire. C'est simple dans JAGS, mais un peu plus opaque dans Stan.
Il doit y avoir une meilleure façon de le faire, donc quelqu'un s'il vous plaît postez une meilleure réponse. Mais le code ci-dessus génère N distributions prédictives postérieures, une pour chaque observation. Je le fais pour que la distribution prédictive des extrema puisse être trouvée, mais si vous êtes uniquement intéressé par la quantité prédictive postérieure,
y_tilde
vous pourrez peut-être vous en passer. Pour les grands ensembles de données, la solution ci-dessus est évidemment trop gourmande en espace.la source