Skip to main content

hierarchical-models

Patterns for hierarchical/multilevel Bayesian models including random effects, partial pooling, and centered vs non-centered parameterizations.

설치로 이동

소스 정보

저장소
choxos/BiostatAgent
최근 소스 활동
2026년 1월 10일 18:48
감지된 SKILL.md 언어
영어
스타
11
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
hierarchical-models
description
Patterns for hierarchical/multilevel Bayesian models including random effects, partial pooling, and centered vs non-centered parameterizations.
# Hierarchical Models ## When to Use - Nested/grouped data (students in schools, patients in hospitals) - Repeated measurements on subjects - Meta-analysis with study-level variation - Partial pooling between complete pooling and no pooling ## Core Concept: Partial Pooling ``` Group means shrink toward overall mean based on: - Within-group sample size - Within-group variance - Between-group variance ``` ## Stan Implementation ### Centered Parameterization (Default) ```stan data { int<lower=0> N; // Total observations int<lower=0> J; // Number of groups array[N] int<lower=1,upper=J> group; vector[N] y; } parameters { real mu; // Population mean real<lower=0> tau; // Between-group SD real<lower=0> sigma; // Within-group SD vector[J] theta; // Group means } model { // Hyperpriors mu ~ normal(0, 10); tau ~ cauchy(0, 2.5); sigma ~ exponential(1); // Group effects theta ~ normal(mu, tau); // Likelihood y ~ normal(theta[group], sigma); } ``` ### Non-Centered Parameterization (Better for weak data/small tau) ```stan parameters { real mu; real<lower=0> tau; real<lower=0> sigma; vector[J] theta_raw; // Standard normal } transformed parameters { vector[J] theta = mu + tau * theta_raw; } model { theta_raw ~ std_normal(); // ... rest same } ``` **When to use non-centered**: Divergences, small tau, few observations per group. ## JAGS Implementation ``` model { for (i in 1:N) { y[i] ~ dnorm(theta[group[i]], tau.y) } for (j in 1:J) { theta[j] ~ dnorm(mu, tau.theta) } # Hyperpriors mu ~ dnorm(0, 0.0001) tau.theta <- pow(sigma.theta, -2) sigma.theta ~ dunif(0, 100) tau.y <- pow(sigma.y, -2) sigma.y ~ dunif(0, 100) } ``` ## Classic Example: Eight Schools ```stan data { int<lower=0> J; array[J] real y; // Observed effects array[J] real<lower=0> sigma; // Known SEs } parameters { real mu; real<lower=0> tau; vector[J] theta_raw; } transformed parameters { vector[J] theta = mu + tau * theta_raw; } model { mu ~ normal(0, 5); tau ~ cauchy(0, 5); theta_raw ~ std_normal(); y ~ normal(theta, sigma); } ``` ## Diagnostics - Check tau posterior (very small → use non-centered) - Divergences often indicate centered/non-centered mismatch - Compare to no-pooling and complete-pooling models
GitHub에서 보기