bugs-fundamentalslisted
Install: claude install-skill choxos/BiostatAgent
# 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) # Be