agentleFS
chaobo8484chaobo8484/MathX-math-model-skills/skills/time-series-arima/SKILL.md

time-series-arima

Skill0 starsChanged 2 months agoMITView on GitHub

带平稳性诊断与区间预测的 ARIMA/SARIMA 建模。等间隔 30 点以上、有趋势或季节性时用;极小样本见 gray-prediction。

The file

Files
SKILL.md

时间序列 ARIMA/SARIMA

先读仓库根目录的 CONTEXT.md(术语/单位/venue 默认),全文用它的词。 输入先经 ingest-inputs 归一(质量报告与来源记录随数据走)。

只做一件事的构造型技能:把等间隔序列变成多步预测,残差是白噪声。不做极小样本外推(那是 gray-prediction)、不做带协变量的解释性回归(那是 regression-family)、不做因果推断。

Operating Posture

你是建模专员,产出的预测审稿人能重拟合出来。标准是诊断过的平稳性和干净的残差:每个差分阶数都有检验依据,每个定阶都从 ACF/PACF 读得出,残差过 Ljung-Box。写的时候就按残差检查一次通过来写。

两种失败模式,第一种更糟:

  1. 拟合数据撑不起的结构。 20 个点上季节 SARIMA、40 个观测估 6 个参数、泄露未来的外生回归。过参数的 ARIMA 是带置信带的记忆机器。
  2. 不带诊断报预测——无 ADF、无残差检查、无回测、无区间。没诊断过的模型的点预测,是带标准误的猜。

残差不白、回测没有,就不给预测。无诊断,无预测。

Hard Rules

  1. 等间隔且 n ≥ 约 30。 缺口要声明和处理(插值方法点名),否则本技能拒绝。30 点以下又无季节性,直说并考虑 gray-prediction。
  2. 平稳性靠检验,不靠肉眼。 每个差分决策配 ADF(或 KPSS);d 取平稳所需的最小阶,通常 0–2。季节 D 同理配季节 ADF。
  3. 阶数来自 ACF/PACF + 信息准则,且被数据封顶。 p+q(+P+Q)相对 n 要小;AICc/BIC 在 handful 候选里选,不做 50 个模型的钓鱼。
  4. 残差必须白。 前若干滞后 Ljung-Box p > 0.05,残差 ACF 落带内,均值零。残差不白就回第 3 步,不要进报告。
  5. 区间和回测随预测交付。 预测区间随步长变宽——报出来;滚动回测(不是样本内拟合)才是算数的误差。

Build Sequence

1. 先判断该不该用 ARIMA

情形判定
等间隔、约 30+ 点、有趋势或季节性、要多步预测ARIMA/SARIMA,继续
4–10 个点、近指数停。用 gray-prediction
预测靠协变量驱动(随时间的 y ~ X)停。那是带时间特征的 regression-family,或外生 X 严格已知的 SARIMAX
不等间隔、冲击驱动、机制断裂停。直说;ARIMA 假设生成过程稳定

2. 画图、清洗、平稳化

门禁兜底:调 assets/scripts/arima_gate.py 做 ADF 平稳性检验与差分阶数判定,不许肉眼定 d。

  • 画原始序列、ACF、PACF。记趋势、季节周期 s(无季节 s = 1)、异常值、缺口。
  • 缺口/异常值显式处理:方法点名(线性插值、季节填充),个数报告。悄悄填是编造。
  • 原序列 ADF;差分(d = 1)再检验;取拒绝非平稳的最小 d(很少超过 2)。有季节对 D 在滞后 s 做季节差分同理(arima_gate.py --value-col 输出 adf_raw/diff)。
  • gate:d(及 D、s)连同检验统计量一起声明。“图看着往上走所以 d = 1”不是依据。

3. 定阶、拟合、少量比较

  • p 从 PACF 截尾读,q 从 ACF 截尾读;季节 P/Q 同理在 s、2s 滞后读。
  • 拟合少量候选(最多 3–5 个),比 AICc/BIC。AICc 差 2 以内选简单的。
  • SARIMAX 的外生 X 必须是严格外生的(无泄露:预测时刻 X 已知,或 X 另行预测且自带误差)。
  • gate:总参数 ≪ n(经验:每个参数至少 10 个观测)。参数再多,区间就是装饰。

4. 残差诊断——gate

同上脚本输出 ljung_box p 值,p>0.05 才放行。

  • 残差 Ljung-Box(前 min(10, n/5) 个滞后):p > 0.05,否则回去改。
  • 残差 ACF 落置信带内;均值 ≈ 0;QQ 大致成直线(重尾就直说,区间放宽)。
  • 没过 → 改阶(残余自相关通常 MA +1,季节残余加季节项),绝不带脏残差往下走。

5. 先回测,再预测

  • 滚动回测覆盖最后 1–2 个季节周期(或最后 20%):报告 MAE/RMSE,对朴素(顺延)和季节朴素基线。样本外打不过季节朴素,结论就是这个,不是预测。
  • 预测 h 步,带 80% 和 95% 区间。明说区间会变宽,远期点值是模型的漂移,不是知识。

Never Ship

收尾自查,不过即拦:

禁忌替代
预测无 ADF/d 依据d(D、s)+ 检验统计量声明
几十个模型钓鱼定阶3–5 个候选,AICc,打平选简单
残差不查或不白Ljung-Box p > 0.05 + 干净 ACF
点预测无区间80%/95% 带,变宽写明
样本内误差当精度滚动回测对朴素基线
泄露的外生回归X 在预测时刻严格已知
8 个点跑 SARIMAgray-prediction 或拒绝

Output

交付物是预测加诊断,顺序如下:

  • 序列 + 平稳性——图形描述、ADF 统计量、d(D、s)。
  • 模型——阶数、AICc 表(3–5 行)、拟合工具。
  • 残差——Ljung-Box p、ACF 结论、QQ 说明。
  • 回测——滚动 MAE/RMSE 对朴素与季节朴素。
  • 预测——h 步带 80%/95% 区间 + 步长警示。

不要写成报告。诊断就是交付物。

Tone

立场鲜明、废话少。当正确答案是“12 阶还有自相关——这缺的是季节项,不是预测”就直说。回测输给季节朴素时,报这场失败,不要拿样本内 R² 埋了它。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.