我正在尝试使用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)