我已经尝试使用渐强上升来使用optimx包在R中找到18类Dirichlet模型的ML解,但是我可以找到使CG算法运行的初始参数值。我已经为alphas尝试了不同的正整数组合。有人能告诉我我做错了什么吗? 代码:
####Dirichlet log likelihood function
LnL_Dir <- function(alpha, p, N){
expr1 <- log(gamma(sum(alpha)))
expr2 <- sum(log(gamma(alpha)))
expr3 <- alpha-1
expr4 <- log(p)
lnl <- N*(expr1 - expr2 + sum(expr3*expr4))
return(-lnl)
}
###gradient function
grad_Dir <- function(alpha, p, N){
expr5 <- digamma(sum(alpha))
expr6 <- digamma(alpha)
expr7 <- log(p)
gradient <- N*(expr5 - expr6 + expr7)
return(-gradient)
}
inits <- rep(c(1),18)
optimx(inits, LnL_Dir, grad_Dir, method=c("CG"), p=theta.x, N=300)
返回的错误消息是: “无法在初始参数下评估函数”