Je souhaite maximiser la fonction de vraisemblance par rapport au paramètre thêta. La fonction de vraisemblance est définie comme:Maximisation de la fonction de vraisemblance
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))
J'utilise:
res=minimize(prloglik,1000,method='BFGS',args=(nn,962))
Lorsque nn
est un tableau numpy. Et je reçois cette erreur:
TypeError: only integer arrays with one element can be converted to an index
Quelqu'un peut-il m'aider?
Essayez d'ajouter des instructions d'impression? Les arguments de paramètre de la fonction sont passés en tant que tableau, donc theta commence comme [1000]. En outre, le paramètre doit-il être un entier? Je crois que scipy.optimize.minimize ne le permet pas, car il nécessite des arguments en virgule flottante pour obtenir des dérivées, etc. – xioxox
Ok, je suis nouveau sur le Python, j'utilise principalement R, quand vous dites des instructions d'impression que voulez-vous dire? – Alex
Vous pouvez ajouter une impression (thêta, n, r) en haut de votre fonction pour montrer ce qui est transmis à la fonction. – xioxox