【发布时间】:2015-02-27 19:56:33
【问题描述】:
我有一个 AR(1) 模型,其数据样本 $N=500$ 由随机输入序列 x 驱动。观测值 y 被零均值的测量噪声 $v$ 破坏。型号是
y(t) = 0.195y(t-1) + x(t) + v(t) 其中 x(t) 生成为 randn()。我不确定如何将其表示为状态空间模型以及如何估计参数 $a$ 和状态。我试过状态空间表示会是
d(t) = \mathbf{a^T} d(t) + x(t)
y(t) = \mathbf{h^T}d(t) + sigma*v(t)
西格玛 =2。 我无法理解如何执行参数和状态估计。使用下面提到的工具箱,我检查了 KF 的方程式是否与教科书中的方程式相匹配。但是,参数估计的方法是不同的。我将不胜感激有关实施程序的建议。
实施1: 我正在关注这里的实现:Learning Kalman Filter。该实现不使用期望最大化来估计 AR 模型的参数,而是找出过程噪声的协方差。就我而言,我没有过程噪音,而是输入 $x$。
实现 2:Kalman Filter by Kevin Murphy 是另一个使用 EM 对 AR 模型进行参数估计的工具箱。现在,这很令人困惑,因为这两种实现都使用不同的方法进行参数估计。 我很难找出正确的方法、状态空间模型表示和代码。应感谢有关如何进行的建议。
我运行了 KalmanARSquareRoot 技术的第一个实现,结果完全不同。正在执行指数移动平均平滑并使用长度为 30 的 MA 过滤器。如果我运行 Demo 示例,工具箱运行良好。但是在改变模型时,结果非常糟糕。也许我做错了什么。我需要为我的时间序列更改 KF 方程吗?
在第二个实现中,我无法弄清楚要更改方程式的内容和位置。
一般来说,如果我必须使用这些工具,那么我是否需要为每个时间序列模型更改 KF 方程?如果这些工具箱不适用于所有时间序列模型 - AR、MA、ARMA,我该如何自己编写方程式?
【问题讨论】:
标签: matlab kalman-filter