0

我想最大化关于 theta 参数的似然函数。似然函数定义为:

from scipy.optimize import minimize

def prloglik(theta,n,r):
    N=theta;k=len(n)
    ar1=np.sum(np.log(np.array(range(N))+1))
    ar2=np.sum(n)*np.log(np.sum(n)/(k*N))
    ar3=(k*N-np.sum(n))*np.log(1-(np.sum(n))/(k*N))
    par=np.sum(np.log(np.array(range(N-r))+1))

    return(-(ar1+ar2+ar3-par))

我用:

res=minimize(prloglik,1000,method='BFGS',args=(nn,962))

nnnumpy 数组在哪里。我得到这个错误:

TypeError: only integer arrays with one element can be converted to an index

谁能帮我?

4

1 回答 1

0

好的,我找到了解决方案,而不是:

     np.sum(np.log(np.array(range(N))+1)) 

我放

    math.lgamma(N+1)

而不是

    np.sum(np.log(np.array(range(N-r))+1))

我放

   math.lgamma((N-r)+1)

但它是同一件事,分别是阶乘 N 和 Nr 的对数,我不明白为什么它不接受我以前的方式。

于 2017-10-12T09:01:27.760 回答