agentsclimarketplace

Bugs fundamentals

Skill choxos/BiostatAgent/plugins/bayesian-modeling/skills/bugs-fundamentals

Claude Code plugin marketplace for biostatistics in R — 30 agents, 17 commands, and 45 skills spanning Bayesian modeling (Stan/PyMC/JAGS), indirect treatment comparisons (NMA/MAIC/STC/ML-NMR), tidy R workflows, and clinical trial simulation.

Install
npx -y skills add choxos/BiostatAgent --skill bugs-fundamentals

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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

SKILL.md

4.2 KB, as published. Nobody here has run it

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:

DistributionBUGS SyntaxMeaning
Normaldnorm(mu, tau)tau = 1/sigma²
MVNdmnorm(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)

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)

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

FeatureBUGS/JAGSStan
Normaldnorm(mu, tau) precisionnormal(mu, sigma) SD
MVNdmnorm(mu, Omega) precisionmulti_normal(mu, Sigma) cov
SyntaxDeclarative (DAG)Imperative (sequential)
BlocksSingle model{}7 optional blocks
SamplingGibbs + MetropolisHMC/NUTS
DiscreteDirect samplingMarginalization 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

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.