R dlm库:模型定义

时间:2017-02-18 16:07:58

标签: r matrix kalman-filter state-space

我正在尝试使用 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矩阵来指定模型,但尚未使程序正常工作。

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

我已经在纸上描绘了相对的矩阵大小,它们看起来很好。谁能告诉我哪里出错了?

先谢谢你的帮助。

的Stefan

# 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)

0 个答案:

没有答案