Paramètres sans priorités définies dans Stan

14

Je viens de commencer à apprendre à utiliser Stan et rstan. À moins que je ne sois toujours confus sur le fonctionnement de JAGS / BUGS, je pensais que vous deviez toujours définir une distribution préalable d'une sorte pour chaque paramètre du modèle à partir duquel tirer. Il semble que vous n'ayez pas à le faire dans Stan en fonction de sa documentation. Voici un exemple de modèle qu'ils donnent ici .

data {
  int<lower=0> J; // number of schools 
  real y[J]; // estimated treatment effects
  real<lower=0> sigma[J]; // s.e. of effect estimates 
} 
parameters {
  real theta[J]; 
  real mu; 
  real<lower=0> tau; 
} 
model {
  theta ~ normal(mu, tau); 
  y ~ normal(theta, sigma);
} 

Ni , muni tauavoir prieurs définis. En convertissant certains de mes modèles JAGS en Stan, j'ai constaté qu'ils fonctionnent si je laisse beaucoup, ou la plupart, de paramètres avec des priorités non définies.

Le problème est que je ne comprends pas ce que fait Stan quand j'ai des paramètres sans priorités définies. S'agit-il par défaut de quelque chose comme une distribution uniforme? Est-ce une des propriétés spéciales de la console HMC, qu'elle ne nécessite pas de définition préalable pour chaque paramètre?

JoFrhwld
la source

Réponses:

18

À partir (d'une version antérieure) du manuel de référence Stan:

Ne pas spécifier un a priori équivaut à spécifier un a priori uniforme.

Un a priori uniforme n'est approprié que si le paramètre est borné [...]

Les antérieurs incorrects sont également autorisés dans les programmes Stan; ils résultent de paramètres non contraints sans déclarations d'échantillonnage. Dans certains cas, un a priori incorrect peut conduire à un postérieur correct, mais il appartient à l'utilisateur de garantir que les contraintes sur le (s) paramètre (s) ou les données garantissent la propriété du postérieur.

(Voir aussi la section C.3 dans la version 1.0.1 ).

La raison sous-jacente est correcte dans Stan mais pas dans BUGS peut avoir à voir avec le fait que dans BUGS, votre "programme" modèle spécifie un modèle graphique formel, tandis que dans Stan vous écrivez une petite fonction pour calculer la probabilité conjointe fonction de densité. Ne pas spécifier un a priori approprié pour toutes les variables pourrait gâcher les belles propriétés formelles des modèles graphiques.

Cependant, pour Hamiltonian MC, il vous suffit de calculer (numériquement) la fonction de densité conjointe. Un a priori plat (même impropre) ne contribue que pour un terme constant à la densité, et donc tant que le postérieur est correct (masse de probabilité totale finie) - ce qui sera avec toute fonction de vraisemblance raisonnable - il peut être complètement ignoré dans la console HMC schème.

Dave Kleinschmidt
la source
8

De la référence Stan v1.0.2 (p. 6, note de bas de page 1)

Si aucun a priori n'a été spécifié dans le bloc de modèle, les contraintes sur thêta garantissent qu'il se situe entre 0 et 1, fournissant à thêta un a priori implicite uniforme. Pour les paramètres sans support spécifié et sans limite préalable, le résultat est un prior incorrect. Stan accepte les antérieurs incorrects, mais les postérieurs doivent être appropriés pour que l'échantillonnage réussisse.

Les deux muet sigmaont des antérieurs uniformes inappropriés.

Sous le capot, muet sigmasont traités différemment. sigmaest défini par une borne inférieure; Échantillons de Stan log(sigma)(avec un ajustement jacobien pour la transformation). Pour plus de détails sur les transformations, voir le chapitre 27 (p. 153).

syclik
la source
Juste pour que je sois clair à ce sujet, si des échantillons STAN au niveau du journal (sigma), le précédent plat est toujours au-dessus de sigma et non au-dessus du journal (sigma)?
Rasmus Bååth
1
Oui, le prieur d'uniforme est toujours terminé sigma, non log(sigma). Stan accomplit cela en transformant le paramètre et en appliquant le changement correct de l'ajustement des variables en utilisant le jacobien.
syclik