在 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 中的测量方程中具有滞后的状态空间模型的估计的主要内容,如果未能解决你的问题,请参考以下文章