我试图通过最大似然估计DLM模型中的参数,因此我运行 optim 来查找最大化可能性的参数集(或者更确切地说,最小化对数似然)。 (实际上,我正在使用dlm-package中的 dlmMLE ,但这会调用 optim )。 优化例程似乎运行正常并收敛到一组参数。 但是,我得到以下消息(未显示为错误或警告,但仍然):
l(0) > u(0). No feasible solution
有人能告诉我这究竟是什么意思吗?
尝试将估计参数集插入到我的模型中似乎有效,但为什么我会收到此消息? l(0)和u(0)是指什么?
这是我试图运行的代码:
require(dlm)
require(Matrix)
### Reasing in the data (a 15503 x 5 matrix)
buildS2 = function(x) {
### Constructing the F-matrix with 8 parameters
F = matrix(0, ncol=4, nrow=5)
F[1,1] = x[1]; F[2,2] = x[2]
F[3,3] = x[3]; F[4,4] = x[4]
F[5, ] = x[5:8]
### Constructing the V matrix with 4 unknown parameters.
LV = matrix(x[11], 5, 5)
diag(LV) = exp(x[9])
LV[5,5] = exp(x[10])
LV[1:4, 5] = rep(x[12], 4); LV[5, 1:4] = x[12]
LV = nearPD(LV)$mat
### Constructing the G matrix with two unknown parameters
G = matrix(x[14], 4, 4)
diag(G) = x[13]
### Constructing the W matrix with two unknown parameters
LW = matrix(x[16], 4, 4)
diag(LW) = exp(x[15])
LW = nearPD(LW)$mat
modS = dlm(FF = F, V = LV, GG = G, W = LW, m0 = rep(0, 4), C0 = diag(4)*100)
return(modS)
}
fitS2 = dlmMLE(S2_train, parm = rep(1, 16), build = buildS2, hessian = T, control=list(maxit=500, trace=6))