MCMC convergeant vers une valeur unique?

13

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θpθp×θmμpμm

Donc, pour chaque locuteur: et où et contrôlent le pic de la distribution autour de et .θ mb e t a ( μ m × κ m , ( 1 - μ m ) × κ m ) κ p κ m μ p μ mθpbeta(μp×κp,(1μp)×κp)θmbeta(μm×κm,(1μm)×κm)κpκmμpμm

Aussi , .μ mb e t a ( A m , B m )μpbeta(Ap,Bp)μmbeta(Am,Bm)

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 Mmuet Kmj'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μmκm

JoFrhwld
la source
Si je vous comprends bien, ces paramètres "convergent" sur une valeur fixe dans chaque chaîne (après quelques itérations, cela ne change pas du tout), mais cette valeur est différente pour chaque chaîne que vous exécutez? Cela semble mauvais, comme peut-être une étape vraiment merdique de Metropolis Hastings. Ce pourrait être votre modèle, ce pourrait être JAGS, ce pourrait être une combinaison des deux. Vraisemblablement, ce modèle ne prend pas trop de temps pour s'adapter, donc j'essaierais de courir des chaînes (beaucoup) plus longues en premier, surtout pour la période d'adaptation.
JMS
J'ai donc mis à jour le modèle avec 5000 itérations supplémentaires, et les paramètres en question n'ont pas bougé. Je ne savais pas qu'ils pouvaient tomber dans des minima locaux comme celui-ci.
JoFrhwld
1
sugesstions rapides: 1. Essayez d'utiliser dbin, avec n = 1. Et utilisez des bornes pour limiter la valeur de p. Quelque chose comme ceci: p.bound [i] <- max (0, min (1, p [i]))
Manoel Galdino
1
Quelques questions de clarification: 1. vous avez 38 sujets dans la catégorie P et 38 sujets dans la catégorie M, tels que la longueur (y) = 76? 2. Pourriez-vous donner plus d'informations sur la justification des hyperparamètres et de l'expérience? C'est un peu déroutant pour moi.
Manoel Galdino
1
Je corrigerais probablement tous les hyperparamètres, comme dans theta [j, 1] ~ dbeta (1.1, 1.1) ou quelque chose, et voir quels résultats vous obtenez avant d'essayer de passer à un hyperprior. De plus, le prieur de theta [j, 2] est le produit de deux bêtas, ce qui n'est pas, en général, un bêta lui-même, et bien sûr theta [j, 2] <theta [j, 1] en conséquence. Il semble que vous vouliez cela; juste par curiosité, pourquoi?
jbowman

Réponses:

2

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.

Giezi
la source
0

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.

Michael R. Chernick
la source