R中的粒子过滤器——简单的代码示例

机器算法验证 r 粒子过滤器
2022-03-02 07:55:12

我正在寻找一个如何在 R 中运行粒子过滤器的简单代码示例。 pomp 包似乎支持状态空间数学位,但是对于像我这样的简单 OO 开发人员来说,以编程方式遵循这些示例有点棘手,特别是如何将观察到的数据加载到 pomp 对象中。

假设我有一个 csv 文件,其中包含 1 列噪声数据作为输入,我想通过粒子过滤器运行它,以便希望将其清理到另一个 csv 文件中,输出是估计值。

 y <- read.csv("C:/Dev/VeryCleverStatArb/inputData.csv", header=FALSE)
 #CSV to Pomp object ???
 #Run Particle Filter
 #Write estimates to csv.

示例的主要困难是将 csv 数据加载到 pomp 对象中。

一个非常简单的状态空间模型现在应该足够好了。

对 R-curious 有什么想法吗?

2个回答

编辑:似乎大多数粒子过滤器包现在都消失了。但是,我一直在玩 LaplacesDemon(贝叶斯 MCMC 包),它确实具有实现 PMC(一种粒子过滤器)的 PMC(Population Monte Carlo)功能。对于快速粒子过滤器之类的东西来说,可能有太多的机器,但是一个非常值得学习的包。

您可以在CRAN找到软件包和教程

ORIGINAL:老实说,在最简单的情况下,pomp很难使用。对于您可能想做的任何事情,它都非常灵活,但这就像使用太空船去杂货店一样。

您是否尝试过查看卡尔曼滤波器(如果您的数据可能满足卡尔曼滤波器的假设),包括基函数tsSmoothStructTS(仅单变量)和包dlm我也会看看loess和其他平滑器。

希望我是错的,并且有人快速跳到这里,“这是针对简单的单变量数据的方法,例如您在一些适度的假设下所拥有的。” 我希望能够自己使用这个包。

2017 年,Dahlin & Schön 发表了一篇非常好的文章,其中包含用于卡尔曼和粒子滤波器的 R 脚本,以及 Metropolis-Hasting 算法: https ://arxiv.org/pdf/1511.01707.pdf

它不是最有效的代码(仅在 R 中),但制作精良。