非有限的有限差分值,许多数据在指数后变为inf和NA

时间:2015-01-28 05:39:08

标签: r mathematical-optimization

我将找到rank-logit模型的参数。但误差总是表明存在非有限的有限差分值。如果我改变了 "&B0 LT; -rep(0,5)"到" b0< -rep(-1,5)",非有限有限差值后的数字从2变为1。 如果您需要数据集,我会通过电子邮件发送给您。

cjll <- function(b){

U <- X%*%b
lSU <- csm%*%exp(U)
   lSU <- (lSU!=0)*lSU+(lSU==0)
LL <- sum(Ccsm%*%U-log(lSU))

return(LL)
}

b0 <- rep(0,5)
res <- optim(b0,cjll,method="BFGS",hessian=TRUE,control=list(fnscale=-1))
#Error in optim(b0, cjll, method = "BFGS", hessian = TRUE, control = list(fnscale = -1)) :
#  non-finite finite-difference value [2]

b <- res$par
#Error: object 'res' not found

1 个答案:

答案 0 :(得分:9)

BFGS要求函数的梯度最小化。如果你没有通过它,它将尝试使用有限差分来估计它。看看你的可能性函数,可能是你&#34;分裂&#34;它由等于0且不等于0的元素产生阻止数值梯度正确形成的不连续性。尝试使用method = "Nelder-Mead"并将Hessian设置为FALSE,看看是否有效。如果确实如此,您可以使用numDeriv包来估计收敛点处的渐变和Hessian,如果需要的话。