¿Cuándo debería * no * usar la función nlm de R para MLE?

25

Me he encontrado con un par de guías sugiriendo que use R's nlm para la estimación de máxima probabilidad. Pero ninguno de ellos (incluida la documentación de R ) da mucha orientación teórica sobre cuándo usar o no usar la función.

Por lo que puedo decir, nlm solo está haciendo un descenso de gradiente a lo largo de las líneas del método de Newton. ¿Existen principios para cuando es razonable utilizar este enfoque? ¿Qué alternativas hay disponibles? Además, ¿hay límites en el tamaño de las matrices, etc. que uno puede pasar a nlm?

Abe
fuente

Respuestas:

39

Hay una serie de rutinas de optimización de uso general en la base de R que yo sepa: optim, nlminb, nlmy constrOptim(que se ocupa de las restricciones de desigualdad lineales y llamadas optimbajo el capó). Aquí hay algunas cosas que es posible que desee considerar al elegir cuál usar.

  • optimpuede usar varios algoritmos diferentes, incluidos gradiente conjugado, Newton, cuasi-Newton, Nelder-Mead y recocido simulado. Los dos últimos no necesitan información de gradiente y, por lo tanto, pueden ser útiles si los gradientes no están disponibles o no son factibles de calcular (pero es probable que sean más lentos y requieran más ajustes de parámetros, respectivamente). También tiene una opción para devolver el Hessian calculado en la solución, que necesitaría si desea errores estándar junto con la solución misma.

  • nlminbutiliza un algoritmo cuasi-Newton que llena el mismo nicho que el "L-BFGS-B"método optim. En mi experiencia, parece un poco más robusto optimque porque es más probable que devuelva una solución en casos marginales en los optimque no convergerá, aunque es probable que dependa de un problema. Tiene la característica agradable, si proporciona una función de gradiente explícita, de hacer una verificación numérica de sus valores en la solución. Si estos valores no coinciden con los obtenidos de la diferencia numérica, nlminbdará una advertencia; esto ayuda a garantizar que no haya cometido un error al especificar el gradiente (fácil de hacer con probabilidades complicadas).

  • nlmsolo usa un algoritmo de Newton. Esto puede ser más rápido que otros algoritmos en el sentido de que necesita menos iteraciones para alcanzar la convergencia, pero tiene sus propios inconvenientes. Es más sensible a la forma de la probabilidad, por lo que si es fuertemente no cuadrático, puede ser más lento o puede obtener convergencia a una solución falsa. El algoritmo de Newton también usa el Hessian, y la computación que puede ser lo suficientemente lenta en la práctica como para cancelar cualquier aceleración teórica.

Hong Ooi
fuente
17

Cuándo usar y no usar ningún método particular de maximización depende en gran medida del tipo de datos que tenga. nlmfuncionará bien si la superficie de probabilidad no es particularmente "rugosa" y es diferenciable en todas partes. nlminbproporciona una manera de restringir los valores de los parámetros a cuadros delimitadores particulares. optim, que es probablemente el optimizador más utilizado, proporciona algunas rutinas de optimización diferentes; por ejemplo, BFGS, L-BFGS-B y recocido simulado (a través de la opción SANN), el último de los cuales podría ser útil si tiene un problema de optimización difícil. También hay varios optimizadores disponibles en CRAN. rgenoud, por ejemplo, proporciona un algoritmo genético para la optimización.DEoptimutiliza una rutina de optimización genética diferente. Los algoritmos genéticos pueden ser lentos para converger, pero generalmente se garantiza que convergerán (a tiempo) incluso cuando haya discontinuidades en la probabilidad. No lo sé DEoptim, pero rgenoudestá configurado para usarse snowen procesamiento paralelo, lo que ayuda un poco.

Entonces, una respuesta probablemente algo insatisfactoria es que debe usar nlmo cualquier otro optimizador si funciona para los datos que tiene. Si tiene una probabilidad de buen comportamiento, cualquiera de las rutinas proporcionadas por optimo nlmle dará el mismo resultado. Algunos pueden ser más rápidos que otros, lo que puede o no importar, dependiendo del tamaño del conjunto de datos, etc. En cuanto a la cantidad de parámetros que estas rutinas pueden manejar, no lo sé, aunque probablemente sean bastantes. Por supuesto, cuantos más parámetros tenga, más probabilidades tendrá de tener problemas de convergencia.

Jason Morgan
fuente