2

我正在尝试使用dlm库在 R 中构建状态空间模型,但不断收到“矩阵的不兼容维度”错误。

我正在尝试生产的模型的规格如下:

Yt = At + beta*Ft + et

Ft = phi1*Ft-1 + phi2*Ft-2 + vt

At = At-1 + wt

其中 Yt 是可观察变量,At 是建模为随机游走的时变系数,Ft 是遵循 AR(2) 过程的潜在因子。

我一直在尝试设置dlm所需的 FF、V、GG、W、m0 和 C0 矩阵来指定模型,但还没有让程序运行。

请参阅下面我最近的尝试,它返回“不兼容的矩阵维度”错误。

我已经在纸上追踪了相对矩阵大小,它们对我来说看起来不错。谁能告诉我哪里出错了?

提前感谢您的帮助。

斯特凡

# the below code works now    
model <- function(x) {

  FF <- matrix(c(x[1],0,1), nr=1)
  V  <- matrix(exp(x[2]))

  GG <- matrix(c(x[3],1,0,x[4],0,0,0,0,1), nr=3)     
  W  <- diag(c(exp(x[5]),0,exp(x[6])))

  m0 <- rep(0,3)
  C0 <- 10*diag(3)

  dlm(FF=FF, V=V, GG=GG, W=W, m0=m0,C0=C0)
}

# x[1:6] are beta, Var(et), phi1, phi2, Var(vt) and Var(wt)

fit <- dlmMLE(y1, parm = c(rep(0,6)), build = model)

dlmy1 <- model(fit$par)
4

0 回答 0