1

我已经尝试使用 optimx 包使用梯度上升来找到 R 中 18 类 Dirichlet 模型的 ML 解决方案,但我可以找到使 CG 算法运行的初始参数值。我已经为 alpha 尝试了不同的正整数组合。有人可以告诉我我做错了什么吗?代码:

####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)

返回的错误消息是:“无法在初始参数处评估函数”

4

0 回答 0