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