27 votos

¿Cuándo debo * no * uso R ' función nlm para la MLE?

Me he encontrado con un par de guías de lo que sugiere que el uso de R de la nlm para la estimación de máxima verosimilitud. Pero ninguno de ellos (incluyendo a R la documentación) da mucho una guía teórica para cuando el uso o no uso de la función.

Como lo que yo puedo decir, nlm es solo hacer gradiente de la pendiente a lo largo de las líneas del método de Newton. Hay principios para cuando es razonable el uso de este enfoque? Cuáles son las alternativas disponibles? También, no hay límites en el tamaño de las matrices, etc. uno puede pasar a la nlm?

41voto

Factor Mystic Puntos 12465

Hay un número de propósito general rutinas de optimización en base R, que yo sepa: optim, nlminb, nlm y constrOptim (el cual se encarga desigualdad lineal restricciones, y llama a optim bajo el capó). Aquí están algunas cosas que usted podría querer considerar en la elección de cuál utilizar.

  • optim puede utilizar un número de diferentes incluyendo algoritmos de gradiente conjugado, Newton, cuasi-Newton, Nelder-Mead y el recocido simulado. Los dos últimos no necesitan gradiente de información y por lo tanto puede ser útil si los degradados no están disponibles o no es posible calcular (pero es probable que sean más lentos y requieren de más de parámetro de ajuste fino, respectivamente). También tiene una opción para volver a la calculada de Hesse en la solución que usted necesita si desea que los errores estándar junto con la solución en sí misma.

  • nlminb utiliza un cuasi-Newton algoritmo que ocupa el mismo nicho "L-BFGS-B" método en optim. En mi experiencia, parece un poco más robusto que el optim en que es más probable que vuelva una solución en casos marginales donde optim fallará a converger, a pesar de que es probable que depende del problema. Tiene la característica agradable, si usted proporciona un explícito gradiente de la función, la de hacer un número de verificación de sus valores en la solución. Si estos valores no coinciden con los obtenidos a partir de diferenciación numérica, nlminb le dará una advertencia; esto ayuda a asegurarse de que no haya cometido un error en la especificación del gradiente (fácil de hacer complicadas de las probabilidades).

  • nlm sólo utiliza un algoritmo de Newton. Esto puede ser más rápido que otros algoritmos en el sentido de que necesitan un menor número de iteraciones para alcanzar la convergencia, pero tiene sus propios inconvenientes. Es más sensible a la forma de la probabilidad, lo que si es fuertemente no-cuadrática, puede ser más lento o usted puede conseguir la convergencia a una falsa solución. El algoritmo de Newton también se utiliza el estado de Hesse, y de computación que pueden ser lo suficientemente lenta como en la práctica, que más que anula cualquier teórico speedup.

4voto

Nathan Black Puntos 61

Cuándo usar y no usar ningún método particular de la maximización depende en gran medida del tipo de datos que usted tiene. nlm funcionarán igual de bien, si la probabilidad de la superficie no es muy "bruto" y está en todas partes diferenciables. nlminb proporciona una manera de restringir los valores de los parámetros particulares de las cajas de contorno. optim, que es probablemente el más utilizado en el optimizador, proporciona un par de diferentes rutinas de optimización; por ejemplo, BFGS, L-BFGS-B, y el recocido simulado (a través de la SANN opción), el último de los cuales puede ser útil si usted tiene un difícil optimizar problema. Hay también un número de optimizadores disponible en CRAN. rgenoud, por ejemplo, proporciona un algoritmo genético para la optimización. DEoptim utiliza otro rutina de optimización genética. Los algoritmos genéticos pueden ser lento a converger, pero generalmente se garantiza la convergencia (en el tiempo), incluso cuando hay discontinuidades en la probabilidad. Yo no sé acerca de DEoptim, pero rgenoud está configurado para utilizar snow el procesamiento en paralelo, lo cual ayuda un poco.

Así que, probablemente, algo insatisfactoria respuesta es que debe utilizar el nlm o cualquier otro optimizador si funciona para los datos que tiene. Si usted tiene un buen comportamiento probabilidad, alguna de las rutinas proporcionadas por optim o nlm le dará el mismo resultado. Algunos más rápidos que otros, que pueden o no de la materia, dependiendo del tamaño del conjunto de datos, etc. Como el número de parámetros de estas rutinas puede manejar, no sé, aunque sea probablemente muy pocos. Por supuesto, el más parámetros que usted tiene, más probable es que se ejecute en problemas con la convergencia.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X