估计动态线性模型的参数

机器算法验证 r 马尔可夫链蒙特卡罗 dlm 粒子过滤器
2022-03-12 05:58:49

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

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

我想在每个时间点估计这些参数,没有任何前瞻偏差据我了解,我可以使用 MCMC(在滚动窗口上以避免前瞻偏差)或粒子滤波器(或 Sequential Monte Carlo - SMC)。

你会使用哪种方法
这两种方法的优缺点是什么?

额外问题:在这些方法中,您如何选择参数的变化速度?我想我们必须在这里输入一个信息,因为在使用大量数据来估计参数和使用更少的数据来更快地对参数的变化做出反应之间有一个讨价还价吗?

3个回答

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

看看dlm包和它的小插图我想你可能会从小插图中找到你想要的东西。包作者还写了一本书Dynamic Linear Models with R

我读过Dynamic Linear Models with R(好书),最后一章涉及顺序蒙特卡洛/粒子滤波。它还包括一些R代码;然而,在第 5 章的结束语中,他们明确警告说,随着时间的推移,SMC 变得越来越不可靠,因为错误会累积。因此,他们建议使用来自完整MCMC 样本的后验分布“刷新”粒子滤波器,每个T期间。也许我误读了他们的警告,但这似乎意味着您最好使用滚动窗口 MCMC。但是,我认为该方法存在大量计算机处理限制。例如,假设您有 1,000 个不同的单变量时间序列,每个序列有 50 个观测值,并且运行一个完整的 MCMC Gibbs 采样器需要 10 分钟。然后,您需要 340 天((1000×(501)×10)÷60÷24) 的连续处理来估计没有前瞻偏差的参数。也许我对运行 MCMC 所需时间的估计非常不准确,但我认为这是一个保守但合理的估计。

你问这个问题已经好几年了,所以我很好奇你自己现在是否有答案。