J'essaye d'adapter un ensemble de données de vent v=v1,.....,vm
en utilisant une distribution de Weibull de mélange de deux composants.Maximiser la sommation multi-paramètres avec python
J'ai trouvé un document qui suggère d'utiliser la méthode du maximum de vraisemblance et en particulier pour maximiser l'équation suivante:
Omega
, a1
, a2
, b1
et b2
sont les paramètres que je veux changer afin de maximiser la fonction et v=v1,.....,vm
est une série de vitesses de vent connues.
J'ai essayé d'utiliser l'algorithme de minimisation SciPy mais sans succès.
Voici ce que j'ai jusqu'à présent:
def minimizer_function(v,omega,a1,b1,a2,b2):
return np.reciprocal(np.sum((omega*(a1/b1)*((v/b1)**(a1-1))*(np.exp(-((v/b1)**a1)))+(1-omega)*(a2/b2)*((v/b2)**(a2-1))*(np.exp(-((v/b2)**a2))))))
x0 = np.array([0.5,1.0,1.0,1.0,1.0])
res = optimization.minimize(minimizer_function, x0, method='nelder-mead',options={'xtol': 1e-8, 'disp': True})
Cependant, je continue à obtenir l'erreur suivante:
minimizer_function() missing 5 required positional arguments: 'omega', 'a1', 'b1', 'a2', and 'b2'
Je suis assez sûr que je manque quelque chose.
Salut Warren, merci beaucoup pour regarder dans cela. Il fonctionne maintenant, les valeurs semblent très étranges mais il me manque probablement encore quelque chose – user7630935
Une suggestion sur la façon de maximiser la fonction? Actuellement, je minimise l'inverse de l'abs de la fonction – user7630935