MCMC konvergiert auf einen einzigen Wert?

12

Ich versuche, ein hierarchisches Modell mit jags und dem Paket rjags anzupassen. Meine Ergebnisvariable ist y, eine Folge von Bernoulli-Versuchen. Ich habe 38 menschliche Probanden, die in zwei Kategorien auftreten: P und M. Nach meiner Analyse hat jeder Sprecher eine Erfolgswahrscheinlichkeit in der Kategorie P von und eine Erfolgswahrscheinlichkeit in der Kategorie M von . Ich gehe auch davon aus, dass es auf Community-Ebene Hyperparameter für P und M gibt: und .θ p × θ m μ pθpθp×θmμpμm

Also für jeden Sprecher: und \ theta_m \ sim beta (\ mu_m \ times \ kappa_m, (1- \ mu_m) \ times \ kappa_m) wobei \ kappa_p und \ kappa_m steuern, wie hoch die Verteilung um \ mu_p und \ mu_m ist .θ m ~ b e t ein ( μ m × κ m , ( 1 - μ m ) × κ m ) κ p κ m μ pθpbeta(μp×κp,(1μp)×κp)θmbeta(μm×κm,(1μm)×κm)κpκmμpμm

Auch μpbeta(Ap,Bp) , μmbeta(Am,Bm) .

Hier ist mein Zackenmodell:

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)
}

Das Problem, das ich habe, ist, dass ich, wenn ich dieses Modell mit 5000 Iterationen zum Anpassen ausführe, dann 1000 Proben nehme Mmuund Kmzu einzelnen Werten konvergiere. Ich habe es mit 4 Ketten ausgeführt, und jede Kette hat nicht den gleichen Wert, aber in jeder Kette gibt es nur einen einzelnen Wert.

Ich bin ziemlich neu darin, hierarchische Modelle mit MCMC-Methoden anzupassen, daher frage ich mich, wie schlimm das ist. Soll ich das als Zeichen dafür nehmen, dass dieses Modell hoffnungslos passt, dass etwas mit meinen Vorgesetzten nicht stimmt, oder ist es das Gleiche für den Kurs?

Bearbeiten: Falls es darauf ankommt, war der Wert für es konvergierte (gemittelt über Ketten), 0,91 und war 1,78μmκm

JoFrhwld
quelle
Wenn ich Sie richtig verstehe, "konvergieren" diese Parameter auf einen festen Wert in jeder Kette (nach einigen Iterationen ändert sich dieser Wert überhaupt nicht), aber dieser Wert ist für jede von Ihnen ausgeführte Kette unterschiedlich? Das hört sich schlecht an, als wäre es ein wirklich beschissener Schritt von Metropolis Hastings. Es könnte Ihr Modell sein, es könnte JAGS sein, es könnte eine Kombination aus beiden sein. Vermutlich dauert es nicht lange, bis dieses Modell passt. Deshalb würde ich versuchen, zuerst (viel) längere Ketten zu fahren, insbesondere für die Anpassungszeit.
JMS
Also habe ich das Modell mit 5000 weiteren Iterationen aktualisiert, und die fraglichen Parameter haben sich nicht verändert. Ich wusste nicht, dass sie so in lokale Minima fallen könnten.
JoFrhwld
1
schnelle vorschläge: 1. Versuchen Sie, dbin mit n = 1 zu verwenden. Und verwenden Sie Grenzen, um den Wert von p zu begrenzen. Etwa so: p.bound [i] <- max (0, min (1, p [i]))
Manoel Galdino
1
Einige klärende Fragen: 1. Sie haben 38 Fächer in Kategorie P und 38 Fächer in Kategorie M, z. B. Länge (y) = 76? 2. Können Sie weitere Hintergrundinformationen über die Gründe für die Hyperparameter und das Experiment geben? Es ist ein bisschen verwirrend für mich.
Manoel Galdino
1
Ich würde wahrscheinlich einfach alle Hyperparameter korrigieren, wie in Theta [j, 1] ~ Dbeta (1.1, 1.1) oder so, und sehen, welche Ergebnisse Sie erhalten, bevor Sie versuchen, zu einem Hyperprior überzugehen. Auch Theta [j, 2] ist das Produkt von zwei Betas, die im Allgemeinen kein Beta selbst sind, und natürlich Theta [j, 2] <Theta [j, 1] als Ergebnis. Es sieht so aus, als hättest du das beabsichtigt. nur aus neugier, warum?
Jbowman

Antworten:

2

Dies ist eher ein Kommentar, aber da ich nicht genug Ansehen habe, könnte ich auch antworten.

Aufgrund meiner begrenzten Erfahrung mit MCMC-Samplern habe ich festgestellt, dass die Parameter tendenziell konstant bleiben, wenn die Hyperparameter zu eng sind. Da sie die Verteilung der Parameter steuern, verhindern sie, dass der Lösungsraum effizient abgetastet wird.

Versuchen Sie, größere Werte für die Hyperparameter zu verwenden, um zu sehen, was passiert.

Dieses technische Dokument hat mir sehr geholfen, die MCMC-Sampler zu verstehen. Es besteht aus zwei Samplern, Gibbs (den von Ihnen verwendeten) und Hybrid Monte Carlo, und erklärt schnell, wie Sie Prioritäten, Hyperprioritäten und Werte für die Parameter und Hyperparameter auswählen.

Giezi
quelle
0

Dies könnte ein Problem der Kettenstruktur sein. Wo Sie landen, hängt davon ab, wo Sie anfangen. Um MCMC zu verwenden, soll die Kette wiederkehrend sein, was bedeutet, dass Sie, egal wo Sie beginnen, zu jedem anderen Zustand im Zustandsraum gelangen können. Wenn die Kette nicht wiederkehrend ist, können Sie in einer Teilmenge des Zustandsraums gefangen sein. Die Idee von MCMC besteht darin, dass eine stationäre Verteilung vorhanden ist, in der die Kette schließlich abgewickelt wird. Bei dieser stationären Verteilung besteht normalerweise eine positive Wahrscheinlichkeit, dass sie sich in einem der Zustände in der Kette befindet und nicht an einem einzelnen Punkt eingeschlossen wird, wie Sie beschrieben haben . Ich kann Ihren Algorithmus nicht überprüfen, aber vielleicht haben Sie einen Fehler. Es ist auch möglich, dass Sie ein Problem definiert haben, bei dem Ihre Markov-Kette nicht wiederholt auftritt.

Wenn Sie sich mit MCMC auskennen möchten, empfehlen wir Ihnen einen Blick in das Handbuch von Markov Chain Monte Carlo mit Artikeln, die alle Aspekte von MCMC beschreiben. Es wurde von CRC Press im Jahr 2011 veröffentlicht.

Michael R. Chernick
quelle