估计动态线性模型的参数


11

我要实现(在R中)以下非常简单的动态线性模型,对于该模型,我有2个未知的时变参数(观察误差的方差和状态误差的方差\ epsilon ^ 2_t)。ϵt1ϵt2

Yt=θt+ϵt1θt+1=θt+ϵt2

我想在每个时间点估计这些参数,而不会产生任何前瞻性偏差。据我了解,我可以使用MCMC(在滚动窗口上避免向前看的偏差),也可以使用粒子滤波器(或顺序蒙特卡洛-SMC)。

哪种方法你使用,和
什么是这两种方法的利弊?

奖励问题:在这些方法中,如何选择参数的变化速度?我猜我们必须在这里输入信息,因为在使用大量数据估算参数与使用较少数据对参数更改做出更快反应之间存在讨价还价?


我的问题有点类似于 stats.stackexchange.com/questions/2149/…。由于情况有所不同,我特意开了一个问题,我想提出不同的意见。(gd047的答案主要集中在无味的卡尔曼滤波器(UKF)上)
RockScience 2010年

奇怪我的赏金无济于事...我的问题表达得不好吗....没有人能回答吗?还是我的问题?
RockScience 2010年

它的摆放方式似乎是一个退化的问题-错误可能同样归因于观察噪声或过程噪声。还有更多限制吗?状态是一维的吗?
IanS 2010年

@lanS。实际上,所有对象在这里仅具有一维。您是否可以根据观察误差或噪声误差进一步发展一点?这正是我想要实现的目标。我想通过估计2个随时间变化的噪声的SD,以获得信噪比的滚动估计....
RockScience

也许我应该先确定过程噪声的标准偏差作为开始,然后观察观测噪声的标准偏差如何反应?
RockScience 2010年

Answers:


4

如果您具有随时间变化的参数,并且想要按顺序执行操作(过滤),那么SMC最有意义。当您希望对所有数据进行条件处理,或者要估计的静态参数未知时,MCMC会更好。粒子过滤器的静态参数存在问题(退化)。


1
谢谢您的回答。我在哪里可以学习如何做SMC,您会推荐哪种R包?
RockScience 2010年

4

看看dlm包及其装饰图案。我想您可能会从小插图中找到所需的内容。程序包作者还写了一本书《带R的动态线性模型》


// @ Matti Pastell:我有这本书。确实非常好。我的问题是微粒过滤器(据我所知是顺序版本的MCMC)与滚动窗口上的MCMC(在后者中,我们在滚动窗口上重新运行优化过程)之间的区别。应该首选哪种方法,为什么?
RockScience 2010年

而且,我真的不容易用dlm构建这种时变模型。老实说,该软件包对于非时变模型非常易于使用,但是对于其他所有功能来说,它都变得更加棘手。编辑:更棘手的是,我的意思是没有功能来解决问题。您需要自己编写脚本。
RockScience 2010年

1
好,我也有这本书,但是还没来得及读。抱歉,这对您的问题没有帮助。
Matti Pastell

1
无论如何,谢谢你,这是一本好书,值得在这里引用
RockScience 2010年

3

我已经阅读了带有R的动态线性模型(好书),最后一章介绍了顺序蒙特卡洛/粒子滤波。它还包括一些R代码;但是,在第5章的总结中,他们明确警告SMC随着错误的累积会变得越来越不可靠,因为错误会不断累积。因此,他们建议从每个的完整 MCMC样本中“后向”分配带有后分布的粒子过滤器1000 × 50 1 × 10 ÷ 60 ÷ 24T时期。也许我听错了他们的警告,但这似乎意味着您可以使用滚动窗口MCMC更好。但是,我认为该方法存在大量的计算机处理约束。例如,假设您有1000个不同的单变量时间序列,每个序列有50个观测值,则运行完整的MCMC Gibbs采样器花费了10分钟。然后,将需要340天()的连续处理来估计参数而没有前瞻性偏差。也许我对运行MCMC所需的时间的估计是疯狂的,但是我认为这是一个保守但合理的估计。(1000×(501)×10)÷60÷24

您问问题已经有好几年了,所以如果您现在有答案,我会很好奇。

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.