2016-04-04 8 views
0

Gemäß der Bedienungsanleitung von R-Zacken (Abschnitt Compilation):Warum muss ich den Parameter der obersten Ebene in JAGS definieren, und wie?

Jeder Knoten, der sich auf der rechten Seite einer Beziehung verwendet wird, aber nicht auf der linken Seite jeder Beziehung definiert, wird angenommen, ein konstanter Knoten zu sein. Ihr Wert muss in der Datendatei angegeben werden.

Aber es ist seltsam, viele probabilistische Graph Modelle enthält viele Top-Level-Parameter abgeleitet werden. Und das ist es, was BN bedeutet, oder? Warum muss ich zuerst den Wert des Parameters der obersten Ebene definieren? Und was soll ich tun, wenn ich das Modell wie LDA implementieren will, das eine Topic-Distribution vor a und eine Wortverteilung beta hat, die unbekannt sind? Bitte sag mir, wenn ich etwas falsches gesagt habe.

Antwort

4

Wenn Sie auf einen Parameter schließen wollen, dann ist dies definitionsgemäß kein Top-Level-Parameter. Wenn Sie etwas über einen Parameter ableiten wollen, müssen Sie ihn vorher bestimmen. In diesem Fall sind die Hyperparameter im Prior die obersten Parameter. Zum Beispiel:

Count ~ dpois(lambda) 
lambda <- 10 

Bedeutet, dass Lambda ist die Top-Level-Parameter, und nicht geschlossen werden kann.

Count ~ dpois(lambda) 
lambda ~ dgamma(0.001, 0.001) 

Bedeutet, dass Lambda abgeleitet ist, und die Hyperparameter des gamma sind vor die Top-Level-Parameter. Um dies zu sehen mehr ausdrücklich feststellen, dass diese Syntax entspricht:

Count ~ dpois(lambda) 
lambda ~ dgamma(shape, rate) 
shape <- 0.001 
rate <- 0.001 

Die Form und die Rate Parameter könnten auch in den Daten angegeben werden, wenn Sie es vorziehen, aber das wäre ein bisschen ungewöhnlich.

Die Wahl einer angemessenen vorherigen Verteilung für diese Parameter ist nicht immer einfach, ist aber ein wesentlicher Bestandteil jeder Bayesschen Analyse. Gehen Sie nicht einfach davon aus, dass ein Prior mit großer Varianz minimal informativ ist, ohne darüber nachzudenken und/oder ihn zu testen.

Matt

Verwandte Themen