ARIMA-自回归差分移动平均模型
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 实现,核心建模对象是 statsmodels 的 SARIMAX。因此文档写作应以程序真实导出结果为准,而不是只停留在抽象公式层面。
12.1 程序实际导出的 Excel 工作表
Parameters:界面参数、阶数、频率、显著性水平等;Model_Summary:statsmodels模型摘要文本;Coefficients:参数估计结果;Diagnostics:残差诊断摘要;LjungBox:多滞后 Ljung-Box 检验表;Stationarity:ADF/KPSS 等平稳性结果;Series:原始序列;Fitted:样本内拟合值;Forecast:测试集或未来期预测值及区间;Residuals:残差序列;Metrics:MAE、RMSE、MAPE 等指标;Charts_Index:图表索引与相对路径;Split_Info:训练/测试切分信息;Backtest_Summary、Backtest_Folds:启用回测时额外生成。
12.2 程序实际生成的图表与报告
- 原序列、拟合值、预测值同图;
- 残差直方图与 QQ 图;
- 残差时序图;
- 残差 ACF / PACF 图;
- 测试集真实值与预测值对比图;
- 启用回测时的滚动预测图与回测误差直方图;
- 启用 STL 时的分解图;
- 另输出 HTML 与 TXT 两种诊断摘要。
12.3 论文撰写时的直接对应关系
- “模型设定”部分可直接对应
Parameters、Model_Summary、Coefficients; - “平稳性与诊断”部分对应
Stationarity、LjungBox、Diagnostics; - “预测结果”部分对应
Forecast、Metrics与预测对比图; - “滚动验证/稳健性”部分对应
Backtest_Summary与Backtest_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 系统流程
- 读取数据 → 选择时间列/目标列 → 可选外生变量;
- 解析日期并设定频率(可自动推断);
- 选择 \(p,d,q,(P,D,Q,m)\) 或自动寻阶;
- 按时间顺序切分训练/测试;
- 拟合 SARIMAX → 预测 → 计算指标;
- 生成诊断检验(ADF/KPSS/Ljung–Box)、残差分析与图表;
- 可选回测并生成滚动预测图与误差直方图;
- 输出 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(若启用回测)
图表清单(示例):
- 原始序列图(timeseries)
- 残差图 / 残差直方图
- 测试集真实值 vs 预测值折线(含区间时为 shaded band)
- 残差时序图、残差-拟合散点图
- ACF/PACF 图
- STL 分解图(可选)
- 回测滚动预测图、回测误差直方图(可选)
诊断报告: 导出美观 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的真实工作表:Parameters、Model_Summary、Coefficients、Diagnostics、LjungBox、Stationarity、Series、Fitted、Forecast、Residuals、Metrics、Charts_Index、Split_Info。 - 图题应优先对应该目录下已落地的实体图片:
chart_timeseries.png、chart_test_true_pred.png、chart_resid_ts.png、chart_residuals.png、chart_resid_vs_fitted.png。 - 若论文写到更完整诊断页,可补充说明历史
SARIMAX分析结果_*目录还存在diagnostics_*.html、diagnostics_*.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,真实工作表为Parameters、Model_Summary、Coefficients、Diagnostics、LjungBox、Stationarity、Series、Fitted、Forecast、Residuals、Metrics、Charts_Index、Split_Info。 - 首层主图为
chart_timeseries.png、chart_test_true_pred.png、chart_resid_ts.png、chart_residuals.png、chart_resid_vs_fitted.png。这些图片全部与主工作簿同层放置,当前 baseline 目录没有额外 HTML/TXT 诊断报告。 - 同一 baseline 目录还累计保留了多份
repro_arima_*.py与repro_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 核心,工作簿包含Parameters、Model_Summary、Coefficients、Diagnostics、LjungBox、Stationarity、Series、Fitted、Forecast、Residuals、Metrics、Charts_Index、Split_Info。 - 当前目录的图和诊断文件都在根层,包含
chart_timeseries.png、chart_test_true_pred.png、chart_resid_ts.png、chart_resid_vs_fitted.png、chart_residuals.png、chart_stl.png、chart_acf_pacf.png、chart_error_hist.png,以及diagnostics_20260411_212104.html/.txt。 - 复现脚本
repro_arima_20260411_212104.py与repro_inputs/sample_data.csv同在结果目录体系中;正文写复现时应按这一口径说明,而不要泛化成“读取原始上传文件”。 - 如果正文要讲外生变量或季节项,就应继续写 SARIMAX;不要把这篇泛写成纯 ARIMA 而忽略当前代码已经接入的季节和外生变量能力。