1 votos

Optimización de funciones objetivo multivariables similar a optimx en R

Tengo un modelo de optimización en R que utiliza una sola variable en mi función objetivo. Véase a continuación:

    library(optimx)
    startx <- 1.25

    anstestoptimx<-optimx(startx,fn=testfunc,gr=NULL, hess=NULL, lower=1, upper=1.5, method="L-BFGS-B", itnmax = 50, hessian=FALSE,
         control=list(save.failures=TRUE, maximize=TRUE, ndeps= 0.1, factr=0.01, kkt=FALSE, trace=1))

No voy a incluir el código de la función objetivo 'testfunc' porque es bastante largo. Pero utiliza una variable de entrada, contiene varias rutinas de filtrado, calcula los rendimientos del periodo y devuelve una única salida (un ratio de Sharpe para una cartera). Como puede ver, utiliza el paquete optimx y el método "L-BFGS-B". Este código funciona y optimiza hasta llegar a una solución razonable.

Me gustaría ampliar esta función objetivo para incluir más de una variable, pero no sé qué paquetes existen para funciones objetivo multivariables que sean similares a optimx.

¿Alguien puede recomendar un paquete para esta necesidad? Creo que "MCO" puede ser una opción factible, pero la documentación de MCO no es tan completa como la de optimx, así que no estoy seguro de que funcione de manera similar.

0 votos

Hola: Deberías aclarar a qué te refieres con multivariante porque la mayoría de las rutinas ( creo que todas en realidad ) permiten múltiples parámetros desconocidos. Creo que con el término "multivariante" te refieres a otra cosa. O tal vez alguien más sabe lo que quieres decir y puede aclarar.

0 votos

Buena pregunta y perdón por la confusión. No creo que me refiero a los parámetros como sí estoy de acuerdo en que la mayoría de los paquetes pueden acomodar múltiples parámetros. Me refiero a variables desconocidas en la función objetivo. Tal vez yo mismo no entiendo lo que estoy pidiendo espero que esto ayude. Actualmente mi función objetivo está estructurada como: f(x). Me gustaría esto: f(x, y), o incluso f(x, y, ........., z).

1 votos

Hola: Puedo estar entendiendo mal o no entendiendo pero no veo como esto te impide usar la maquinaria de optimx. ¿Se conocen x e y y la función objetivo también incluye parámetros? Quizá puedas ver ejemplos en la viñeta de optimx. John Nash también ha escrito un libro sobre optimización en R que podría ser útil. No estoy seguro de la mejor manera de encontrar ejemplos, pero esas son dos maneras. También, tal vez sólo google decir: "ejemplos de optimización en R". También está la vista de tareas de optimización de cran que describe lo que está disponible. Hay un montón.

1voto

Steve Zhan Puntos 21

Sólo porque otros pueden experimentar el mismo problema, aquí hay una respuesta breve a este problema: Para optimizar un problema multivariado con optimx (es decir, se optimiza más de un parámetro) se puede crear un vector que se pasa a la función. Así que en su caso, sería algo así como

startVals <- c(1.25, 1.0, ...)

anstestoptimx<-optimx(startVals ,fn=testfunc,gr=NULL, hess=NULL, 
                      lower=c(1,1,...), upper=c(1.5,1.5,...), 
                      method="L-BFGS-B", itnmax = 50, hessian=FALSE,
                      control=list(save.failures=TRUE, maximize=TRUE, 
                                   ndeps= 0.1, factr=0.01, kkt=FALSE, trace=1))

donde el testfunc es una función que utiliza un vector en lugar de variables únicas, por lo que, por ejemplo, en la función x e y deberían referirse así: X[1] (= "x") X[2] (= "y").

Tiene que especificar lower y upper de la misma manera que el vector, por ejemplo lower=c(0,0,0,...) y upper = c(2,2,2,...) esto le permite también definir los límites específicos de los parámetros.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X