Когда использовать, а не использовать какой-либо конкретный метод максимизации, в значительной степени зависит от типа данных, которые у вас есть. nlm
будет работать просто отлично, если поверхность вероятности не особенно "шероховатая" и везде дифференцируема. nlminb
предоставляет способ ограничить значения параметров конкретными ограничивающими рамками. optim
, который, вероятно, является наиболее используемым оптимизатором, предоставляет несколько различных процедур оптимизации; например, BFGS, L-BFGS-B и имитированный отжиг (с помощью опции SANN), последний из которых может быть полезен, если у вас есть проблемы с оптимизацией. Есть также ряд оптимизаторов, доступных на CRAN. rgenoud
Например, предоставляет генетический алгоритм для оптимизации.DEoptim
использует другую процедуру генетической оптимизации. Генетические алгоритмы могут медленно сходиться, но обычно гарантированно сходятся (во времени), даже если в вероятности есть разрывы. Я не знаю DEoptim
, но rgenoud
настроен snow
на параллельную обработку, что несколько помогает.
Так что, вероятно, несколько неудовлетворительный ответ заключается в том, что вы должны использовать nlm
любой другой оптимизатор, если он работает для ваших данных. Если у вас правдоподобная вероятность, любая из подпрограмм, предоставленных optim
или nlm
даст вам тот же результат. Некоторые могут быть быстрее других, что может иметь или не иметь значения, в зависимости от размера набора данных и т. Д. Что касается количества параметров, которые могут обрабатывать эти подпрограммы, я не знаю, хотя, вероятно, их довольно много. Конечно, чем больше у вас параметров, тем больше вероятность того, что у вас возникнут проблемы с конвергенцией.