Skip to main content

time-series-models

Bayesian time series models including AR, MA, ARMA, state-space models, and dynamic linear models in Stan and JAGS.

跳到安装

来源信息

仓库
choxos/BiostatAgent
最近来源活动
2026年1月10日 18:48
检测到的 SKILL.md 语言
英语
星标
11
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
time-series-models
description
Bayesian time series models including AR, MA, ARMA, state-space models, and dynamic linear models in Stan and JAGS.
# Time Series Models ## AR(1) Model ### Stan ```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) ```stan 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 ```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 ```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 ```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) ```stan 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 ```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 quantities` for forecasting
在 GitHub 查看