2014-04-21 4 views
5

저는 매우 새로운 통계 분석 세계이며 최근에 BUGS/JAGS/STAN 모델 언어에 관심을 보였습니다. 정말로 놀라운 점은 코드 중복을 피하기 위해 정의 된 새로운 기능이나 배포판의 예는 보지 못했다는 것입니다. 예를 들어, 내가 자주 포아송 분포의 제곱을 사용한다고 가정하면, 어쨌든 다음을 수행 할 수 있습니까? BUGS/JAGS/STAN 언어의 새로운 함수와 배포판 정의하기

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

하고 나중에 새로운 임시 변수 각 시간을 정의하지 않고

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

.

답변

2

Stan의 경우 다음 릴리스에서 기능을 사용할 수 있습니다. 현재 릴리스 인 v2.2.0에는 언어의 일부로 사용자 정의 함수가 없습니다.

제안 된 구문은 다음을 참조하십시오 추가 스탠 관련 도움말을 https://github.com/stan-dev/stan/wiki/Function-Syntax-and-Semantics-Design

, 확인 스탠 사용자 구글 그룹 :의 Winbugs, 오픈 벅스와 장애가 있었던 경우에 https://groups.google.com/forum/#!forum/stan-users

2

을, 당신은 새로운 기능을 정의 할 수 없습니다 모델링 언어의 일부로 그러나 Component Pascal (Win/OpenBUGS 용) 또는 C++ (JAGS 용)에서 저수준 프로그래밍을 통해 수행 할 수 있습니다.

WinBUGS의 경우 WBDev (http://www.winbugs-development.org.uk/wbdev.html)를 참조하십시오. OpenBUGS의 경우 PDF 프로그램이 들어있는 설치된 프로그램의 UDev 하위 디렉토리를 참조하십시오. 기본적으로 WinBUGS와 동일한 방식으로 작동합니다.

JAGS의 경우 제대로 문서화되지 않았습니다. 새 배포판을 http://www.ncbi.nlm.nih.gov/pubmed/23959766에 추가하기위한 사용자 작성 자습서가 있습니다. 기능에 대해서는 전혀 알려지지 않았습니다.

1

최근의 백서 "Stan과의 베이시안 추리 : 사용자 정의 배포판 추가에 대한 자습서"에서는 이것을 어떻게 자세하게 설명하는지 설명합니다. 나는 지속적인 링크를위한 doi를 포함한다.

참조

Annis가, J. 밀러, B. J., & Palmeri, T. J. (2016). Stan과의 베이지안 추리 : 커스텀 배포판 추가에 관한 튜토리얼. 행동 연구 방법, 1-24. http://doi.org/10.3758/s13428-016-0746-9

+0

저는 학계가 아닌 사람들을 위해서이 튜토리얼을 '사야'합니다. –

+0

저자에게 이메일을 보내거나 scihub에서 검색 할 수 있습니다. –