statsmodels中的ARIMA模型如何进行样本外预测?

3
我有一个时间序列预测问题,正在使用Python包statsmodels解决。根据AIC标准评估,最佳模型非常复杂,类似于ARIMA(27,1,8) [我没有对参数空间进行详尽的搜索,但它似乎在那个位置处于最小值]。然而,我真正遇到的问题是用这个模型进行验证和预测需要很长时间(数小时),因此进行重复测试非常困难。
无论如何,为了能够在运营中使用statsmodels(假设我可以先以某种方式验证模型),我真正需要的最低限度是一种机制,即在新数据到达时将其纳入下一组预测中。我希望能够根据可用数据拟合模型、对其进行pickle,然后在下一个数据点可用时取消pickle,并将其纳入更新的一组预测中。目前,每次有新数据可用时,我都必须重新拟合模型,这需要很长时间。
我看了这个问题,它基本上解决了我的问题,但是只适用于ARMA模型。然而,对于ARIMA情况,由于数据被差分,增加了复杂性。我需要能够生成原始时间序列的新预测(与ARIMAResultsWrapper.predict方法中的typ ='levels'关键字相对应)。据我所知,目前statsmodels不能做到这一点,但是我需要使用现有功能的哪些组件才能编写自己的代码来实现此目的?
编辑:我还使用了transparams=True,因此预测过程需要能够将预测值转换回原始时间序列,这是自行开发方法中的额外困难。

1
你看过R吗?我非常确定R有ARIMA模型拟合和预测函数,因为我已经用它进行了一些探索性分析。但我没有去看它是否能解决你的具体问题。 - Paul
如果我无法单独在Python中解决这个问题,我正在考虑使用R。我正在现有的Python环境中工作,因此如果可能的话,最好保持在其中,并使部署到不同机器更加简单(即不必仅为此安装R)。 - Bogdanovist
你是否将之前的估计值(params)作为更新估计的起始值进行重复利用?随着额外观测数据的增加,估计值不应该有太大变化,因此优化过程不应该花费太长时间。另一个问题是,如果你只需要预测,而不关心标准误差,那么可能可以添加一个选项来跳过海森矩阵计算,在这种情况下也可能非常昂贵。 - Josef
1个回答

0

在时间序列模型中,ARIMA(27,1,8) 模型是非常复杂的。对于大多数时间序列来说,使用五个或更少的参数就可以进行合理的预测。当然,这取决于数据和领域,但我非常怀疑是否需要 27 + 8 = 35 个参数。

AIC 在参数数量上有时会过于宽容。建议尝试使用 BIC 进行比较。

此外,还应该考虑数据是否具有某种季节性。例如,也许那 27 个 AR 项都不重要,你只需要 lag=1 和 lag=24(例如),这可能适用于具有每日季节性的小时数据。


1
我同意,关于statsmodels:ARMA,ARIMA只实现了所有滞后版本。statsmodels主分支有一个SARIMAX类,允许加性和乘性季节性。 - Josef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接