在 R 中的测量方程中具有滞后的状态空间模型的估计

Posted

技术标签:

【中文标题】在 R 中的测量方程中具有滞后的状态空间模型的估计【英文标题】:Estimation of a state-space model with lags in the measurement equation in R 【发布时间】:2020-05-07 07:47:28 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

基本上,你的 x 看起来像

看看 x_2 如何只是一个被强制为 x(t-1) 的虚拟对象?

现在是 y 方程

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

请注意您的初始条件规范。可能最好/最容易将其设置为 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 选择一个合理的初始条件(我认为在这种情况下合理 = 接近您的数据)。

【讨论】:

以上是关于在 R 中的测量方程中具有滞后的状态空间模型的估计的主要内容,如果未能解决你的问题,请参考以下文章

在扩展卡尔曼滤波器中计算状态空间模型和测量模型的雅可比矩阵

广义估计方程spss结果解读

具有增强状态向量的离散时间卡尔曼滤波器

如何使用 R 中的 DSE 包模拟卡尔曼滤波器的后验滤波估计

Matlab:如何在卡尔曼滤波器状态估计后模拟模型

广义估计方程,广义多水平模型和广义混合效应模型的区别和联系