SARIMAX:增量Kalman-fi

2024-05-16 23:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

您能告诉我是否可以使用当前的statsmodels SARIMAX代码来逐步应用Kalman滤波器(以使其更快)?在

这就是我的意思。想象一下,我们使用索引在[iFitBegin, iFitEnd]中的数据来拟合一个SARIMAX模型(#1),然后使用这样的模型来预测索引在[iFitEnd+1, iDataEnd]中的数据。在当前的代码中,似乎要做到这一点,必须使用索引在[iFitBegin, iDataEnd]中的数据创建一个新的SARIMAX模型(#2),并在模型2上应用Kalman滤波器,参数取自模型1。在这之后,你可以请求模型2的预测。然而,如果在流数据上进行预测(对于大型模型),则由于每次都必须从iFitBegin到索引iPred(需要预测的索引)iPred进行预测,因此在计算上(对于大型模型)是非常昂贵的。从数学上讲,Kalman滤波器是增量应用的,即如果Kalman滤波达到索引iPred,那么要对索引iPred+1进行滤波,只需在iPred处取一个新的数据点应用Kalman滤波的一个步骤,因此,如果可以在代码中增量地执行,那就太好了也。在

你能告诉我在当前的statsmodels SARIMAX实现中是否有一种方法可以进行这种增量Kalman滤波(即一次更新一个状态)?在


Tags: 数据代码模型参数数学增量想象statsmodels
1条回答
网友
1楼 · 发布于 2024-05-16 23:46:02

现在可以在Statsmodels的开发版本(即Github的主分支)中使用,并将在0.11版本中提供(不过,该版本还没有时间表)。在

基本上,您将能够执行以下操作:

training_mod = sm.tsa.SARIMAX(training_endog, order=(1, 0, 0))
training_res = training_mod.fit()

# The `extend` call will only apply the Kalman filter to the
# updated_endog
extended_res = training_res.extend(updated_endog)
fcasts = extended_res.forecast()

请注意,这将不会重新估计参数,但它允许您扩展当前结果以适应更新的观测值集,而不必在training_endog样本上重新运行Kalman滤波器。在

有关其他详细信息,请参见https://www.statsmodels.org/devel/examples/notebooks/generated/statespace_forecasting.html。在

相关问题 更多 >