首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增量卡尔曼滤波

增量卡尔曼滤波
EN

Stack Overflow用户
提问于 2019-04-10 14:34:32
回答 1查看 829关注 0票数 0

请让我知道是否可以使用当前的状态模型SARIMAX代码逐步应用卡尔曼滤波(使它更快)?

这就是我的意思。假设一个SARIMAX模型(#1)使用[iFitBegin, iFitEnd]中的索引数据,然后使用这样的模型对[iFitEnd+1, iDataEnd]中的索引进行数据预测。要做到这一点,在当前代码中,似乎必须使用[iFitBegin, iDataEnd]中的索引数据创建一个新的SARIMAX模型( #2 ),并在模型#2上应用卡尔曼滤波,并从模型#1中提取参数。在此之后,人们可以从模型#2请求预测。然而,如果对流式数据进行预测(对于大型模型),则计算成本很高(在中,新数据一次到达一个数据点,每次),因为每次都必须将从iFitBegin到索引iPred (需要预测的那个)进行所有卡尔曼滤波。从数学上讲,卡尔曼滤波是逐步应用的,即如果卡尔曼滤波达到索引iPred,那么对索引iPred+1进行滤波时,只需在iPred处取状态,只需在iPred+1上使用一个新的数据点即可应用一步卡尔曼滤波,因此,如果可以在代码中增量地进行滤波,那将是很好的。

请您告诉我,在当前的状态模型SARIMAX实现中,是否有办法进行这种增量卡尔曼滤波(即一次更新一个状态)?

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 03:37:24

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

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

代码语言:javascript
复制
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样本上重新运行卡尔曼滤波器。

有关其他详细信息,请参阅forecasting.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55615203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档