optimx パッケージを使用して、R で 18 カテゴリのディリクレ モデルの ML ソリューションを見つけるために勾配上昇を試みましたが、CG アルゴリズムを実行させる初期パラメーター値を見つけることができます。アルファの正の整数のさまざまな組み合わせを試しました。誰かが私が間違っていることを教えてもらえますか? コード:
####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)
返されるエラー メッセージは次のとおりです。「初期パラメーターで関数を評価できません」