Agent skill

Pymc Bayesian Modeling

by jaechang-hits in jaechang-hits/SciAgent-Skills

Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction.

Apache-2.0Auto-check passedData & Analytics

Install Pymc Bayesian Modeling

skills CLI
$ npx skills add jaechang-hits/SciAgent-Skills --skill pymc-bayesian-modeling -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jaechang-hits/SciAgent-Skills pymc-bayesian-modeling --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/biostatistics/pymc-bayesian-modeling .claude/skills/pymc-bayesian-modeling && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pymc-bayesian-modeling
GitHub stars
374
Used in
1 other repo
Token cost
~5.7k tokens
SKILL.md length
1,628 words
Files
3 (incl. references)
Skills in repo
169
Repo updated
First seen
Licence
Apache-2.0

At a glance

Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction.

  • Works in 8 steps: Prepare Data → Define Model and Set Priors → Prior Predictive Check → …
  • Tasks that involve Statistics
  • SKILL.md covers Overview, When to Use, Prerequisites and Quick Start, plus 10 more sections
  • Calls pip

What it does

Pymc Bayesian Modeling is an agent skill from jaechang-hits/SciAgent-Skills. Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction. Hierarchical, logistic, GP variants; predictive checks.

Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/advanced_workflows.md` and `references/distributions_inference.md`).

It sits in Data & Analytics, covering Statistics. It works with PyMC. The repository describes itself as: 197 bioinformatics & life science skills for Claude Code and AI agents — BixBench 92.0% accuracy. RNA-seq, single-cell, drug discovery, proteomics, and more. Powers OmicsHorizon. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Statistics

Example prompts

  • “/pymc-bayesian-modeling”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Prepare Data
  2. Define Model and Set Priors
  3. Prior Predictive Check
  4. Sample Posterior (MCMC)
  5. Diagnose Sampling
  6. Posterior Predictive Check
  7. Compare Models
  8. Generate Predictions

What it can do on your machine

Read from SKILL.md and the folder at commit 82c862c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • pymc.io
    • github.com
    • python.arviz.org
    • bayesiancomputationbook.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pymc Bayesian Modeling loads about 5.7k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 52 tokens; SKILL.md has 1,628 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~52
When it runs · the whole SKILL.md, loaded when a task matches
~5.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~12k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jaechang-hits/SciAgent-Skills at commit 82c862c, republished under its Apache-2.0 licence (© jaechang-hits). 1,628 words, ~5,717 tokens.

Download SKILL.mdSave it as .claude/skills/pymc-bayesian-modeling/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
pymc-bayesian-modeling
description
Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction. Hierarchical, logistic, GP variants; predictive checks.
license
Apache-2.0

PyMC Bayesian Modeling

Overview

PyMC is a Python library for Bayesian statistical modeling and probabilistic programming. It provides an expressive syntax for defining probabilistic models and efficient inference via MCMC (NUTS) and variational methods (ADVI). This skill covers the full Bayesian modeling cycle from model specification through diagnostics, comparison, and prediction.

When to Use

  • Estimating parameters with full uncertainty quantification (credible intervals, not just point estimates)
  • Fitting hierarchical/multilevel models to grouped or nested data
  • Performing prior and posterior predictive checks to validate model assumptions
  • Comparing candidate models using information criteria (LOO-CV, WAIC)
  • Building regression models (linear, logistic, Poisson) in a Bayesian framework
  • Handling missing data or measurement error as latent parameters
  • Modeling time series with autoregressive or random walk priors
  • Generating posterior predictions for new observations with uncertainty bounds
  • Use Stan/PyStan instead for compiled, more scalable Bayesian inference on large models; use statsmodels for frequentist statistical tests

Prerequisites

  • Python packages: pymc >= 5.0, arviz, numpy, matplotlib
  • Data: NumPy arrays or pandas DataFrames with numeric columns
  • Environment: CPU sufficient for most models; GPU via JAX backend for large models
bash
pip install pymc arviz numpy matplotlib
# Optional: JAX backend for GPU acceleration
pip install pymc[jax]

Quick Start

python
import pymc as pm
import arviz as az
import numpy as np

# Simulate data
np.random.seed(42)
X = np.random.randn(100)
y = 2.5 + 1.3 * X + np.random.randn(100) * 0.5

# Build and fit model
with pm.Model() as model:
    alpha = pm.Normal("alpha", mu=0, sigma=5)
    beta = pm.Normal("beta", mu=0, sigma=5)
    sigma = pm.HalfNormal("sigma", sigma=1)
    mu = alpha + beta * X
    y_obs = pm.Normal("y_obs", mu=mu, sigma=sigma, observed=y)
    idata = pm.sample(1000, tune=1000, chains=4, random_seed=42)

print(az.summary(idata, var_names=["alpha", "beta", "sigma"]))
# Expected: alpha ~ 2.5, beta ~ 1.3, sigma ~ 0.5

Workflow

Step 1: Prepare Data

Standardize continuous predictors for better sampling efficiency. Use named coordinates for readable models and ArviZ integration.

python
import pymc as pm
import arviz as az
import numpy as np

# Load data
X = np.random.randn(200, 3)  # 200 obs, 3 predictors
y = X @ np.array([1.0, -0.5, 0.3]) + np.random.randn(200) * 0.8

# Standardize predictors
X_mean, X_std = X.mean(axis=0), X.std(axis=0)
X_scaled = (X - X_mean) / X_std

# Define coordinates for named dimensions
coords = {
    "predictors": ["var1", "var2", "var3"],
    "obs_id": np.arange(len(y)),
}
print(f"Data shape: X={X_scaled.shape}, y={y.shape}")
Step 2: Define Model and Set Priors

Specify the model structure inside a pm.Model() context. Use weakly informative priors, dims for named dimensions, and HalfNormal or Exponential for scale parameters.

python
with pm.Model(coords=coords) as model:
    # Priors — weakly informative, not flat
    alpha = pm.Normal("alpha", mu=0, sigma=1)
    beta = pm.Normal("beta", mu=0, sigma=1, dims="predictors")
    sigma = pm.HalfNormal("sigma", sigma=1)

    # Linear predictor
    mu = alpha + pm.math.dot(X_scaled, beta)

    # Likelihood
    y_obs = pm.Normal("y_obs", mu=mu, sigma=sigma, observed=y, dims="obs_id")

# Inspect model variables
print(model.basic_RVs)  # Lists: [alpha, beta, sigma, y_obs]
Step 3: Prior Predictive Check

Validate that priors produce plausible data ranges before fitting. Adjust priors if simulated data is unreasonable.

python
with model:
    prior_pred = pm.sample_prior_predictive(samples=1000, random_seed=42)

# Check prior-implied data range
prior_y = prior_pred.prior_predictive["y_obs"].values.flatten()
print(f"Prior predictive range: [{prior_y.min():.1f}, {prior_y.max():.1f}]")
print(f"Observed data range:    [{y.min():.1f}, {y.max():.1f}]")

az.plot_ppc(prior_pred, group="prior", num_pp_samples=100)
Step 4: Sample Posterior (MCMC)

Run NUTS sampling with multiple chains. Include log_likelihood=True if you plan model comparison later.

python
with model:
    idata = pm.sample(
        draws=2000,
        tune=1000,
        chains=4,
        target_accept=0.9,
        random_seed=42,
        idata_kwargs={"log_likelihood": True},
    )

print(f"Posterior shape: {idata.posterior['beta'].shape}")
# Expected: (4 chains, 2000 draws, 3 predictors)
Step 5: Diagnose Sampling

Check convergence before interpreting results. All three diagnostics (R-hat, ESS, divergences) must pass.

python
# Summary with convergence diagnostics
summary = az.summary(idata, var_names=["alpha", "beta", "sigma"])
print(summary[["mean", "sd", "hdi_3%", "hdi_97%", "r_hat", "ess_bulk"]])

# R-hat convergence check
bad_rhat = summary[summary["r_hat"] > 1.01]
if len(bad_rhat) > 0:
    print(f"WARNING: {len(bad_rhat)} parameters with R-hat > 1.01")
    print(bad_rhat[["r_hat"]])

# Effective sample size check
low_ess = summary[summary["ess_bulk"] < 400]
if len(low_ess) > 0:
    print(f"WARNING: {len(low_ess)} parameters with ESS < 400")

# Divergence check
n_div = idata.sample_stats.diverging.sum().item()
total = len(idata.posterior.draw) * len(idata.posterior.chain)
print(f"Divergences: {n_div}/{total} ({n_div / total * 100:.2f}%)")

# Visual diagnostics — trace plots and rank plots
az.plot_trace(idata, var_names=["alpha", "beta", "sigma"])
az.plot_rank(idata, var_names=["alpha", "beta", "sigma"])
Step 6: Posterior Predictive Check

Validate model fit by comparing simulated data from the posterior to observed data.

python
with model:
    pm.sample_posterior_predictive(idata, extend_inferencedata=True, random_seed=42)

az.plot_ppc(idata, num_pp_samples=100)
# Blue = observed data, grey = posterior simulations
# Systematic deviations indicate model misspecification
Step 7: Compare Models

Use LOO-CV or WAIC to compare candidate models. Lower information criterion is better.

python
# Fit multiple models with log_likelihood=True, then compare
# Example: compare linear vs a second model
idatas = {"linear": idata}  # add more fitted models here

comparison = az.compare(idatas, ic="loo")
print(comparison[["rank", "elpd_loo", "p_loo", "d_loo", "weight"]])

# Check LOO reliability via Pareto-k diagnostics
loo_result = az.loo(idata, pointwise=True)
high_k = (loo_result.pareto_k > 0.7).sum().item()
print(f"Observations with Pareto-k > 0.7: {high_k}")
# Interpretation: Dloo < 2 = similar models; Dloo > 10 = strong evidence

az.plot_compare(comparison)
Step 8: Generate Predictions

Produce posterior predictions for new data with full uncertainty propagation.

python
X_new = np.array([[0.5, -1.0, 0.2]])
X_new_scaled = (X_new - X_mean) / X_std

with model:
    pm.set_data({"X_scaled": X_new_scaled})
    post_pred = pm.sample_posterior_predictive(
        idata.posterior, var_names=["y_obs"], random_seed=42
    )

y_pred = post_pred.posterior_predictive["y_obs"]
print(f"Predicted mean: {y_pred.mean().item():.3f}")
print(f"94% HDI: {az.hdi(y_pred, hdi_prob=0.94).values}")

Key Parameters

ParameterDefaultRange / OptionsEffect
draws1000500-10000Number of posterior samples per chain
tune1000500-5000Warmup iterations (discarded); increase for complex posteriors
chains42-8Number of independent chains; minimum 4 for reliable R-hat
coresall CPUs1-NParallel chains; set equal to chains for full parallelism
target_accept0.80.8-0.99NUTS acceptance rate; increase to reduce divergences
init"auto""adapt_diag", "jitter+adapt_diag", "advi"Initialization strategy for sampler
random_seedNoneany intSeed for reproducibility
idata_kwargs{}{"log_likelihood": True}Store log-likelihood for LOO/WAIC model comparison
method (pm.fit)"advi""advi", "fullrank_advi", "svgd"Variational inference algorithm
n (pm.fit)100005000-100000VI optimization iterations
samples (prior pred)500100-5000Prior predictive samples for validation

Key Concepts

Prior/Distribution Selection Guide
DistributionUse WhenKey Parameters
Normal(mu, sigma)Unbounded real-valued parameter (standardized data)mu: center, sigma: spread
HalfNormal(sigma)Scale/standard deviation parameter (positive)sigma: spread of positive half
Exponential(lam)Scale parameter, alternative to HalfNormallam: rate (1/mean)
StudentT(nu, mu, sigma)Robust alternative to Normal (outlier-resistant)nu: degrees of freedom (<10 = heavier tails)
Beta(alpha, beta)Probability or proportion in [0,1]alpha=beta=2: weakly informative
Gamma(alpha, beta)Positive parameter (rate, concentration)alpha: shape, beta: rate
LogNormal(mu, sigma)Positive parameter with multiplicative effectsmu, sigma: of underlying Normal
LKJCorr(n, eta)Correlation matrix prioreta=1: uniform; eta>1: prefer identity
Dirichlet(a)Probability vector (sums to 1)a: concentration; uniform if all equal
Bernoulli(p / logit_p)Binary outcome likelihoodUse logit_p for numerical stability
Poisson(mu)Count data (equidispersed)mu: rate; use NegBinomial if overdispersed
NegativeBinomial(mu, alpha)Overdispersed count dataalpha: dispersion (smaller = more overdispersion)
Diagnostic Thresholds
MetricThresholdInterpretationAction if Failed
R-hat< 1.01Chains convergedRun longer chains; check multimodality
ESS bulk> 400Sufficient independent samplesIncrease draws; reparameterize
ESS tail> 400Reliable tail estimatesIncrease draws
Divergences0NUTS explored successfullyIncrease target_accept; non-centered param.
Pareto-k (LOO)< 0.7LOO estimate reliableUse WAIC or k-fold CV
Max tree depth< 10No trajectory truncationReparameterize or increase max_treedepth
Model Variants Overview
Problem TypeRecipeLikelihoodKey Feature
Grouped/nested dataHierarchical ModelNormal (varies)Non-centered parameterization, partial pooling
Binary outcomeLogistic RegressionBernoullilogit_p link function
Nonlinear/spatialGaussian ProcessNormalKernel-based covariance, flexible shape
Count data(use Poisson in Workflow)Poisson / NegBinomialLog link; NegBinomial for overdispersion
Time series(see references)AR / GaussianRandomWalkAutoregressive coefficients
Mixture/clustering(see references)Mixture / NormalMixtureComponent weights via Dirichlet

Common Recipes

Recipe: Hierarchical Model

When to use: data has natural grouping (patients within hospitals, students within schools). Non-centered parameterization avoids divergences from funnel geometry.

python
import pymc as pm
import arviz as az
import numpy as np

n_groups, n_per_group = 5, 30
group_idx = np.repeat(np.arange(n_groups), n_per_group)
group_names = [f"group_{i}" for i in range(n_groups)]

# Simulated grouped data
true_alphas = np.random.normal(3.0, 1.5, n_groups)
y_obs = np.random.normal(true_alphas[group_idx], 0.5)

with pm.Model(coords={"groups": group_names}) as hierarchical_model:
    # Hyperpriors (population level)
    mu_alpha = pm.Normal("mu_alpha", mu=0, sigma=5)
    sigma_alpha = pm.HalfNormal("sigma_alpha", sigma=2)

    # Non-centered parameterization
    alpha_offset = pm.Normal("alpha_offset", mu=0, sigma=1, dims="groups")
    alpha = pm.Deterministic(
        "alpha", mu_alpha + sigma_alpha * alpha_offset, dims="groups"
    )

    # Observation level
    sigma = pm.HalfNormal("sigma", sigma=1)
    y = pm.Normal("y", mu=alpha[group_idx], sigma=sigma, observed=y_obs)

    idata_hier = pm.sample(2000, tune=1000, target_accept=0.95, random_seed=42)

print(az.summary(idata_hier, var_names=["mu_alpha", "sigma_alpha", "alpha", "sigma"]))
Recipe: Logistic Regression

When to use: binary outcome variable (success/failure, disease/healthy). Use logit_p for numerical stability instead of computing probabilities directly.

python
import pymc as pm
import arviz as az
import numpy as np

# Simulated binary outcome
np.random.seed(42)
n, p = 200, 3
X_lr = np.random.randn(n, p)
true_beta = np.array([1.0, -0.5, 0.3])
prob = 1 / (1 + np.exp(-(0.2 + X_lr @ true_beta)))
y_binary = np.random.binomial(1, prob)

with pm.Model() as logistic_model:
    alpha = pm.Normal("alpha", mu=0, sigma=2)
    beta = pm.Normal("beta", mu=0, sigma=2, shape=p)
    logit_p = alpha + pm.math.dot(X_lr, beta)
    y = pm.Bernoulli("y", logit_p=logit_p, observed=y_binary)

    idata_logit = pm.sample(2000, tune=1000, target_accept=0.9, random_seed=42)

summary = az.summary(idata_logit, var_names=["alpha", "beta"])
print(summary[["mean", "sd", "hdi_3%", "hdi_97%"]])
# Odds ratios
beta_samples = idata_logit.posterior["beta"].values.reshape(-1, p)
print(f"Odds ratios (median): {np.median(np.exp(beta_samples), axis=0)}")
Recipe: Gaussian Process

When to use: modeling unknown nonlinear functions, spatial data, or smooth latent processes. Computationally expensive for n > 1000; consider sparse approximations for larger datasets.

python
import pymc as pm
import arviz as az
import numpy as np

# Simulated nonlinear data
np.random.seed(42)
X_gp = np.sort(np.random.uniform(0, 10, 60))[:, None]
y_gp = np.sin(X_gp[:, 0]) + np.random.randn(60) * 0.3

with pm.Model() as gp_model:
    # GP hyperparameters
    ls = pm.Gamma("lengthscale", alpha=2, beta=1)
    eta = pm.HalfNormal("amplitude", sigma=2)
    sigma_noise = pm.HalfNormal("noise", sigma=0.5)

    # Covariance function
    cov = eta**2 * pm.gp.cov.Matern52(1, ls=ls)
    gp = pm.gp.Marginal(cov_func=cov)

    # Marginal likelihood
    y_ = gp.marginal_likelihood("y", X=X_gp, y=y_gp, sigma=sigma_noise)
    idata_gp = pm.sample(1000, tune=1000, target_accept=0.9, random_seed=42)

# Predict on new points
X_new_gp = np.linspace(0, 10, 100)[:, None]
with gp_model:
    f_pred = gp.conditional("f_pred", X_new_gp)
    pred_samples = pm.sample_posterior_predictive(idata_gp, var_names=["f_pred"])

print(f"GP predictions shape: {pred_samples.posterior_predictive['f_pred'].shape}")

Expected Outputs

  • Trace plots (az.plot_trace) -- chain mixing visualization; healthy chains look like "fuzzy caterpillars"
  • Posterior summary (az.summary) -- mean, SD, HDI, R-hat, ESS per parameter
  • Prior/posterior predictive plots (az.plot_ppc) -- simulated vs observed data distributions
  • Forest plots (az.plot_forest) -- coefficient estimates with credible intervals
  • Model comparison table (az.compare) -- ranked models with LOO/WAIC, weights, warnings
  • Rank plots (az.plot_rank) -- uniform histograms indicate good mixing
  • Energy plot (az.plot_energy) -- HMC energy transition diagnostics
  • InferenceData file (idata.to_netcdf("results.nc")) -- serialized results for later analysis

Troubleshooting

ProblemCauseSolution
Divergent transitionsPosterior geometry difficult for NUTS (funnels, ridges)Increase target_accept=0.95; use non-centered parameterization; add stronger priors
Low ESS (< 400)High autocorrelation between samplesIncrease draws=5000; reparameterize to reduce correlation; try QR decomposition for correlated predictors
R-hat > 1.01Chains have not convergedIncrease tune=2000, draws=5000; check for multimodality; initialize with ADVI
Slow samplingComplex posterior or large datasetUse ADVI for initialization; reduce model complexity; increase cores; try JAX backend
Pareto-k > 0.7 in LOOInfluential observations affecting LOO estimateUse WAIC instead; investigate influential points; consider k-fold CV
Hit max tree depthModel geometry requires long trajectoriesReparameterize model; increase max_treedepth parameter
SamplingError at startPoor initializationTry init="adapt_diag" or init="jitter+adapt_diag"; provide initvals via MAP
Biased posterior (prior dominates)Priors too strong relative to dataWeaken priors (increase sigma); check prior predictive; verify data is correctly passed
ValueError: logp = -infParameter hit impossible regionCheck data for NaN/Inf; ensure positive params use HalfNormal/Gamma; verify likelihood matches data type
Show full SKILL.md (602 more words)Show less

Best Practices

  1. Use weakly informative priors, not flat priors. Flat priors (Uniform over large ranges) cause sampling difficulties and are rarely appropriate.
  2. Always run prior predictive checks before fitting. If prior-implied data is implausible, adjust priors before sampling.
  3. Standardize continuous predictors to mean=0, sd=1 for better NUTS geometry and faster sampling.
  4. Use non-centered parameterization for hierarchical models: offset ~ Normal(0,1); param = mu + sigma * offset instead of param ~ Normal(mu, sigma).
  5. Run at least 4 chains for reliable R-hat and ESS diagnostics. Never trust a single chain.
  6. Check all three diagnostics (R-hat < 1.01, ESS > 400, 0 divergences) before interpreting posteriors.
  7. Include log_likelihood=True when fitting if you plan to compare models via LOO or WAIC.
  8. Use dims instead of shape for named dimensions -- integrates with ArviZ for labeled summaries and subsetting.
  9. Report credible intervals (HDI), not just point estimates. The posterior distribution is the result, not a single number.
  10. Save results with idata.to_netcdf("results.nc") for reproducibility and later re-analysis.

Bundled Resources

Two reference files provide deeper detail for on-demand consultation:

  • references/distributions_inference.md -- Distribution catalog organized by category (continuous, discrete, multivariate, mixture, time series, special/modifiers) with full parameter signatures, support, and common uses. Sampling and inference methods (NUTS, Metropolis, Slice, CompoundStep, SMC, ADVI, fullrank ADVI, SVGD, MAP) with code examples and a method selection guide table. Reparameterization tricks (non-centered, QR decomposition) with code. Covers: consolidated from original references/distributions.md (320 lines) and references/sampling_inference.md (424 lines). Relocated inline: core distribution selection guide table (Key Concepts), diagnostic threshold table (Key Concepts), basic ADVI usage (Recipe: Variational Inference in original, covered in references here). Omitted: shape broadcasting examples (trivial NumPy-style shape=5), basic dims usage (covered in Workflow Step 2), prior predictive sampling (covered in Workflow Step 3).

  • references/advanced_workflows.md -- Model comparison workflow (LOO, WAIC, Pareto-k reliability checks, model averaging with weighted predictions), comprehensive diagnostic report generation (trace plots, rank plots, autocorrelation, energy, ESS evolution), prior-posterior comparison patterns, data preparation best practices (standardization, centering, missing data imputation), prior selection guidelines (weakly informative vs informative with domain knowledge), named dimensions (dims) usage with xarray subsetting, save/load patterns (NetCDF, pickle). Mixture model pattern. Covers: consolidated from original references/workflows.md (526 lines). Relocated inline: core diagnostic checking logic (Workflow Step 5), model comparison basics (Workflow Step 7), prior predictive check (Workflow Step 3), linear/logistic/hierarchical model code (Recipes). Omitted: complete monolithic workflow template (redundant with 8-step Workflow section).

Per-reference-file disposition (all originals)

Original references/ (3 files):

  1. distributions.md (320 lines) -> consolidated with sampling_inference.md into new references/distributions_inference.md
  2. sampling_inference.md (424 lines) -> consolidated with distributions.md into new references/distributions_inference.md
  3. workflows.md (526 lines) -> migrated as new references/advanced_workflows.md

Original scripts/ (2 files):

  1. model_diagnostics.py (350 lines) -> check_diagnostics() logic (R-hat, ESS, divergences, tree depth checks) inlined in Workflow Step 5; create_diagnostic_report() plot generation patterns described in Expected Outputs and referenced in references/advanced_workflows.md; compare_prior_posterior() utility covered in references/advanced_workflows.md
  2. model_comparison.py (387 lines) -> compare_models() and check_loo_reliability() patterns inlined in Workflow Step 7 (using az.compare and az.loo directly); model_averaging() pattern covered in references/advanced_workflows.md; cross_validation_comparison() guidance covered in references/advanced_workflows.md; plot_model_comparison() is a thin wrapper around az.plot_compare (inlined in Step 7)
  • arviz (planned) -- posterior visualization and diagnostics; PyMC returns ArviZ InferenceData objects
  • bambi (planned) -- formula-based interface to PyMC (R-style y ~ x1 + x2 syntax); simpler API for standard GLMs
  • numpyro (planned) -- JAX-based probabilistic programming; faster NUTS via hardware acceleration
  • statsmodels-statistical-modeling -- frequentist regression and GLMs; use when Bayesian framework is not needed
  • scikit-learn-machine-learning -- ML classification/regression; use when prediction accuracy matters more than uncertainty quantification

References

© jaechang-hits, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in skills/biostatistics/pymc-bayesian-modeling of jaechang-hits/SciAgent-Skills.

  • SKILL.md
  • references/advanced_workflows.md
  • references/distributions_inference.md

Open the folder on GitHubat commit 82c862c

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in jaechang-hits/SciAgent-Skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Pymc Bayesian Modeling next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pymc Bayesian Modeling compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pymc Bayesian Modeling this skilljaechang-hits/SciAgent-Skills3741 repos~5.7kAutomated safety check: PassApache-2.0
Statistical Analysisspacering-net/codeg3.9k3 repos~5kAutomated safety check: PassMIT
Bayesian Workflowbrycewang-stanford/Auto-Empirical-Research-Skills4.6k—~3.5kAutomated safety check: PassMIT
PyMC Bayesian Modelingdavila7/claude-code-templates33k11 repos~3.9kAutomated safety check: PassMIT
Bayesian Estimationbrycewang-stanford/Auto-Empirical-Research-Skills4.6k—~3.4kAutomated safety check: PassCustom licence
Bayesian Cognitive Model BuilderNeuroAIHub/BrainPilot1.1k—~5.6kAutomated safety check: PassAGPL-3.0

Similar skills

  • Statistical Analysis

    spacering-net/codeg

    Guided statistical analysis for research data - test selection, assumption checking, effect sizes, power analysis, Bayesian alternatives, and APA-formatted reporting.

    3.9k GitHub starsUsed in 3 repos~5k tokens
    Data & AnalyticsAuto-check passed
  • Bayesian Workflow

    brycewang-stanford/Auto-Empirical-Research-Skills

    Opinionated Bayesian modeling workflow with PyMC and ArviZ. An agent skill from brycewang-stanford/Auto-Empirical-Research-Skills.

    4.6k GitHub stars~3.5k tokensUpdated 4 days ago
    Data & AnalyticsAuto-check passed
  • PyMC Bayesian Modeling

    davila7/claude-code-templates

    Builds, fits, checks and compares Bayesian models in PyMC, from priors and NUTS sampling to variational inference, LOO and WAIC comparison, and diagnostics.

    33k GitHub starsUsed in 11 repos~3.9k tokens
    Data & AnalyticsAuto-check passed
  • Bayesian Estimation

    brycewang-stanford/Auto-Empirical-Research-Skills

    This skill covers Bayesian estimation and inference in quantitative social science.

    4.6k GitHub stars~3.4k tokensUpdated 4 days ago
    Data & AnalyticsAuto-check passed
  • Domain-validated guidance for building hierarchical Bayesian cognitive models with Stan/PyMC: prior specification, model structure, MCMC diagnostics, and posterior predictive checks

    1.1k GitHub stars~5.6k tokensUpdated 7 days ago
    Data & AnalyticsAuto-check passed
  • Sandbox Bench

    vercel/next.js

    Official

    Benchmark React or Next.js changes on Vercel Sandbox VMs with paired A/B statistics: react PR/commit vs base, or Next.js PR/commit vs base, measured end-to-end through the bench/render-pipeline app…

    143k GitHub stars~4.1k tokensUpdated today
    Data & AnalyticsAuto-check passed

More from jaechang-hits/SciAgent-Skills

All 169 skills in this repo
  • Neb Irc Activation Energy

    jaechang-hits/SciAgent-Skills

    NEB-IRC activation energy pipeline for reaction barriers using GFN2-xTB and pysisyphus.

    374 GitHub stars~4k tokensUpdated 11 days ago
    Auto-check passed
  • Molecular Visualization 3dmol

    jaechang-hits/SciAgent-Skills

    3Dmol.js WebGL molecular visualization emitted as self-contained HTML.

    374 GitHub stars~3.2k tokensUpdated 11 days ago
    Auto-check passed
  • Cobrapy Metabolic Modeling

    jaechang-hits/SciAgent-Skills

    Constraint-based (COBRA) analysis of genome-scale metabolic models: FBA, FVA, knockouts, flux sampling, production envelopes, gapfilling, media optimization.

    374 GitHub starsUsed in 1 repo~4.9k tokens
    Auto-check passed
  • Rdkit Chemdraw Cdxml

    jaechang-hits/SciAgent-Skills

    Read, write, and edit ChemDraw CDX/CDXML files with RDKit's rdkit.Chem.rdChemDraw plus direct XML editing, always paired with a rendered PNG.

    374 GitHub stars~6.9k tokensUpdated 11 days ago
    Auto-check passed
  • Pubmed Database

    jaechang-hits/SciAgent-Skills

    Programmatic PubMed access via NCBI E-utilities REST API. An agent skill from jaechang-hits/SciAgent-Skills.

    374 GitHub starsUsed in 1 repo~4.4k tokens
    Auto-check passed
  • Sciagent Skill Creator

    jaechang-hits/SciAgent-Skills

    Scaffold a new SciAgent-Skills entry. An agent skill from jaechang-hits/SciAgent-Skills.

    374 GitHub stars~2.3k tokensUpdated 11 days ago
    Auto-check passed

Works with

Questions about Pymc Bayesian Modeling

What does Pymc Bayesian Modeling do?

Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction. Pymc Bayesian Modeling is an agent skill from jaechang-hits/SciAgent-Skills. Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction.

When should I use Pymc Bayesian Modeling?

Pymc Bayesian Modeling fits situations like: tasks that involve Statistics.

How do I install Pymc Bayesian Modeling in Claude Code?

Run `npx skills add jaechang-hits/SciAgent-Skills --skill pymc-bayesian-modeling -a claude-code`. Or copy the skill folder (skills/biostatistics/pymc-bayesian-modeling in jaechang-hits/SciAgent-Skills) into .claude/skills/pymc-bayesian-modeling in your project. Claude Code loads it when a task matches its description.

How do I install Pymc Bayesian Modeling in Codex?

Run `npx skills add jaechang-hits/SciAgent-Skills --skill pymc-bayesian-modeling -a codex`. Or copy the skill folder (skills/biostatistics/pymc-bayesian-modeling in jaechang-hits/SciAgent-Skills) into .agents/skills/pymc-bayesian-modeling in your project. Codex loads it when a task matches its description.

Can I use Pymc Bayesian Modeling in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jaechang-hits/SciAgent-Skills --skill pymc-bayesian-modeling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pymc-bayesian-modeling, .gemini/skills/pymc-bayesian-modeling, .github/skills/pymc-bayesian-modeling and .opencode/skills/pymc-bayesian-modeling in your project.

What does Pymc Bayesian Modeling need to run?

Going by SKILL.md and its folder, Pymc Bayesian Modeling needs the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does Pymc Bayesian Modeling access the network?

SKILL.md names 4 domains. As links in the text: pymc.io, github.com, python.arviz.org and bayesiancomputationbook.com. This is read from the text; nothing was executed.

Is Pymc Bayesian Modeling safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pymc Bayesian Modeling use?

Pymc Bayesian Modeling is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pymc Bayesian Modeling use?

About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.2k tokens, read only when the agent opens those files.

What are the alternatives to Pymc Bayesian Modeling?

Skills that share tags, products or a category with Pymc Bayesian Modeling: Statistical Analysis (spacering-net/codeg, 3.9k stars), Bayesian Workflow (brycewang-stanford/Auto-Empirical-Research-Skills, 4.6k stars), PyMC Bayesian Modeling (davila7/claude-code-templates, 33k stars) and Bayesian Estimation (brycewang-stanford/Auto-Empirical-Research-Skills, 4.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pymc Bayesian Modeling?

jaechang-hits (a GitHub user) maintains it in jaechang-hits/SciAgent-Skills, which has 374 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 29, 2026.

Source: jaechang-hits/SciAgent-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.