如何使用带有卡尔曼滤波的DLM进行预测


19

有人可以引导我看一个有关如何在时间序列上的R中使用DLM卡尔曼滤波的示例。假设我有一个这些值(季度值和年度季节性);您将如何使用DLM预测下一个值?顺便说一句,我是否有足够的历史数据(最小值是多少)?

89  2009Q1  
82  2009Q2  
89  2009Q3  
131 2009Q4  
97  2010Q1  
94  2010Q2  
101 2010Q3  
151 2010Q4  
100 2011Q1  
?   2011Q2

我正在寻找R代码食谱样式的逐步说明类型的答案。预测的准确性不是我的主要目标,即使我没有足够的数据,我只是想学习能为我提供2011年第二季度数字的代码序列。


3
这可能会在stats.stackexchange.com上获得更好的答案
Joshua Ulrich

碰碰...我仍然不明白该怎么做。有任何人在回答原始帖子吗?
datayoda 2011年

2
使用DLM时,它的食谱风格不如您想的那样。我会接受RockScience的回答(DLM插图)并逐步解决。DLM更像是设计程序,而不是仅仅需要插入一些数据并调整一些参数的其他技术。最终,您将设计一组实现诸如“隐马尔可夫模型”之类的数组,并且该dlm软件包使此过程变得尽可能容易。
韦恩

您有解决问题的方法吗?我正在寻找类似时间序列问题的解决方案,但找不到解决方案。

您是否已完成@RockScience建议的论文?你看过dlm包裹了吗?正如我在回答中所说的那样,DLM与将某些变量插入函数调用相比,更像是创建程序。datayoda从未接受过答案,因此我不确定他们是否超过了这一观察范围。
韦恩

Answers:



16

DLM很酷,但是它们不像ARIMA或其他方法那样简单。在其他方法中,您插入数据,然后调整算法的某些参数,也许参考各种诊断来指导设置。

使用DLM,您正在创建一个状态空间机,它由几个矩阵组成,这些矩阵基本上实现了诸如隐马尔可夫模型之类的东西。一些软件包(sspir我认为,其中包括一些软件包)希望您理解概念以及矩阵的功能。我强烈建议您从该dlm程序包开始,并按照@RockScience的建议逐步浏览小插图。

随着dlm你要基本上采取以下几个步骤:

  1. 什么样的组件描述了我的系列?趋势?季节性?外生变量?您将使用dlm类似于dlmModPoly实现这些组件的工具,并使用+运算符将它们结合在一起成为一个模型。

  2. 创建一个R子例程,该例程需要使用此模型需要的许多参数,使用这些参数创建组件,然后将它们加在一起并返回结果模型。

  3. 使用dlmMLE做一个搜索/优化,找到合适的参数(使用MLE,这基本上是最优化,与可以发生在优化的陷阱)。dlmMLE重复调用带有候选参数的R子例程来创建模型,然后对其进行测试。

  4. 使用创建的R子例程以及在步骤3中找到的参数,创建最终模型。

  5. 使用过滤数据dlmFilter,然后使用过滤数据dlmSmooth

  6. 如果您使用dlmModReg或执行任何导致模型具有时变参数的操作,则无法使用它dlmForecast来预测序列。如果您最终使用时变模型,则需要使用NA填充输入数据,并dlmFilter为您填写NA(可怜人的预测),因为dlmForecast它不适用于时变参数。

  7. 如果要单独检查各个组成部分(说说趋势,应与季节性分开检查),则需要了解矩阵以及每一列中的内容,还需要了解如何dlm将它们组合在一起(顺序很重要!)。

还有一个名称不知我的软件包,它试图创建一个可以使用其中一些软件包的前端(包括dlm后端)。不幸的是,我从来没有使它运行良好,但是那可能就是我。

我真的建议买一本关于DLM的书。我得到了其中的几个,并且dlm为了达到自己的位置而玩得很开心,而且我绝对不是专家。


谢谢韦恩,我认为我的案件非常简单,以至于我在视觉检查中没有发现任何明显的趋势或季节性。(但是,如果您知道R中的任何测试,请告诉我,我将尝试运行它们)。我的问题是我不知道如何在dlm函数中为数据填充参数(FF,V,GG,W,m0,C0,dV等)?这是我的主要问题。如果我有一个二元系列数据(y = X1 + X2),例如(价格=需求+供应),那么如何为我的数据计算这些参数呢?dlm功能所需的FF,V,GG,W,m0,C0,dV等
nclfinance 2011年

1
@nclfinance请阅读常见问题解答,不要将此地方视为论坛。

@nclfinance:浏览dlm包装的小插图。您将学习需要了解的内容。这就是为什么我推荐的原因dlm,因为您自己不会创建FF等。
韦恩

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.