正在加载中...

展开本页目录
算法教程ARIMA-自回归差分移动平均模型

ARIMA-自回归差分移动平均模型

No.038 · 在线教程

ARIMA(AutoRegressive Integrated Moving Average)是经典的时间序列建模方法,适用于单变量序列的趋势、季节与随机波动建模。本系统以 SARIMAX(季节性 ARIMA + 外生变量) 为核心,支持:

ARIMA-自回归差分移动平均模型

1. 方法概述

ARIMA(AutoRegressive Integrated Moving Average)是经典的时间序列建模方法,适用于单变量序列的趋势、季节与随机波动建模。本系统以 SARIMAX(季节性 ARIMA + 外生变量) 为核心,支持:

  • 非季节 / 季节 ARIMA;
  • 外生变量(SARIMAX);
  • ADF/KPSS 平稳性检验与 ACF/PACF 辅助选阶;
  • 自动寻阶(pmdarima 可用时);
  • 回测(滚动/滑窗)与预测区间。

设时间序列为

$$ \{y_t\}_{t=1}^{T},\quad y_t\in\mathbb{R} \tag{1} $$

2. 符号说明表

符号 含义
\(y_t\) 时刻 \(t\) 的观测值
\(x_t\) 外生变量向量(SARIMAX)
\(p,d,q\) AR/差分/MA 阶数
\(P,D,Q\) 季节 AR/差分/MA 阶数
\(s\) 季节周期(如 12 表示月度季节)
\(\phi_i,\theta_j\) AR/MA 系数
\(\Phi_i,\Theta_j\) 季节 AR/MA 系数
\(\varepsilon_t\) 白噪声误差
\(\hat{y}_t\) 预测值
\(\alpha\) 显著性水平(置信区间)
\(\text{AIC},\text{BIC}\) 信息准则
\(Q\) Ljung–Box 检验统计量

3. 平稳性与差分

非平稳序列通常需做差分以稳定均值与方差。

一阶差分: $$ \nabla y_t = y_t - y_{t-1} \tag{2} $$

季节差分(周期为 \(s\)): $$ \nabla_s y_t = y_t - y_{t-s} \tag{3} $$

系统支持 ADF/KPSS 检验辅助判断差分阶数,若已启用季节项,则根据季节性强度建议 \(D\) 与 \(s\)。

4. AR / MA / ARMA / ARIMA

4.1 AR(\(p\))

$$ y_t = c + \sum_{i=1}^{p}\phi_i y_{t-i} + \varepsilon_t \tag{4} $$

4.2 MA(\(q\))

$$ y_t = \mu + \varepsilon_t + \sum_{j=1}^{q}\theta_j \varepsilon_{t-j} \tag{5} $$

4.3 ARMA(\(p,q\))

$$ y_t = c + \sum_{i=1}^{p}\phi_i y_{t-i} + \varepsilon_t + \sum_{j=1}^{q}\theta_j \varepsilon_{t-j} \tag{6} $$

4.4 ARIMA(\(p,d,q\))

用滞后算子 \(B\) 表示: $$ \phi(B)(1-B)^d y_t = c + \theta(B)\varepsilon_t \tag{7} $$

5. 季节性 SARIMA

季节性 ARIMA 为 $$ \Phi(B^s)\,\phi(B)\,(1-B)^d(1-B^s)^D y_t = c + \Theta(B^s)\,\theta(B)\varepsilon_t \tag{8} $$

其中 \(\Phi(B^s)\) 与 \(\Theta(B^s)\) 为季节性多项式。

6. SARIMAX(外生变量)

带外生变量的 SARIMAX 形式: $$ \Phi(B^s)\phi(B)(1-B)^d(1-B^s)^D y_t = c + \beta^\top x_t + \Theta(B^s)\theta(B)\varepsilon_t \tag{9} $$

系统要求外生变量为数值型,若包含非数值字段需先编码。

7. 参数估计与模型选择

7.1 最大似然估计

在高斯误差假设下的对数似然: $$ \ell(\theta)=-\frac{1}{2}\sum_{t=1}^{T}\left[\ln(2\pi\sigma^2)+\frac{\varepsilon_t^2}{\sigma^2}\right] \tag{10} $$

7.2 信息准则

$$ \text{AIC}=2k-2\ln L \tag{11} $$ $$ \text{BIC}=k\ln n-2\ln L \tag{12} $$

其中 \(k\) 为参数数目,\(n\) 为样本量,\(L\) 为最大似然值。

7.3 选阶策略(系统支持)

  • 基于 ACF/PACF 的经验选阶;
  • ADF/KPSS 评估差分阶数;
  • 若安装 pmdarima,可使用 auto_arima 自动寻阶(UI 一键填充)。

