我正在尝试使用一些时间序列数据估计本地级别dlm的参数。这是我正在使用的代码,似乎" work",在某种意义上它不会抛出任何警告/错误:
buildSu<- function(x) {
Vsd<-(x[1:10])
Vcorr<-(x[11:55])
V<-Vsd %o% Vsd
V[1,2] <- V[2,1] <- V[1,2] * Vcorr[1]
V[1,3] <- V[3,1] <- V[1,3] * Vcorr[2]
V[1,4] <- V[4,1] <- V[1,4] * Vcorr[3]
V[1,5] <- V[5,1] <- V[1,5] * Vcorr[4]
V[1,6] <- V[6,1] <- V[1,6] * Vcorr[5]
V[1,7] <- V[7,1] <- V[1,7] * Vcorr[6]
V[1,8] <- V[8,1] <- V[1,8] * Vcorr[7]
V[1,9] <- V[9,1] <- V[1,9] * Vcorr[8]
[...]
Wsd<-(x[56:65])
Wcorr<-(x[66:110])
W<-Wsd %o% Wsd
W[1,2] <- W[2,1] <- W[1,2] * Wcorr[1]
W[1,3] <- W[3,1] <- W[1,3] * Wcorr[2]
W[1,4] <- W[4,1] <- W[1,4] * Wcorr[3]
W[1,5] <- W[5,1] <- W[1,5] * Wcorr[4]
W[1,6] <- W[6,1] <- W[1,6] * Wcorr[5]
W[1,7] <- W[7,1] <- W[1,7] * Wcorr[6]
W[1,8] <- W[8,1] <- W[1,8] * Wcorr[7]
W[1,9] <- W[9,1] <- W[1,9] * Wcorr[8]
W[1,10] <- W[10,1] <- W[1,10] * Wcorr[9]
W[2,3] <- W[3,2] <- W[2,3] * Wcorr[10]
[...]
return(list(
m0=rep(0,10),
C0=1000 * diag(10),
FF= diag(10),
GG=diag(10),
V=V,
W=W))
}
suMLE<-dlmMLE(y=x1, parm=rep(0,110), build=buildSu)
我面临的问题是V和W的结果总是两个10x10矩阵,用0&#39; s填充。我不明白为什么,因为数据是按时间序列制作的,彼此之间应该至少有一点相关性。我是否遗漏了模型规范中的内容(mo,C0,FF,GG)?
非常感谢任何帮助。 非常感谢, 弗朗西斯