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

Jia*_*ang 7 r mathematical-optimization

我将找到rank-logit模型的参数.但误差总是表明存在非有限的有限差分值.如果我将"b0 <-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
Run Code Online (Sandbox Code Playgroud)

Avr*_*ham 9

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