【问题标题】:Maximizing Likelihood, Julia最大化可能性,朱莉娅
【发布时间】:2018-03-25 07:38:39
【问题描述】:

我有一个对数似然函数,我想就 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)

谁能帮忙?

【问题讨论】:

    标签: optimization julia log-likelihood


    【解决方案1】:

    你快到了!你需要用一个数组来初始化它。

    optimize(b->loglik(first(b),nn,962), [978.,], BFGS())
    

    (尽管您仍然需要向我们提供 nn 以使此答案显示输出)

    编辑:由于 b 是 loglik 中的标量,我将其更改为 b->loglik(first(b),nn, 962),如下 Chris Rackauckas 建议的那样。

    【讨论】:

    • 还是不行,nn是一个91元素的Array{Int64,1}
    • b->loglik(first(b),nn,962)b->loglik(b[1],nn,962) 因为它需要一个标量。
    • 太好了,是的,我已经习惯了x 是一个向量,我没有注意到它是 maxlik 中的一个标量。当您有有效的解决方案时,不要忘记接受答案。如果您也可以在您的问题中生成nn,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2023-03-30
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多