【问题标题】:Evaluating ARIMA models with the AIC使用 AIC 评估 ARIMA 模型
【发布时间】:2020-09-27 06:40:01
【问题描述】:

最近遇到了 ARIMA/季节性 ARIMA,我想知道为什么选择 AIC 作为模型适用性的估计器。根据Wikipedia,它在惩罚非简约模型的同时评估拟合的好坏,以防止过度拟合。许多网格搜索功能,例如Python 中的auto_arimaR 都将其用作评估指标,并建议将具有最低AIC 的模型作为最佳拟合。

但是,就我而言,选择一个简单的模型(具有最低 AIC -> 少量参数)只会产生一个模型,该模型强烈遵循先前的样本内观察结果,并且在测试样本数据上表现非常糟糕。我看不出仅通过选择少量参数如何防止过拟合...

ARIMA(1,0,1)(0,0,0,53); AIC=-16.7

我是不是误会了什么?有什么办法可以防止这种情况发生?

【问题讨论】:

标签: python r time-series arima pmdarima


【解决方案1】:

对于 ARIMA 模型,无论模型的参数是什么,它都将遵循过去的观察结果,即您根据数据中的先前值预测下一个值。现在,auto.arima 只是尝试一些模型,并默认为您提供具有最低 AIC 的模型或其他一些信息标准,例如 BIC。这并不意味着这些标准的定义是什么:因此具有最低 AIC 的模型是最小化 AIC 函数的模型。如果在确保时间序列是平稳的之后进行时间序列分析,我建议您检查时间序列的 ACFPACF 图并阅读 this

P.S 在垂直虚线之后的情节中,我没有看到这条橙色直线。

【讨论】:

    【解决方案2】:

    我们通常使用某种形式的交叉验证来防止过度拟合。正是well known,在一些关于正态性等的假设下,留一法交叉验证渐近等效于 AIC。事实上,当我们的计算能力较少时,AIC 和其他信息标准很方便,因为它们完成了非常相似的事情进行分析交叉验证。

    另外,请注意 ARMA(1,1) 模型(以及与此相关的其他固定 ARMA 模型)本质上倾向于很快收敛到一个常数。看到这一点的最简单方法是将 y_t+1、y_t+2 的表达式写成 y_t 的函数。您将看到该表达式具有小于 1 的指数(您的 AR 和 MA 参数),随着 t 的增长,它们迅速收敛到零。另见discussion

    您的“观察到的”数据(虚线左侧)没有表现出这种行为的原因是,对于每个时期,您都会获得随机误差项 epsilon_t 的新实现。在右侧,您不会得到这些随机冲击的实现,而是将它们替换为它们的表达值 0。

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 2016-11-15
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2017-03-24
      相关资源
      最近更新 更多