DLM 很酷,但它们不像 ARIMA 或其他方法那么简单。在其他方法中,您插入数据,然后调整算法的一些参数,可能会参考各种诊断来指导您的设置。
使用 DLM,您正在创建一个状态空间机,它由几个矩阵组成,这些矩阵基本上实现了隐马尔可夫模型之类的东西。一些包(sspir
我认为,除其他外)期望你理解这个概念和矩阵的作用。我强烈建议您从dlm
包装开始,并按照@RockScience 的建议,浏览小插图。
dlm
你将基本上采取几个步骤:
什么样的组件描述了我的系列?趋势?季节性?外生变量?您将使用dlm
类似dlmModPoly
实现这些组件的工具,使用+
运算符将它们连接到一个模型中。
创建一个 R 子例程,该子例程采用该模型所需的许多参数,使用这些参数创建组件,然后将它们相加并返回结果模型。
用于dlmMLE
进行搜索/优化以找到适当的参数(使用 MLE,这基本上是优化,优化中可能出现的陷阱)。dlmMLE
使用候选参数重复调用您的 R 子例程以创建模型,然后对其进行测试。
使用您创建的 R 子例程以及您在步骤 3 中找到的参数创建您的最终模型。
用 过滤您的数据dlmFilter
,然后用 进行平滑处理dlmSmooth
。
如果您使用dlmModReg
或执行任何导致模型具有时变参数的操作,则无法用于dlmForecast
预测您的序列。如果你最终得到了一个时变模型,你会想要用 NA 填写你的输入数据,并让dlmFilter
你填写 NA(穷人的预测),因为dlmForecast
它不适用于时变参数。
如果您想单独检查组件(例如趋势,与季节性分开),您需要了解矩阵以及每列中的内容,以及了解如何dlm
将它们组合在一起(顺序很重要!)。
还有另一个包,我不知道它的名字,它试图创建一个可以使用其中几个包的前端(包括dlm
作为后端)。不幸的是,我从来没有让它很好地工作,但那可能只是我。
我真的建议你买一本关于 DLM 的书。我得到了其中的几个并且玩了很多dlm
才到达我现在的位置,而且我无论如何都不是专家。