In generale, suggerirei vivamente di non codificare il proprio MCMC per una vera analisi bayesiana applicata. Questo è sia una buona dose di lavoro che di tempo e molto probabilmente introdurrà bug nel codice. I campionatori Blackbox, come Stan, usano già campionatori molto sofisticati. Fidati di me, non codificherai un campionatore di questo calibro solo per un'analisi!
Ci sono casi speciali in cui in questo non sarà sufficiente. Ad esempio, se fosse necessario eseguire un'analisi in tempo reale (ad esempio una decisione del computer basata sui dati in arrivo), questi programmi non sarebbero una buona idea. Questo perché Stan richiede la compilazione di codice C ++, che potrebbe richiedere molto più tempo rispetto al semplice esecuzione di un campionatore già preparato per modelli relativamente semplici. In tal caso, potresti voler scrivere il tuo codice. Inoltre, credo che ci siano casi speciali in cui pacchetti come Stan fanno molto male, come i modelli di spazio di stato non gaussiani (divulgazione completa: credo che Stan faccia male in questo caso, ma non lo so). In tal caso, può valere la pena implementare un MCMC personalizzato. Ma questa è l'eccezione, non la regola!
Ad essere onesti, penso che la maggior parte dei ricercatori che scrivono campionatori per una singola analisi (e questo accade, l'ho visto) lo fanno perché a loro piace scrivere i propri campionatori. Per lo meno, posso dire di rientrare in quella categoria (cioè sono deluso dal fatto che scrivere il mio campionatore non sia il modo migliore per fare le cose).
Inoltre, sebbene non abbia senso scrivere il proprio campionatore per una singola analisi , può avere molto senso scrivere il proprio codice per una classe di analisi. Dato che JAG, Stan, ecc. Sono campionatori a scatola nera, puoi sempre rendere le cose più veloci specializzandoti per un determinato modello, sebbene la quantità di miglioramento dipenda dal modello. Ma scrivere un campionatore estremamente efficiente da zero richiede forse 10-1000 ore di lavoro, a seconda dell'esperienza, della complessità del modello, ecc. Se stai facendo ricerche sui metodi bayesiani o scrivendo software statistico, va bene; è il tuo lavoro. Ma se il tuo capo dice "Ehi, puoi analizzare questo set di dati di misure ripetute?" e passi 250 ore a scrivere un campionatore efficiente, è probabile che il tuo capo sia arrabbiato. Al contrario, avresti potuto scrivere questo modello in Stan in, diciamo, 2 ore e avere 2 minuti di autonomia invece di 1 minuto di autonomia raggiunti dal campionatore efficiente.