Skip to main content

bugs-fundamentals

Foundational knowledge for writing BUGS/JAGS models including precision parameterization, declarative syntax, distributions, and R integration. Use when creating or reviewing BUGS/JAGS models.

Zur Installation springen

Quellinformationen

Repository
choxos/BiostatAgent
Letzte Quellaktivität
10. Januar 2026 um 18:48
Erkannte Sprache von SKILL.md
Englisch
Sterne
11
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
bugs-fundamentals
description
Foundational knowledge for writing BUGS/JAGS models including precision parameterization, declarative syntax, distributions, and R integration. Use when creating or reviewing BUGS/JAGS models.
# BUGS/JAGS Fundamentals ## When to Use This Skill - Writing new WinBUGS or JAGS models - Understanding BUGS declarative syntax - Converting between BUGS and Stan - Integrating with R via R2jags or R2WinBUGS ## Model Structure BUGS uses a **single declarative block** where order doesn't matter: ``` model { # Likelihood (order doesn't matter) for (i in 1:N) { y[i] ~ dnorm(mu[i], tau) mu[i] <- alpha + beta * x[i] } # Priors alpha ~ dnorm(0, 0.001) beta ~ dnorm(0, 0.001) tau ~ dgamma(0.001, 0.001) # Derived quantities sigma <- 1 / sqrt(tau) } ``` ## CRITICAL: Precision Parameterization **BUGS uses PRECISION (tau = 1/variance), NOT standard deviation:** | Distribution | BUGS Syntax | Meaning | |-------------|-------------|---------| | Normal | `dnorm(mu, tau)` | tau = 1/sigma² | | MVN | `dmnorm(mu[], Omega[,])` | Omega = inverse(Sigma) | ### Converting SD ↔ Precision ``` # Precision from SD tau <- pow(sigma, -2) # SD from precision sigma <- 1 / sqrt(tau) ``` ## Distribution Reference ### Continuous (All use precision!) ``` y ~ dnorm(mu, tau) # Normal: tau = 1/sigma² y ~ dlnorm(mu, tau) # Log-normal (log-scale) y ~ dt(mu, tau, df) # Student-t y ~ dunif(lower, upper) # Uniform y ~ dgamma(shape, rate) # Gamma y ~ dbeta(a, b) # Beta y ~ dexp(lambda) # Exponential (rate) y ~ dweib(shape, lambda) # Weibull y ~ ddexp(mu, tau) # Double exponential ``` ### Discrete ``` y ~ dbern(p) # Bernoulli y ~ dbin(p, n) # Binomial (p first!) y ~ dpois(lambda) # Poisson y ~ dnegbin(p, r) # Negative binomial y ~ dcat(p[]) # Categorical y ~ dmulti(p[], n) # Multinomial ``` ### Multivariate ``` y[1:K] ~ dmnorm(mu[], Omega[,]) # MVN (precision matrix!) Omega[1:K,1:K] ~ dwish(R[,], df) # Wishart (for precision) p[1:K] ~ ddirch(alpha[]) # Dirichlet ``` ## Syntax Essentials ### Stochastic vs Deterministic ``` # Stochastic (random variable) y ~ dnorm(mu, tau) # Deterministic (function) mu <- alpha + beta * x ``` ### Loops ``` for (i in 1:N) { y[i] ~ dnorm(mu[i], tau) } ``` ### Truncation (JAGS) ``` y ~ dnorm(mu, tau) T(lower, upper) y ~ dnorm(mu, tau) T(0, ) # Lower only ``` ### Logical Functions (JAGS) ``` ind <- step(y - threshold) # 1 if y >= threshold eq <- equals(y, 0) # 1 if y == 0 ``` ## Common Priors ``` # Vague normal (variance = 1000) alpha ~ dnorm(0, 0.001) # Half-Cauchy on SD (via uniform) sigma ~ dunif(0, 100) tau <- pow(sigma, -2) # Vague gamma on precision tau ~ dgamma(0.001, 0.001) # Correlation matrix Omega ~ dwish(I[,], K + 1) ``` ## R Integration ### R2jags (Recommended) ```r library(R2jags) jags.data <- list(N = 100, y = y, x = x) jags.params <- c("alpha", "beta", "sigma") jags.inits <- function() { list(alpha = 0, beta = 0, tau = 1) } fit <- jags( data = jags.data, inits = jags.inits, parameters.to.save = jags.params, model.file = "model.txt", n.chains = 4, n.iter = 10000, n.burnin = 5000 ) print(fit) fit$BUGSoutput$summary ``` ### R2WinBUGS (Windows) ```r library(R2WinBUGS) fit <- bugs( data = bugs.data, inits = bugs.inits, parameters.to.save = bugs.params, model.file = "model.txt", n.chains = 3, n.iter = 10000, bugs.directory = "C:/WinBUGS14/" ) ``` ## Key Differences from Stan | Feature | BUGS/JAGS | Stan | |---------|-----------|------| | Normal | `dnorm(mu, tau)` precision | `normal(mu, sigma)` SD | | MVN | `dmnorm(mu, Omega)` precision | `multi_normal(mu, Sigma)` cov | | Syntax | Declarative (DAG) | Imperative (sequential) | | Blocks | Single model{} | 7 optional blocks | | Sampling | Gibbs + Metropolis | HMC/NUTS | | Discrete | Direct sampling | Marginalization required | ## Common Errors 1. **Using SD instead of precision**: `dnorm(0, 1)` means variance=1, NOT SD=1 2. **Wrong binomial order**: `dbin(p, n)` not `dbin(n, p)` 3. **Missing initial values**: Provide inits for complex models 4. **Invalid parent values**: Check for NA/NaN in data
Auf GitHub ansehen