Skip to main content

hierarchical-models

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

Ir a la instalación

Datos de origen

Repositorio
choxos/BiostatAgent
Última actividad en el origen
10 de enero de 2026 a las 18:48
Idioma detectado de SKILL.md
inglés
Estrellas
11
Forks
1

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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
Ver en GitHub