Le moment d'utiliser et de ne pas utiliser une méthode de maximisation particulière dépend dans une large mesure du type de données dont vous disposez. nlm
fonctionnera très bien si la surface de probabilité n'est pas particulièrement "rugueuse" et est partout différentiable. nlminb
fournit un moyen de contraindre les valeurs des paramètres à des cadres de délimitation particuliers. optim
, qui est probablement l'optimiseur le plus utilisé, fournit quelques routines d'optimisation différentes; par exemple, BFGS, L-BFGS-B et recuit simulé (via l'option SANN), ce dernier pouvant être utile si vous avez un problème d'optimisation difficile. Il existe également un certain nombre d'optimiseurs disponibles sur CRAN. rgenoud
, par exemple, fournit un algorithme génétique pour l'optimisation.DEoptim
utilise une routine d'optimisation génétique différente. Les algorithmes génétiques peuvent être lents à converger, mais ils sont généralement garantis de converger (dans le temps) même en cas de discontinuités probables. Je ne sais pas DEoptim
, mais rgenoud
est configuré pour être utilisé snow
pour le traitement parallèle, ce qui aide quelque peu.
Ainsi, une réponse probablement quelque peu insatisfaisante est que vous devez utiliser nlm
ou tout autre optimiseur s'il fonctionne pour les données dont vous disposez. Si vous avez une probabilité raisonnable, l'une des routines fournies par optim
ou nlm
vous donnera le même résultat. Certains peuvent être plus rapides que d'autres, ce qui peut ou non avoir de l'importance, en fonction de la taille de l'ensemble de données, etc. Bien sûr, plus vous avez de paramètres, plus vous risquez de rencontrer des problèmes de convergence.