R 中测量方程滞后的状态 space 模型的估计

Estimation of a state-space model with lags in the measurement equation in R

我正在尝试根据 this paper 估计具有以下形式的 SS 模型:

将第一个滞后多项式的阶设置为零,将第二个滞后多项式设置为一,我们可以在适用时使用 MARSS 包指南中的术语重新表述它(x 是状态,y 是观察变量,d 是外生的):

MARSS 包允许估计更简单的模型,该模型不包括测量方程中的滞后变量。有没有一种方法可以使用 MARSS 或任何其他包来估计这个,而无需为这种特殊情况重写估计例程?也许有一种方法可以重新制定它,以便它可以 "fed" 到 MARSS 或其他一些包?

看看 BSM 结构时间序列模型或 ARMA 模型是如何被表述为 MARSS 模型的,也就是多变量状态 -space 模型。这将使您了解如何以多元状态 -space 形式改革模型。

基本上,你的 x 看起来像

看到 x_2 只是一个被迫成为 x(t-1) 的虚拟对象吗?

现在y方程

d 和 a 是你的 D 和 A。我写的是小写的,以说明它们是标量。但它们通常可以是矩阵(如果 y 是多变量的话)。您的输入是 d_t 和 y_{t-1}。您准备那个 2x1xT 矩阵作为输入。

注意您的初始条件规范。可能 best/easiest 将其设置为 t=1 并估计或使用扩散先验。

您可以使用 MARSS 拟合此模型。您可以使用任何允许您在 y 方程中传递输入的卡尔曼滤波器函数(有些可以,有些则不能)。 KFAS::KFS() 允许使用 SScustom() 函数。

在 MARSS 中,模型列表如下所示

mod.list=list(
B=matrix(list("b",1,0,0),2,2),
U=matrix(0,2,1),
Q=matrix(list("q",0,0,0),2,2),
Z=matrix(c("z", "c"),1,2),
A=matrix(0),
R=matrix("r"),
D=matrix(c("d", "a"),1,2),
x0=matrix(c("x1","x2"),2,1),
tinitx=1,
d=rbind(dt[2:TT],y[1:(TT-1)])
)
dat <- y[2:TT] # since you need y_{t-1} in the d (inputs)
fit <- MARSS(dat, model=mod.list)

它可能会抱怨它需要 x0 的初始条件。任何事情都会奏效。 EM 算法不像 BFGS 或牛顿算法那样敏感。但是 method="BFGS" 实际上对于这种类型的结构 ts 模型通常更好,在这种情况下为 x 选择一个合理的初始条件(我认为在这种情况下合理 = 接近您的数据)。