Box-Jenkins 方法回顾

机器算法验证 时间序列 Python 阿玛 方法 盒子詹金斯
2022-03-27 12:18:06

我刚刚用python(主要是statsmodels)开发了一个ARMAX模型来预测一些数据。我的下一步是使用给定的 ARMAX 模型测试数据(24 个时间序列)。由于我需要为我使用的所有测试以及我测试数据的方式编写适当的学术文档,因此我需要有一个适当的测试设计。

我在这里找到了一些不错的设计:http ://www.autobox.com/cms/index.php/blog/entry/build-or-make-your-own-arima-forecasting-model

但是,我的模型和测试设计如下所示:

  1. 数据准备(识别和差异数据以获得平稳序列)
    • 每小时的描述性统计数据(计数、平均值、偏度等)
    • 增强的 Dickey Fuller 检验以检测给定时间序列的平稳性

--> excel-documentation:时间序列的平稳性存在!

  1. 模型选择(检查数据、ACF、PACF 以识别潜力(选择暂定的 p 和 q)
    • 绘制和分析 ACF 和 PACF
    • 自动选择最低信息标准(AIC、BIC、HQIC)

--> excel-documentation:ACF和PACF图/图片,图解释,最低信息标准(AIC,BIC,HQIC)

  1. 估计(估计潜在模型和测试中的参数。使用合适的标准诊断选择最佳模型)
    • 根据最低 AIC' 选择 p 和 q 参数

--> excel-documentation:哪些参数将用于 arma.prediction

  1. 诊断(伪造选型过程)
    • Durbin-Watson 检验检测自相关的存在
    • 绘制残差以查看结构,即白噪声
    • 正态性检验(D'Angelo 和 Pearson)查看与正态分布的差异
    • 残差对 t 分布的分位数的 qqplot(除了正态性检验)
    • 绘制残差的 ACF 和 PACF 以检测白噪声
    • Ljung-Box 测试基于多个滞后测试整体随机性

--> excel-documentation:Durbin-Watson-Test-Results、Normality-Test-Results、Ljung-Box-Test 总结(Q>0,y/n?)

  1. 预测(使用模型进行预测)
    • 运行模型
    • 分析 arma.summary-table
    • 将预测值与实际值进行比较(样本内分析)

--> excel-documentation:给定 p 和 q 值的预测值(参见“3. 估计”)

  1. 验证(样本内分析的平均绝对百分比误差 (MAPE))
    • 将预测值与实际值进行比较

--> excel-documentation:给定 p 和 q 值的 MAPE

  • 回到'3。估计”,如果诊断结果和 MAPE 不令人满意,则再次运行

  • 基于信息标准最优选择的最大重新运行时间:如果模型输出不令人满意,则选择更高和更低的 p 值和 q 值。使用最低 BIC 和/或 HQIC(如果 AIC、BIC 和 HQIC 建议相同的 p 和 q 值,使用不同的方法)

如果有人能花一点时间告诉我从学术角度来看这听起来是否合理,那就太好了。

坦克提前

1个回答

“数据准备(识别和差异数据以获得平稳序列)”。非平稳性可能是症状,而原因可能是均值的简单变化或趋势的简单变化或参数的简单变化或误差方差的简单变化。或者/相反,异常值(脉冲)将增加方差并增加协方差,因此 acf 将向下偏置,从而产生关于不存在的 ARIMA 结构的可能错误结论。无论哪种方式,您的设计都不理解/遵循参考中提供的流程图。