我有一个对数似然函数,我想在theta(N)方面最大化它,它被定义为:
function loglik(theta,n,r)
N=theta;k=length(n);
ar1=float(lgamma(N+1));ar2=sum(n)*log(sum(n)/(k*N));ar3=(k*N-sum(n))*log(1-(sum(n))/(k*N));
par=float(lgamma((N-r)+1));
return(-(ar1+ar2+ar3-par)) end
我使用Optim.jl的optimize
函数:
r=optimize(b->loglik(b,nn, 962), 978, BFGS() );
其中nn是数组。我收到了这个错误:
ERROR:MethodError no method matching optimize (::#46#47,::Float64, ::Optim.BFGS)
有人可以帮忙吗?
答案 0 :(得分:3)
你快到了!您需要使用数组初始化它。
optimize(b->loglik(first(b),nn,962), [978.,], BFGS())
(尽管您仍然需要为此答案提供nn
以显示输出)
编辑:由于b是loglik中的标量,我将其更改为b->loglik(first(b),nn, 962)
,如下面的Chris Rackauckas所建议。