8. 预测与区间

点预测: $$ \hat{y}_{t+h}=\mathbb{E}(y_{t+h}\mid \mathcal{F}_t) \tag{13} $$

预测区间: $$ \hat{y}_{t+h} \pm z_{1-\alpha/2}\,\hat{\sigma}_h \tag{14} $$

系统输出预测均值与置信区间(如 95% 区间)。

9. 评价指标

MAE: $$ \text{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \tag{15} $$

RMSE: $$ \text{RMSE}=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2} \tag{16} $$

MAPE: $$ \text{MAPE}=\frac{1}{n}\sum_{i=1}^{n}\left|\frac{y_i-\hat{y}_i}{y_i}\right| \tag{17} $$

10. 回测与滚动预测(系统支持)

系统提供 滚动窗口滑窗 两种回测方式。回测误差定义为:

$$ e_t = y_t - \hat{y}_t \tag{18} $$

并在回测摘要中汇总 MAE / RMSE / MAPE 等指标与误差分布。

11. 残差诊断与平稳性检验

Ljung–Box 检验: $$ Q = n(n+2)\sum_{k=1}^{m}\frac{\hat{\rho}_k^2}{n-k} \tag{19} $$

ADF(单位根检验)回归形式: $$ \Delta y_t=\alpha+\beta t+\gamma y_{t-1}+\sum_{i=1}^{p}\delta_i\Delta y_{t-i}+\varepsilon_t \tag{20} $$

系统同时给出 KPSS 检验结果,用于与 ADF 交叉判断平稳性。

12. 与代码实现的对应关系

本算法在程序中由 具体的算法2/ARIMA-自回归差分移动平均模型/core/calculator.py 实现,核心建模对象是 statsmodelsSARIMAX。因此文档写作应以程序真实导出结果为准,而不是只停留在抽象公式层面。

12.1 程序实际导出的 Excel 工作表

  • Parameters:界面参数、阶数、频率、显著性水平等;
  • Model_Summarystatsmodels 模型摘要文本;
  • Coefficients:参数估计结果;
  • Diagnostics:残差诊断摘要;
  • LjungBox:多滞后 Ljung-Box 检验表;
  • Stationarity:ADF/KPSS 等平稳性结果;
  • Series:原始序列;
  • Fitted:样本内拟合值;
  • Forecast:测试集或未来期预测值及区间;
  • Residuals:残差序列;
  • Metrics:MAE、RMSE、MAPE 等指标;
  • Charts_Index:图表索引与相对路径;
  • Split_Info:训练/测试切分信息;
  • Backtest_SummaryBacktest_Folds:启用回测时额外生成。

12.2 程序实际生成的图表与报告

  • 原序列、拟合值、预测值同图;
  • 残差直方图与 QQ 图;
  • 残差时序图;
  • 残差 ACF / PACF 图;
  • 测试集真实值与预测值对比图;
  • 启用回测时的滚动预测图与回测误差直方图;
  • 启用 STL 时的分解图;
  • 另输出 HTML 与 TXT 两种诊断摘要。

12.3 论文撰写时的直接对应关系

  • “模型设定”部分可直接对应 ParametersModel_SummaryCoefficients
  • “平稳性与诊断”部分对应 StationarityLjungBoxDiagnostics
  • “预测结果”部分对应 ForecastMetrics 与预测对比图;
  • “滚动验证/稳健性”部分对应 Backtest_SummaryBacktest_Folds

12.4 程序实现里应写清的细节

  • 程序支持外生变量 exog,若论文用了协变量,不应仍描述为纯单变量 ARIMA;
  • 预测阶段会输出置信区间,而不是只输出点预测;
  • 支持滚动/滑窗回测,且回测结果单独落表;
  • 可选自动寻阶与动态预测图,这些属于实现增强项,可写入附录或实现说明。

12.5 参数设置(与界面字段一致)

  • 时间列:选择日期/时间列,可勾选“解析日期”,并设置频率 freq(D/W/M/Q/YS 等),未填则自动推断。
  • 目标列 y:时间序列主变量。
  • 外生变量(可选):作为 SARIMAX 的 \(x_t\),需数值型(非数值需先编码)。
  • 阶数选择:\((p,d,q)\) 与 \((P,D,Q,m)\);可使用“建议”或“自动寻阶(pmdarima)”按钮。
  • alpha:显著性水平,用于预测区间(如 0.05 对应 95% 区间)。
  • 训练比例:按时间顺序切分训练/测试。
  • 预测步数:用于测试集预测与区间输出。

12.6 平稳性与选阶辅助

  • “检查平稳性”按钮输出 ADF/KPSS 结果;
  • ACF/PACF 与信息准则共同用于阶数筛选。

