Stan Reference
Stan HMC/NUTS 베이지안 모델링 블록/문법 레퍼런스
Stan Reference 소개
Stan 레퍼런스는 해밀턴 몬테카를로(HMC)와 No-U-Turn Sampler(NUTS)를 사용한 베이지안 통계 추론을 위한 Stan 확률적 프로그래밍 언어의 핵심 구문을 정리한 검색 가능한 치트 시트입니다. functions, data, transformed data, parameters, transformed parameters, model, generated quantities의 7개 블록 구조와 타입 변수 선언, 제약 구문을 포괄합니다.
분포 섹션에서는 normal, bernoulli/binomial, poisson/negative binomial, cauchy/student_t, beta/dirichlet, multi_normal, lkj_corr_cholesky 분포와 사전분포 지정 패턴을 다룹니다. 모델 예시에는 베이지안 선형 회귀, 로지스틱 회귀, 계층적/다수준 모형, 깔때기 기하 구조의 수렴 개선을 위한 비중심 모수화가 포함됩니다.
RStan(R), PyStan(Python), CmdStan(명령줄) 인터페이스의 컴파일, 샘플링, 사후분포 추출 워크플로우를 다룹니다. Rhat 수렴, 유효 표본 크기(n_eff), 발산 전이, 최대 트리 깊이 등 MCMC 진단과 LOO-CV(loo 패키지), 사전 예측 검사, bayesplot 시각화를 활용한 사후 예측 검사 등 모델 비교 도구도 포함됩니다.
주요 기능
- data, parameters, transformed parameters, model, generated quantities 등 Stan 7블록 프로그램 구조
- 분포 레퍼런스: normal, bernoulli_logit, poisson_log, cauchy, student_t, beta, dirichlet, multi_normal, LKJ
- 모델 예시: 베이지안 선형 회귀, 로지스틱 회귀, 계층 모형, 비중심 모수화
- 사전분포 지정 패턴: 약한 정보 사전분포, 정규화 사전분포, 분산 파라미터용 반코시
- RStan, PyStan, CmdStan 인터페이스 가이드 및 컴파일/샘플링 워크플로우
- MCMC 수렴 진단: Rhat, n_eff, 발산 전이, 최대 트리 깊이, E-BFMI
- 모델 비교: loo 패키지 LOO-CV, 사전 예측 검사, bayesplot 사후 예측 검사
- 카테고리별 검색 지원, 다크 모드, 데스크톱/태블릿/모바일 반응형 디자인
자주 묻는 질문
Stan이란 무엇이며 어디에 사용되나요?
Stan은 베이지안 통계 추론을 위한 오픈소스 확률적 프로그래밍 언어(BSD 라이선스)입니다. 해밀턴 몬테카를로(HMC)와 No-U-Turn Sampler(NUTS)를 자동 미분과 함께 사용하여 복잡한 사후분포에서 효율적으로 샘플링합니다. 사회과학, 역학, 약동학, 머신러닝 연구에서 널리 사용됩니다.
Stan 프로그램의 주요 블록은 무엇인가요?
Stan 프로그램은 7개의 선택적 블록으로 구성됩니다: functions(사용자 정의 함수), data(관측 데이터 선언), transformed data(데이터 변환), parameters(추정할 미지수), transformed parameters(파라미터 변환), model(사전분포와 우도), generated quantities(사후 예측, 모델 비교용 로그 우도).
Stan에서 사전분포를 어떻게 지정하나요?
model 블록에서 ~ 연산자로 지정합니다. 주요 패턴: alpha ~ normal(0, 10)은 약한 정보 사전분포, beta ~ normal(0, 1)은 정규화, sigma ~ cauchy(0, 2.5)는 분산 파라미터용 반코시 사전분포, theta ~ beta(1, 1)은 확률에 대한 균등 사전분포입니다.
비중심 모수화란 무엇이며 언제 사용해야 하나요?
비중심 모수화는 계층 모형을 alpha_raw ~ std_normal()로 샘플링하고 transformed parameters에서 alpha = mu + tau * alpha_raw로 계산하는 방식으로 재매개변수화합니다. 그룹 수준 분산(tau)이 작을 때 발생하는 깔때기 기하 구조 문제를 해결하여 MCMC 샘플링 효율을 높입니다.
R과 Python에서 Stan 모델을 어떻게 실행하나요?
R에서는 RStan을 사용합니다: fit <- stan(file="model.stan", data=stan_data, chains=4, iter=2000). Python에서는 PyStan을 사용합니다: posterior = stan.build(model_code, data=data); fit = posterior.sample(num_chains=4). CmdStan은 명령줄 컴파일과 실행을 제공하며 CmdStanR/CmdStanPy 래퍼도 있습니다.
Stan 모델 적합 후 어떤 MCMC 진단을 확인해야 하나요?
Rhat(수렴을 위해 1.01 미만), n_eff(유효 표본 크기 100 이상), 발산 전이(반드시 0), 최대 트리 깊이 경고(한계 도달 시 증가), E-BFMI(0.3 이상)를 확인합니다. stan_trace()로 추적 플롯, pairs()로 파라미터 상관 진단을 수행합니다.
Stan에서 베이지안 모델을 어떻게 비교하나요?
generated quantities 블록에서 로그 우도를 계산한 후 R의 loo 패키지로 LOO-CV를 수행합니다: loo1 <- loo(extract_log_lik(fit)). loo_compare(loo1, loo2)로 elpd 차이를 비교합니다. 사전분포 검증을 위한 사전 예측 검사와 모델 적합도 평가를 위한 사후 예측 검사(ppc_dens_overlay)도 활용합니다.
이 Stan 레퍼런스는 무료로 사용할 수 있나요?
네, 이 Stan 레퍼런스는 계정 없이 완전 무료로 사용할 수 있습니다. 모든 콘텐츠가 브라우저에서 실행되며 서버 처리가 전혀 없습니다. liminfo.com의 무료 통계 및 데이터 과학 레퍼런스 도구 모음에 포함되어 있습니다.