Time series models
Skill choxos/BiostatAgent/plugins/bayesian-modeling/skills/time-series-models
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.
npx -y skills add choxos/BiostatAgent --skill time-series-modelsAssembled 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
Bayesian time series models including AR, MA, ARMA, state-space models, and dynamic linear models in Stan and JAGS.
SKILL.md
3.5 KB, as published. Nobody here has run it
Time Series Models
AR(1) Model
Stan
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);
}
Vectorized Stan (Efficient)
model {
y[1] ~ normal(mu, sigma / sqrt(1 - square(phi)));
y[2:T] ~ normal(mu + phi * (y[1:(T-1)] - mu), sigma);
}
JAGS
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)
}
AR(p) Model
Stan
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);
}
}
Local Level (Random Walk + Noise)
Stan
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);
}
Local Linear Trend
Stan
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);
}
Seasonal Model
Stan (Additive Seasonality)
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);
}
GARCH(1,1) (Volatility Clustering)
Stan
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));
}
Diagnostics
- Check stationarity constraints (|phi| < 1 for AR)
- Examine residual autocorrelation (ACF/PACF)
- One-step-ahead predictions for model comparison
- Use
generated quantitiesfor forecasting