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