Page 15 -
P. 15
런 상황을 타파한 것이 확률적 프로그래밍 언어(probabilistic programming language)다. 확률적 프로
그래밍 언어란 ‘여러 가지 확률분포함수와 가능도 계산에 특화된 함수가 풍부하게 준비되어 있고,
확률 모델을 데이터에 맞추는 것을 주목적으로 한 프로그래밍 언어’다. 사용자는 모델을 프로그래
밍 코드로 작성하고 데이터를 넘기기만 하면 된다. 그러면 확률적 프로그래밍 언어에서 거의 자동
으로 매개변수 값을 추정해 준다. 이런 모델 작성과 어려운 추정 계산을 분리함으로써 모델의 가
독성이 높아지고 버그가 생길 가능성이 매우 작아지며, 분석자는 모델을 코드로 작성하는 시행착
오에 전념할 수 있게 된다. 특히 여러 개의 모델을 시험하는 상황에서 확률적 프로그래밍 언어가
진가를 발휘한다.
3
단순한 모델이라면 확률적 프로그래밍 언어까지 사용할 필요 없이 R의 기본적인 함수 를 사용해
매개변수 값을 추정할 수 있다. 추정 결과도 확률적 프로그래밍 언어를 사용했을 때와 같다. 자세
4
한 내용은 8장에서 설명하겠지만 그룹차나 개인차를 고려한 복잡한 모델이라도 기존 R 패키지 를
사용하면 대처할 수 있는 경우가 있다. 하지만 패키지와 함수별로 사용 방법이 달라서 각각을 전
부 기억해야 하는 것이 상당히 수고롭다. 또한, 실제 데이터를 분석할 때 패키지와 함수 중에서 적
절한 모델을 찾아내야 한다. 그리고 무엇보다 그중에 적절한 모델이 없으면 분석을 진행할 수 없
다. 기존 R 패키지는 모델 확장성이 낮기 때문이다. 따라서 개별 패키지와 함수별로 사용 방법을
습득하는 것보다는 조금 돌아가더라도 처음부터 확률적 프로그래밍 언어를 배워 통일된 모델 작
성과 실행 방법을 배우는 것이 크게 보았을 때 편리하고 더 이익이다.
1.4 왜 Stan인가? MODELING WITH ST AN
5
6
수많은 확률적 프로그래밍 언어 중에서 지금까지 주류였던 것은 WinBUGS 나 JAGS 소프트웨
어다. 이 둘은 MCMC 알고리즘을 사용해 매개변수 추정 계산을 수행하고, 추정 결과는 사후분포
에서 추출한 MCMC 표본의 형태로 얻을 수 있다(2장 참조). 두 소프트웨어 모두 R 인터페이스 패
3 lm( ), glm( ) 등이 있다.
4 glmmML, lme4, nlme, MCMCpack, bayesm 등이 있다.
5 https://bit.ly/2RhAgC1
6 http://mcmc-jags.sourceforge.net/
026
1데이터분석을위한베이지안통계모델링.indd 26 2019. 3. 14. 오후 8:32