Ogólnie rzecz biorąc, zdecydowanie sugerowałbym, aby nie kodować własnego MCMC dla prawdziwej zastosowanej analizy bayesowskiej. Jest to zarówno praca, jak i czas, i bardzo prawdopodobne, że wprowadzą błędy w kodzie. Próbniki Blackbox, takie jak Stan, już używają bardzo wyrafinowanych samplerów. Zaufaj mi, nie kodujesz próbnika tego kalibru tylko dla jednej analizy!
Istnieją szczególne przypadki, w których nie będzie to wystarczające. Na przykład, gdybyś musiał przeprowadzić analizę w czasie rzeczywistym (tj. Decyzja komputera na podstawie przychodzących danych), te programy nie byłyby dobrym pomysłem. Wynika to z faktu, że Stan wymaga skompilowania kodu C ++, co może zająć znacznie więcej czasu niż uruchomienie już przygotowanego samplera dla stosunkowo prostych modeli. W takim przypadku możesz napisać własny kod. Ponadto uważam, że istnieją specjalne przypadki, w których pakiety takie jak Stan bardzo źle sobie radzą, takie jak niegaussowskie modele przestrzeni państwowej (pełne ujawnienie: wierzę , że Stan źle sobie radzi w tym przypadku, ale nie wiem). W takim przypadku warto wdrożyć niestandardową MCMC. Ale to wyjątek, nie reguła!
Szczerze mówiąc, myślę, że większość badaczy, którzy piszą samplery do pojedynczej analizy (a tak się dzieje, widziałem to), robi to, ponieważ lubią pisać własne samplery. Przynajmniej mogę powiedzieć, że należę do tej kategorii (tzn. Jestem rozczarowany, że pisanie własnego samplera nie jest najlepszym sposobem na robienie rzeczy).
Ponadto, chociaż nie ma sensu pisać własnego samplera do pojedynczej analizy , warto napisać własny kod dla klasy analiz. Ponieważ JAG, Stan itp. Są samplerami z czarnej skrzynki, zawsze możesz przyspieszyć, specjalizując się w danym modelu, chociaż ilość ulepszeń zależy od modelu. Ale napisanie od podstaw niezwykle wydajnego samplera to może 10–1 000 godzin pracy, w zależności od doświadczenia, złożoności modelu itp. Jeśli prowadzisz badania w metodach bayesowskich lub piszesz oprogramowanie statystyczne, to w porządku; to twoja praca. Ale jeśli twój szef powie „Hej, możesz przeanalizować zestaw danych z powtarzanymi pomiarami?” i spędzasz 250 godzin na pisaniu wydajnego samplera, twój szef prawdopodobnie będzie zdenerwowany. W przeciwieństwie do tego, mogłeś napisać ten model w Stanie, powiedzmy, w 2 godziny i miałeś 2 minuty czasu pracy zamiast 1 minuty czasu pracy osiągniętego przez wydajny sampler.