Quando usar e não usar qualquer método específico de maximização depende em grande parte do tipo de dados que você possui. nlm
funcionará bem se a superfície de probabilidade não for particularmente "áspera" e for diferenciada em toda parte. nlminb
fornece uma maneira de restringir valores de parâmetros para caixas delimitadoras específicas. optim
, que provavelmente é o otimizador mais usado, fornece algumas rotinas de otimização diferentes; por exemplo, BFGS, L-BFGS-B e recozimento simulado (via opção SANN), o último dos quais pode ser útil se você tiver um problema de otimização difícil. Há também vários otimizadores disponíveis no CRAN. rgenoud
, por exemplo, fornece um algoritmo genético para otimização.DEoptim
usa uma rotina diferente de otimização genética. Os algoritmos genéticos podem demorar a convergir, mas geralmente garantem a convergência (com o tempo), mesmo quando há descontinuidades na probabilidade. Eu não sei DEoptim
, mas rgenoud
está configurado para uso snow
em processamento paralelo, o que ajuda um pouco.
Portanto, uma resposta provavelmente um tanto insatisfatória é que você deve usar nlm
ou qualquer outro otimizador se funcionar para os dados que você possui. Se você tem uma probabilidade bem-comportada, qualquer uma das rotinas fornecidas por optim
ou nlm
fornecerá o mesmo resultado. Alguns podem ser mais rápidos que outros, o que pode ou não importar, dependendo do tamanho do conjunto de dados, etc. Quanto ao número de parâmetros que essas rotinas podem manipular, eu não sei, embora sejam provavelmente alguns. Obviamente, quanto mais parâmetros você tiver, maior a probabilidade de encontrar problemas com a convergência.