2014-04-21 13 views
5

Ich bin eine sehr neue statistische Analysewelt und interessiere mich kürzlich für die BUGS/JAGS/STAN Modellierungssprache. Etwas, was mich wirklich überrascht, ist, dass ich keine Beispiele neuer Funktionen oder Verteilungen gesehen habe, die definiert wurden, um Code-Duplikation zu vermeiden. Nehmen wir zum Beispiel an, dass ich häufig das Quadrat der Poisson-Verteilung verwende, gibt es trotzdem das Folgende?Definieren neuer Funktionen und Verteilungen in der Sprache BUGS/JAGS/STAN

dsqpo <- function(lambda) { 
    tmp ~ dpois(lambda) 
    tmp2 <- tmp * tmp 
    return(tmp2) 
} 

und dann später auf

model{ 
    ... 
    x ~ dsqpo(alpha) 
    y ~ dsqpo(beta) 
} 

ohne jedes Mal eine neue temporäre Variable zu definieren.

Antwort

2

In WinBUGS, OpenBUGS und JAGS können Sie neue Funktionen definieren nicht als Teil der Modellierungssprache. Allerdings können Sie es mit Low-Level-Programmierung in Component Pascal (für Win/OpenBUGS) oder C++ (für JAGS) tun.

Für WinBUGS, siehe WBDev (http://www.winbugs-development.org.uk/wbdev.html). Für OpenBUGS siehe das UDev-Unterverzeichnis des installierten Programms, welches ein PDF-Handbuch enthält, das im Prinzip genauso funktioniert wie WinBUGS.

Für JAGS ist es nicht richtig dokumentiert - es gibt ein benutzerdefiniertes Tutorial zum Hinzufügen neuer Distributionen unter http://www.ncbi.nlm.nih.gov/pubmed/23959766, aber nichts über Funktionen, die ich kenne.

1

Das kürzlich erschienene Papier "Bayessche Inferenz mit Stan: Ein Tutorial zum Hinzufügen von benutzerdefinierten Distributionen" beschreibt, wie dies in einigen Details zu tun ist. Ich schließe das Doi für eine persistente Verbindung ein.

Referenz

Annis, J., Miller, J. B., & Palmeri, T. J. (2016). Bayessche Inferenz mit Stan: Ein Tutorial zum Hinzufügen von benutzerdefinierten Distributionen. Verhaltensforschungsmethoden, 1-24. http://doi.org/10.3758/s13428-016-0746-9

+0

Ich fürchte, Sie müssen dieses Tutorial für Nicht-Akademiker "kaufen". –

+0

Sie können die Autoren per E-Mail oder auf scihub suchen. –