J'essaie d'adapter un modèle hiérarchique à l'aide de jags et du package rjags. Ma variable de résultat est y, qui est une séquence d'essais bernoulli. J'ai 38 sujets humains qui se produisent sous deux catégories: P et M. D'après mon analyse, chaque locuteur a une probabilité de succès dans la catégorie P de et une probabilité de succès dans la catégorie M de . Je suppose également qu'il existe un hyperparamètre au niveau de la communauté pour P et M: et .θ p × θ m μ p μ m
Donc, pour chaque locuteur: et où et contrôlent le pic de la distribution autour de et .θ m ∼ b e t a ( μ m × κ m , ( 1 - μ m ) × κ m ) κ p κ m μ p μ m
Aussi , .μ m ∼ b e t a ( A m , B m )
Voici mon modèle jags:
model{
## y = N bernoulli trials
## Each speaker has a theta value for each category
for(i in 1:length(y)){
y[i] ~ dbern( theta[ speaker[i],category[i]])
}
## Category P has theta Ptheta
## Category M has theta Ptheta * Mtheta
## No observed data for pure Mtheta
##
## Kp and Km represent how similar speakers are to each other
## for Ptheta and Mtheta
for(j in 1:max(speaker)){
theta[j,1] ~ dbeta(Pmu*Kp, (1-Pmu)*Kp)
catM[j] ~ dbeta(Mmu*Km, (1-Mmu)*Km)
theta[j,2] <- theta[j,1] * catM[j]
}
## Priors for Pmu and Mmu
Pmu ~ dbeta(Ap,Bp)
Mmu ~ dbeta(Am,Bm)
## Priors for Kp and Km
Kp ~ dgamma(1,1/50)
Km ~ dgamma(1,1/50)
## Hyperpriors for Pmu and Mmu
Ap ~ dgamma(1,1/50)
Bp ~ dgamma(1,1/50)
Am ~ dgamma(1,1/50)
Bm ~ dgamma(1,1/50)
}
Le problème que j'ai est que lorsque j'exécute ce modèle avec 5000 itérations pour l'adaptation, je prends ensuite 1000 échantillons Mmu
et Km
j'ai convergé vers des valeurs uniques. Je l'ai exécuté avec 4 chaînes, et chaque chaîne n'a pas la même valeur, mais dans chaque chaîne, il n'y a qu'une seule valeur.
Je suis assez nouveau pour adapter des modèles hiérarchiques à l'aide de méthodes MCMC, donc je me demande à quel point c'est mauvais. Dois-je prendre cela comme un signe que ce modèle est sans espoir, que quelque chose ne va pas avec mes prieurs, ou est-ce la normale pour le cours?
Edit: au cas où cela , la valeur de vers il a convergé (moyenne sur les chaînes) était de 0,91 et était de 1,78κ m
la source
Réponses:
C'est plus un commentaire, mais comme je n'ai pas assez de réputation, je pourrais aussi bien répondre.
D'après mon expérience limitée avec les échantillonneurs MCMC, ce que j'ai observé est que les paramètres ont tendance à rester fixes lorsque les hyperparamètres sont trop étroits. En contrôlant la répartition des paramètres, ils empêchent l'échantillonnage efficace de l'espace de la solution.
Essayez de prendre des valeurs plus grandes pour les hyperparamètres et voyez ce qui se passe.
Ce document technique m'a beaucoup aidé à comprendre les échantillonneurs MCMC. Il est composé de deux échantillonneurs, Gibbs (celui que vous utilisez) et Hybrid Monte Carlo, et expliquant rapidement comment choisir les priors, les hyperpriors et les valeurs des paramètres et des hyperparamètres.
la source
Cela pourrait être un problème de structure de la chaîne. L'endroit où vous vous retrouvez dépend de l'endroit où vous commencez. Pour utiliser MCMC, vous voulez que la chaîne soit récurrente, ce qui signifie que peu importe où vous commencez, vous pouvez accéder à tous les autres états de l'espace d'état. Si la chaîne n'est pas récurrente, vous pouvez être piégé dans un sous-ensemble de l'espace d'état. L'idée de MCMC est d'avoir une distribution stationnaire existante dans laquelle la chaîne finira par se terminer. Cette distribution stationnaire a généralement une probabilité positive d'être dans l'un des états de la chaîne et de ne pas se retrouver piégée en un seul point comme vous l'avez décrit . Je ne peux pas vérifier votre algorithme mais vous avez peut-être une erreur. Il est également possible que vous ayez défini un problème où votre chaîne de Markov n'est pas récurrente.
Si vous souhaitez vous familiariser avec MCMC, je vous recommande de consulter le Manuel de Markov Chain Monte Carlo qui contient des articles qui décrivent tous les aspects de MCMC. Il a été publié par CRC Press en 2011.
la source