R optim:l(0)> U(0)。没有可行的解决方

时间:2016-03-08 14:11:10

标签: r optimization

我试图通过最大似然估计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)) 

0 个答案:

没有答案