12.7 回测设置(可选)

  • 启用回测:在测试区间执行滚动/滑窗回测;
  • 方式:滚动窗口 / 滑窗;
  • 初始训练样本步长
  • 每步重估:每步重新拟合模型。

12.8 附加图表(可选)

  • STL 分解图
  • 误差分布图
  • 动态预测图(滚动预测)

12.9 系统流程

  1. 读取数据 → 选择时间列/目标列 → 可选外生变量;
  2. 解析日期并设定频率(可自动推断);
  3. 选择 \(p,d,q,(P,D,Q,m)\) 或自动寻阶;
  4. 按时间顺序切分训练/测试;
  5. 拟合 SARIMAX → 预测 → 计算指标;
  6. 生成诊断检验(ADF/KPSS/Ljung–Box)、残差分析与图表;
  7. 可选回测并生成滚动预测图与误差直方图;
  8. 输出 Excel、图表与诊断报告(HTML/TXT)。

13. 输出结果与图表(Excel/图片/诊断报告)

Excel Sheet(示例):

  • Parameters / Model_Summary / Coefficients
  • Diagnostics / LjungBox / Stationarity
  • Series / Fitted / Forecast / Residuals
  • Metrics / Charts_Index / Split_Info
  • Backtest_Summary / Backtest_Folds(若启用回测)

图表清单(示例):

  1. 原始序列图(timeseries)
  2. 残差图 / 残差直方图
  3. 测试集真实值 vs 预测值折线(含区间时为 shaded band)
  4. 残差时序图、残差-拟合散点图
  5. ACF/PACF 图
  6. STL 分解图(可选)
  7. 回测滚动预测图、回测误差直方图(可选)

诊断报告: 导出美观 HTML + TXT 两种格式,包含参数、指标与检验结果。

14. 论文写作模板

14.1 模型与数据描述模板段落

“本文采用 ARIMA/SARIMAX 方法对时间序列 \(y_t\) 建模。先对序列进行平稳性检验(ADF/KPSS),若不平稳则做差分(式(2)–(3))。模型阶数 \((p,d,q)\) 与季节项 \((P,D,Q,s)\) 由 ACF/PACF 及信息准则综合确定,并在训练集上拟合。模型在测试集上评估 MAE、RMSE 与 MAPE(式(15)–(17)),同时进行残差独立性检验与正态性检验,以保证模型的统计有效性。”

14.2 图表题注模板(示例)

  • 图 1 时间序列原始序列与趋势分解结果(STL)。
  • 图 2 测试集真实值与 ARIMA 预测值对比图。
  • 图 3 残差时序与残差直方图(用于诊断)。
  • 图 4 ACF/PACF 诊断图(用于阶数识别)。
  • 图 5 回测滚动预测结果与误差分布图。

14.3 表格模板(示例)

表 1 ARIMA 模型阶数与信息准则

模型 (p,d,q)(P,D,Q,s) AIC BIC
ARIMA (2,1,1)(1,0,0,12) 1060.31 1082.10

表 2 预测误差指标

指标 MAE RMSE MAPE
测试集 1.65 1.77 3.19%

表注示例:注:AIC/BIC 来自最大似然估计结果;误差指标在测试集上计算。

14.4 英文模板段落(可直接使用)

“An ARIMA/SARIMAX model was fitted to the time series \(y_t\). Stationarity was assessed using ADF and KPSS tests, and differencing was applied when necessary (Eqs. (2)–(3)). The orders \((p,d,q)\) and seasonal \((P,D,Q,s)\) were chosen based on ACF/PACF diagnostics and information criteria (AIC/BIC). The model was trained on the first \(r\%\) observations and evaluated on the hold-out set using MAE, RMSE and MAPE (Eqs. (15)–(17)). Residual diagnostics (Ljung–Box) and prediction intervals were reported to assess model adequacy.”

14.5 图注与编号格式(示例)

  • 图 1-1 ARIMA 模型的 ACF/PACF 诊断图。
  • 图 1-2 预测均值与置信区间(测试集)。
  • 表 1-1 ARIMA 模型参数与信息准则(AIC/BIC)。

15. 示例数据说明模板(可直接用于论文)

“本文使用的时间序列数据包含 \(T\) 个观测点,时间频率为 \(s\)(如月度/季度/日度)。序列包含明显季节性与趋势成分,必要时加入外生变量 \(x_t\) 以刻画政策冲击或宏观因素影响。训练集占比为 \(r\),测试集占比为 \(1-r\)。模型输出的预测结果与置信区间用于评估未来 \(h\) 期的走势与不确定性。”

16. 单篇终审补充

