¿Hay alguna manera de maximizar / minimizar una función personalizada en R?


18

Estoy tratando de minimizar una función personalizada. Debe aceptar cinco parámetros y el conjunto de datos y hacer todo tipo de cálculos, produciendo un solo número como salida. Quiero encontrar una combinación de cinco parámetros de entrada que produzca la salida más pequeña de mi función.

Respuestas:


23

Escribí una publicación enumerando algunos tutoriales usandooptim .

Aquí hay una cita de la sección relevante:

  • "La combinación de la función R optimy una función objetivo creada a medida, como una función de log-verosimilitud negativa proporciona una herramienta poderosa para la estimación de parámetros de modelos personalizados.

  • 1
    Últimamente he estado jugando con DEoptim como un buen optimizador "no se necesitan puntos de inicio".
    Mike Lawrence

    1
    Una publicación reciente de John Myles White en el comando optim en R también puede ser de interés .
    Andy W

    @Mike estuvo de acuerdo; DEoptim ofrece una alternativa más robusta (DE = Evolución diferencial)
    Abe

    12

    Además de la respuesta de Jeromy Anglim, tengo algunos enlaces más.

    Al lado optimhay otra función en la base de R que permite lo que quiere: nlminb. Verifique ?nlminby ?optimpara ejemplos del uso.

    Hay un montón de paquetes que pueden hacer optimizaciones. Lo que encontré más interesante fueron los paquetes optimx y, bastante nuevo, el paquete neldermead para diferentes versiones del algoritmo simplex.

    Además, es posible que desee echar un vistazo a la vista de tareas CRAN sobre optimización para obtener más paquetes

    Tenga en cuenta que todas mis recomendaciones suponen que tiene una función determinista (es decir, sin ruido aleatorio). Para funciones que no son estrictamente deterministas (o demasiado grandes), necesitaría usar algoritmos como recocido simulado o algoritmos genéticos. Pero la vista de tareas CRAN debe tener lo que necesita.


    1

    ¿Es su función continua y diferenciable? Es posible que pueda usar optim, ya sea con derivados proporcionados por el usuario o con números aproximados numéricamente.

    Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
    Licensed under cc by-sa 3.0 with attribution required.