From bayesian-modeling
Bayesian time series models including AR, MA, ARMA, state-space models, and dynamic linear models in Stan and JAGS.
npx claudepluginhub choxos/biostatagent --plugin bayesian-modelingThis skill uses the workspace's default tool permissions.
```stan
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
data {
int<lower=0> T;
vector[T] y;
}
parameters {
real mu;
real<lower=-1, upper=1> phi; // Stationarity
real<lower=0> sigma;
}
model {
mu ~ normal(0, 10);
phi ~ uniform(-1, 1);
sigma ~ exponential(1);
// Stationary initial distribution
y[1] ~ normal(mu, sigma / sqrt(1 - phi^2));
// AR(1) likelihood
for (t in 2:T)
y[t] ~ normal(mu + phi * (y[t-1] - mu), sigma);
}
model {
y[1] ~ normal(mu, sigma / sqrt(1 - square(phi)));
y[2:T] ~ normal(mu + phi * (y[1:(T-1)] - mu), sigma);
}
model {
y[1] ~ dnorm(mu, tau / (1 - phi * phi))
for (t in 2:T) {
y[t] ~ dnorm(mu + phi * (y[t-1] - mu), tau)
}
mu ~ dnorm(0, 0.001)
phi ~ dunif(-1, 1)
tau ~ dgamma(0.001, 0.001)
sigma <- 1/sqrt(tau)
}
data {
int<lower=0> T;
int<lower=1> P; // AR order
vector[T] y;
}
parameters {
real mu;
vector[P] phi;
real<lower=0> sigma;
}
model {
mu ~ normal(0, 10);
phi ~ normal(0, 0.5);
sigma ~ exponential(1);
for (t in (P+1):T) {
real pred = mu;
for (p in 1:P)
pred += phi[p] * (y[t-p] - mu);
y[t] ~ normal(pred, sigma);
}
}
data {
int<lower=0> T;
vector[T] y;
}
parameters {
vector[T] mu; // Latent state
real<lower=0> sigma_y; // Observation noise
real<lower=0> sigma_mu; // State noise
}
model {
sigma_y ~ exponential(1);
sigma_mu ~ exponential(1);
// State evolution (random walk)
mu[1] ~ normal(y[1], sigma_y);
mu[2:T] ~ normal(mu[1:(T-1)], sigma_mu);
// Observations
y ~ normal(mu, sigma_y);
}
parameters {
vector[T] mu; // Level
vector[T] delta; // Trend
real<lower=0> sigma_y;
real<lower=0> sigma_mu;
real<lower=0> sigma_delta;
}
model {
// Level evolution
mu[2:T] ~ normal(mu[1:(T-1)] + delta[1:(T-1)], sigma_mu);
// Trend evolution
delta[2:T] ~ normal(delta[1:(T-1)], sigma_delta);
// Observations
y ~ normal(mu, sigma_y);
}
data {
int<lower=0> T;
int<lower=2> S; // Season length (e.g., 12 for monthly)
vector[T] y;
}
parameters {
vector[T] mu;
vector[S-1] gamma_init; // Initial seasonal effects
real<lower=0> sigma_y;
real<lower=0> sigma_mu;
real<lower=0> sigma_gamma;
}
transformed parameters {
vector[T] gamma;
// Sum-to-zero constraint
for (t in 1:(S-1))
gamma[t] = gamma_init[t];
gamma[S] = -sum(gamma_init);
for (t in (S+1):T)
gamma[t] = -sum(gamma[(t-S+1):(t-1)]) + normal_rng(0, sigma_gamma);
}
model {
y ~ normal(mu + gamma, sigma_y);
}
parameters {
real mu;
real<lower=0> alpha0;
real<lower=0, upper=1> alpha1;
real<lower=0, upper=1-alpha1> beta1;
}
transformed parameters {
vector<lower=0>[T] sigma2;
sigma2[1] = alpha0 / (1 - alpha1 - beta1);
for (t in 2:T)
sigma2[t] = alpha0 + alpha1 * square(y[t-1] - mu) + beta1 * sigma2[t-1];
}
model {
y ~ normal(mu, sqrt(sigma2));
}
generated quantities for forecasting