16.1 图题与表题对齐建议

  • 本文档应优先对应真实算法目录 具体的算法2/ARIMA-自回归差分移动平均模型,代表性结果目录建议绑定 具体的算法2/ARIMA-自回归差分移动平均模型/results/window3_baseline_test_window3_timeseries_dynami0_arima
  • 表题应直接对应 arima_baseline.xlsx 的真实工作表:ParametersModel_SummaryCoefficientsDiagnosticsLjungBoxStationaritySeriesFittedForecastResidualsMetricsCharts_IndexSplit_Info
  • 图题应优先对应该目录下已落地的实体图片:chart_timeseries.pngchart_test_true_pred.pngchart_resid_ts.pngchart_residuals.pngchart_resid_vs_fitted.png
  • 若论文写到更完整诊断页,可补充说明历史 SARIMAX分析结果_* 目录还存在 diagnostics_*.htmldiagnostics_*.txt 一类报告;但当前 baseline 代表目录以 xlsx + png + repro 为主,不宜把 HTML/TXT 诊断写成默认必有产物。

16.2 终审说明

  • 当前文档的结果说明应以 baseline 证据链为主,而不是泛指 ARIMA/SARIMAX 全部历史产物。
  • 复现脚本可直接引用 repro_arima_20260329_165428.py,其 SRC_FILE 已写成 results/window3_baseline_test_window3_timeseries_dynami0_arima/repro_inputs/arima_input.csv,属于“模块根目录相对路径 + repro_inputs 输入副本”口径。
  • 因此论文正文若写“结果可由复现脚本直接重跑”,应明确对应 repro_inputs/arima_input.csv 这套快照输入,而不是笼统写“读取原始上传文件”。

16.3 全量强化补充

  • 当前 ARIMA 文档应继续绑定真实算法目录 具体的算法2/ARIMA-自回归差分移动平均模型,并以 具体的算法2/ARIMA-自回归差分移动平均模型/results/window3_baseline_test_window3_timeseries_dynami0_arima 作为代表性主目录。
  • 该目录首层主工作簿为 arima_baseline.xlsx,真实工作表为 ParametersModel_SummaryCoefficientsDiagnosticsLjungBoxStationaritySeriesFittedForecastResidualsMetricsCharts_IndexSplit_Info
  • 首层主图为 chart_timeseries.pngchart_test_true_pred.pngchart_resid_ts.pngchart_residuals.pngchart_resid_vs_fitted.png。这些图片全部与主工作簿同层放置,当前 baseline 目录没有额外 HTML/TXT 诊断报告。
  • 同一 baseline 目录还累计保留了多份 repro_arima_*.pyrepro_inputs/arima_input.csv。因此 ARIMA 当前同样不是“单次运行只保留一套文件”的干净目录,而是主 baseline 结果与历史/后续 repro 脚本共存。
  • 当前主要复现脚本可采用 repro_arima_20260329_165428.py,其关键输入写法为 SRC_FILE = 'results/window3_baseline_test_window3_timeseries_dynami0_arima/repro_inputs/arima_input.csv'。这说明它采用的是“模块根目录相对路径回指 baseline 目录内 repro_inputs”口径。
  • 因此论文与附录的正确写法应是:主结果证据来自 arima_baseline.xlsx + 同层 chart_*.png,复现实验证据来自同目录下的 repro_arima_*.py + repro_inputs/arima_input.csv。不要再泛化为“读取原始上传文件重跑”,因为当前真实快照路径已经固定到 baseline 目录。
  • 若论文需要补充更重的诊断材料,可另行引用历史 SARIMAX分析结果_* 目录中的 HTML/TXT 诊断文件;但本篇以 baseline 目录为主证据时,不应把这些历史诊断文件写成当前主目录的默认产物。

16.4 软件实现核查补充(2026-07)

  • 当前最新结果目录 results/SARIMAX分析结果_20260411_212104 采用 SARIMAX 核心,工作簿包含 ParametersModel_SummaryCoefficientsDiagnosticsLjungBoxStationaritySeriesFittedForecastResidualsMetricsCharts_IndexSplit_Info
  • 当前目录的图和诊断文件都在根层,包含 chart_timeseries.pngchart_test_true_pred.pngchart_resid_ts.pngchart_resid_vs_fitted.pngchart_residuals.pngchart_stl.pngchart_acf_pacf.pngchart_error_hist.png,以及 diagnostics_20260411_212104.html/.txt
  • 复现脚本 repro_arima_20260411_212104.pyrepro_inputs/sample_data.csv 同在结果目录体系中;正文写复现时应按这一口径说明,而不要泛化成“读取原始上传文件”。
  • 如果正文要讲外生变量或季节项,就应继续写 SARIMAX;不要把这篇泛写成纯 ARIMA 而忽略当前代码已经接入的季节和外生变量能力。