如何在Python中最小化运行

问题描述 投票:0回答:1

我正在尝试最小化Weibull分布式数据(数据https://docs.google.com/spreadsheets/d/1QzWgA04Dy7AKVAOFNG5bjpnYv6-hBSXUygthElH6QwY/edit?usp=sharing)的负对数似然性。

这是我编写的代码:

def weibulngll(theta,X):    
 n = len(X)    
 a = theta[0]    
 l = theta[1]    
 ngll = -n*(a*np.log(l)+np.log(a))-(a-1)*X.sum()+l**(a)*np.sum(X**a)   
 return(ngll);   

theta = np.array([1,1])   
minimize(weibulngll, theta, args = (np.array(X))) 

最小化功能不适用于我。最佳参数应为(2,1),但无法获得所需的答案。

python optimization minimization weibull log-likelihood
1个回答
0
投票

我不知道什么是Weibull,但这不是正确的功能。原因如下:让我们看一下行

ngll = -n*(a*np.log(l)+np.log(a))-(a-1)*X.sum()+l**(a)*np.sum(X**a)   

a = 1,l =1。因此,-n *(a * np.log(l)+ np.log(a))为零。

这给我们留下了术语:

ngll = -(a-1)*X.sum()+l**(a)*np.sum(X**a)

项-(a-1)* X.sum()也是零,因为a =1。所以(a-1)= 0。

这使我们有了术语:

ngll = l**(a)*np.sum(X**a)

再次l **(a)=1。所以您的整个功能不过是:

ngll = np.sum(X). The sum of all elements of X.

如果要最小化所有元素的总和,软件将寻找负无穷大。您将得到类似-2E-16的信息(在旧计算机中为-2E-8)

返回到绘图板,找到合适的功能。

© www.soinside.com 2019 - 2024. All rights reserved.