Im Allgemeinen würde ich dringend empfehlen , Ihr eigenes MCMC nicht für eine echte angewandte Bayes'sche Analyse zu codieren. Dies ist sowohl viel Arbeit als auch Zeit und führt sehr wahrscheinlich zu Fehlern im Code. Blackbox-Sampler wie Stan verwenden bereits sehr ausgefeilte Sampler. Vertrauen Sie mir, Sie werden keinen Sampler dieses Kalibers nur für eine Analyse codieren!
Es gibt Sonderfälle, in denen dies nicht ausreicht. Wenn Sie beispielsweise eine Analyse in Echtzeit durchführen müssen (dh eine Computerentscheidung basierend auf eingehenden Daten), sind diese Programme keine gute Idee. Dies liegt daran, dass Stan das Kompilieren von C ++ - Code erfordert, was erheblich mehr Zeit in Anspruch nehmen kann, als nur einen bereits vorbereiteten Sampler für relativ einfache Modelle auszuführen. In diesem Fall möchten Sie möglicherweise Ihren eigenen Code schreiben. Darüber hinaus glaube ich, dass es Sonderfälle gibt, in denen Pakete wie Stan sehr schlecht abschneiden, wie z. B. nicht-gaußsche Zustandsraummodelle (vollständige Offenlegung: Ich glaube, dass Stan in diesem Fall schlecht abschneidet, es aber nicht weiß). In diesem Fall kann es sich lohnen, eine benutzerdefinierte MCMC zu implementieren. Dies ist jedoch die Ausnahme, nicht die Regel!
Um ganz ehrlich zu sein, denke ich, dass die meisten Forscher, die Sampler für eine einzelne Analyse schreiben (und das habe ich auch schon gesehen), dies tun, weil sie gerne ihre eigenen Sampler schreiben. Zumindest kann ich sagen, dass ich in diese Kategorie falle (dh ich bin enttäuscht, dass das Schreiben eines eigenen Samplers nicht der beste Weg ist, Dinge zu tun).
Auch wenn es nicht sinnvoll ist, einen eigenen Sampler für eine einzelne Analyse zu schreiben, kann es durchaus sinnvoll sein, einen eigenen Code für eine Klasse von Analysen zu schreiben. Da es sich bei JAGs, Stan usw. um Black-Box-Sampler handelt, können Sie die Dinge immer schneller machen, indem Sie sich auf ein bestimmtes Modell spezialisieren, obwohl das Ausmaß der Verbesserung modellabhängig ist. Das Schreiben eines äußerst effizienten Samplers von Grund auf dauert je nach Erfahrung, Komplexität des Modells usw. 10 bis 1000 Stunden. Es ist dein Job. Aber wenn Ihr Chef sagt "Hey, können Sie diesen Datensatz mit wiederholten Messungen analysieren?" Wenn Sie 250 Stunden damit verbringen, einen effizienten Sampler zu schreiben, ist Ihr Chef wahrscheinlich verärgert. Im Gegensatz dazu hätten Sie dieses Modell in Stan beispielsweise in 2 Stunden schreiben und 2 Minuten Laufzeit anstelle der 1-minütigen Laufzeit des effizienten Samplers haben können.