Claude Code Plugins

Community-maintained marketplace

Feedback
0
0

Bayesian meta-analysis models including fixed effects, random effects, and network meta-analysis with Stan and JAGS implementations.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name meta-analysis
description Bayesian meta-analysis models including fixed effects, random effects, and network meta-analysis with Stan and JAGS implementations.

Meta-Analysis Models

Fixed Effects Meta-Analysis

Stan

data {
  int<lower=0> K;           // Number of studies
  vector[K] y;              // Effect estimates
  vector<lower=0>[K] se;    // Standard errors
}
parameters {
  real theta;               // Common effect
}
model {
  theta ~ normal(0, 10);
  y ~ normal(theta, se);
}

JAGS

model {
  for (i in 1:K) {
    y[i] ~ dnorm(theta, prec[i])
    prec[i] <- pow(se[i], -2)
  }
  theta ~ dnorm(0, 0.0001)
}

Random Effects Meta-Analysis

Stan (Non-centered, recommended)

data {
  int<lower=0> K;
  vector[K] y;
  vector<lower=0>[K] se;
}
parameters {
  real mu;                  // Overall mean
  real<lower=0> tau;        // Between-study SD
  vector[K] eta;            // Study effects (standardized)
}
transformed parameters {
  vector[K] theta = mu + tau * eta;
}
model {
  // Priors
  mu ~ normal(0, 10);
  tau ~ cauchy(0, 0.5);     // Half-Cauchy
  eta ~ std_normal();

  // Likelihood
  y ~ normal(theta, se);
}
generated quantities {
  real theta_new = normal_rng(mu, tau);  // Predictive
  real I2 = square(tau) / (square(tau) + mean(square(se)));
}

JAGS

model {
  for (i in 1:K) {
    y[i] ~ dnorm(theta[i], prec[i])
    prec[i] <- pow(se[i], -2)
    theta[i] ~ dnorm(mu, tau.theta)
  }

  mu ~ dnorm(0, 0.0001)
  tau.theta <- pow(sigma.theta, -2)
  sigma.theta ~ dunif(0, 10)

  # Heterogeneity
  tau2 <- pow(sigma.theta, 2)
}

Binary Outcomes

Stan (Log-Odds)

data {
  int<lower=0> K;
  array[K] int<lower=0> r1;   // Events in treatment
  array[K] int<lower=0> n1;   // Total in treatment
  array[K] int<lower=0> r2;   // Events in control
  array[K] int<lower=0> n2;   // Total in control
}
parameters {
  real d;                     // Overall log-OR
  real<lower=0> tau;
  vector[K] delta;            // Study-specific log-OR
  vector[K] mu;               // Baseline log-odds
}
model {
  d ~ normal(0, 10);
  tau ~ cauchy(0, 0.5);
  delta ~ normal(d, tau);
  mu ~ normal(0, 10);

  r2 ~ binomial_logit(n2, mu);
  r1 ~ binomial_logit(n1, mu + delta);
}
generated quantities {
  real OR = exp(d);
}

Network Meta-Analysis (NMA)

Stan (Consistency Model)

data {
  int<lower=0> K;             // Number of studies
  int<lower=0> T;             // Number of treatments
  array[K] int<lower=1> t1;   // Treatment 1 index
  array[K] int<lower=1> t2;   // Treatment 2 index
  vector[K] y;                // Effect estimate
  vector<lower=0>[K] se;
}
parameters {
  vector[T-1] d_raw;          // Basic parameters (vs reference)
  real<lower=0> tau;
  vector[K] delta;
}
transformed parameters {
  vector[T] d;
  d[1] = 0;                   // Reference treatment
  d[2:T] = d_raw;
}
model {
  d_raw ~ normal(0, 10);
  tau ~ cauchy(0, 0.5);

  for (k in 1:K) {
    delta[k] ~ normal(d[t2[k]] - d[t1[k]], tau);
    y[k] ~ normal(delta[k], se[k]);
  }
}
generated quantities {
  // Treatment rankings
  array[T] int rank;
  {
    array[T] int order = sort_indices_desc(d);
    for (t in 1:T) rank[order[t]] = t;
  }
}

Publication Bias

Selection Model (Stan)

data {
  int<lower=0> K;
  vector[K] y;
  vector<lower=0>[K] se;
  vector<lower=0,upper=1>[K] published;  // Publication indicator
}
parameters {
  real mu;
  real<lower=0> tau;
  vector[K] theta;
  real<lower=0> alpha;        // Selection severity
}
model {
  theta ~ normal(mu, tau);
  y ~ normal(theta, se);

  // Selection model: higher z-scores more likely published
  for (k in 1:K) {
    real z = y[k] / se[k];
    published[k] ~ bernoulli(Phi(alpha * z));
  }
}

Key Statistics

generated quantities {
  // Heterogeneity
  real tau2 = square(tau);
  real I2 = tau2 / (tau2 + mean(square(se)));

  // Prediction interval
  real pred_lower = mu - 1.96 * tau;
  real pred_upper = mu + 1.96 * tau;

  // Probability effect > 0
  real prob_positive = 1 - normal_cdf(0 | mu, tau);
}

Priors for Heterogeneity

Context tau prior
Pharmacological half_normal(0, 0.5)
Medical devices half_normal(0, 1)
Behavioral half_cauchy(0, 1)
Default half_cauchy(0, 0.5)