MCMC converge in un singolo valore?


13

Sto cercando di adattare un modello gerarchico usando jags e il pacchetto rjags. La mia variabile di risultato è y, che è una sequenza di prove di bernoulli. Ho 38 soggetti umani che si esibiscono in due categorie: P e M. Sulla base della mia analisi, ogni oratore ha una probabilità di successo nella categoria P di e una probabilità di successo nella categoria M di . anche che ci sia qualche iperparametro a livello di comunità per P e M: e .θ p × θ m μ p μ mθpθp×θmμpμm

Quindi, per ogni oratore: e dove e controllano il picco della distribuzione intorno a e .θ 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

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

Ecco il mio modello di 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)
}

Il problema che ho è che quando eseguo questo modello con 5000 iterazioni per l'adattamento, prendo 1000 campioni Mmue Kmconverto in valori singoli. L'ho eseguito con 4 catene e ogni catena non ha lo stesso valore, ma all'interno di ogni catena esiste un solo valore.

Sono abbastanza nuovo per adattare i modelli gerarchici usando i metodi MCMC, quindi mi chiedo quanto sia grave. Dovrei prendere questo come un segno che questo modello non ha speranza di adattarsi, che qualcosa non va nei miei priori, o è la stessa cosa per il corso?

Modifica: nel caso in cui sia importante, il valore per cui converge (mediata tra le catene) era 0,91 e era 1,78κ mμmκm


Se ti sto capendo correttamente, questi parametri "convergono" su un valore fisso in ogni catena (dopo alcune iterazioni non cambia affatto), ma quel valore è diverso per ogni catena che esegui? Suona male, come forse un passo davvero scadente in Metropolis Hastings. Potrebbe essere il tuo modello, potrebbe essere JAGS, potrebbe essere una combinazione di entrambi. Presumibilmente questo modello non richiede troppo tempo per adattarsi, quindi proverei prima a correre (molto) catene più lunghe, specialmente per il periodo di adattamento.
JMS,

Quindi, ho aggiornato il modello con altre 5000 iterazioni e i parametri in questione non si sono mossi. Non mi rendevo conto che potevano cadere nei minimi locali in questo modo.
JoFrhwld,

1
sughi rapidi: 1. Prova a usare dbin, con n = 1. E usa i limiti per limitare il valore di p. Qualcosa del genere: p.bound [i] <- max (0, min (1, p [i]))
Manoel Galdino

1
Un paio di domande chiarenti: 1. hai 38 soggetti nella categoria P e 38 soggetti nella categoria M, come lunghezza (y) = 76? 2. Potresti fornire ulteriori informazioni di base sulla logica degli hyperparamters e dell'esperimento? È un po 'confuso per me.
Manoel Galdino,

1
Probabilmente avrei semplicemente risolto tutti gli iperparametri, come in theta [j, 1] ~ dbeta (1.1, 1.1) o qualcosa del genere, e vedevo quali risultati ottenevi prima di provare a passare a un iperprior. Inoltre, il precedente di theta [j, 2] è il prodotto di due beta, che non è, in generale, una beta stessa e, di conseguenza, theta [j, 2] <theta [j, 1]. Sembra che tu lo intendessi; solo per curiosità, perché?
jbowman il

Risposte:


2

Questo è più un commento, ma poiché non ho abbastanza reputazione potrei anche rispondere.

Dalla mia esperienza limitata con i campionatori MCMC, ciò che ho osservato è che i parametri tendono a rimanere fissi quando gli iperparametri sono troppo stretti. Poiché controllano la diffusione dei parametri, impediscono di campionare in modo efficiente lo spazio della soluzione.

Prova a prendere valori più grandi per gli iperparametri e guarda cosa succede.

Questo documento tecnico mi ha aiutato molto a comprendere i campionatori MCMC. È composto da due campionatori, Gibbs (quello che si sta utilizzando) e Hybrid Monte Carlo, e spiega rapidamente come scegliere priori, hyperpriors e valori per parametri e iperparametri.


0

Questo potrebbe essere un problema della struttura della catena. Dove finisci dipende da dove inizi. Per usare MCMC vuoi che la catena sia ricorrente, il che significa che, indipendentemente da dove inizi, puoi raggiungere ogni altro stato nello spazio degli stati. Se la catena non è ricorrente, è possibile rimanere intrappolati in un sottoinsieme dello spazio degli stati. L'idea di MCMC è quella di avere una distribuzione stazionaria esistente che alla fine finirà la catena. Questa distribuzione stazionaria di solito ha una probabilità positiva di trovarsi in uno degli stati della catena e di non rimanere intrappolata in un singolo punto come hai descritto . Non riesco a controllare il tuo algoritmo ma forse hai un errore. È anche possibile che sia stato definito un problema in cui la catena Markov non è ricorrente.

Se vuoi conoscere meglio MCMC, ti consiglio di dare un'occhiata al Manuale di Markov Chain Monte Carlo che contiene articoli che descrivono ogni aspetto di MCMC. È stato pubblicato da CRC Press nel 2011.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.