Back to Skills

bugs-fundamentals

verified

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

View on GitHub

Marketplace

bayesian-modeling-agent

choxos/BayesianAgent

Plugin

bayesian-modeling

statistics

Repository

choxos/BayesianAgent

plugins/bayesian-modeling/skills/bugs-fundamentals/SKILL.md

Last Verified

January 21, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/choxos/BayesianAgent/blob/main/plugins/bayesian-modeling/skills/bugs-fundamentals/SKILL.md -a claude-code --skill bugs-fundamentals

Installation paths:

Claude
.claude/skills/bugs-fundamentals/
Powered by add-skill CLI

Instructions

# 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 var

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3804 chars