[R-es] __Problema_de_minimizaci=?US-ASCII?Q?=F3?=n

guivivi en alumni.uv.es guivivi en alumni.uv.es
Jue Ene 27 10:59:54 CET 2011


Buenos días,

Ayer por la tarde no pude leer el correo pero ahora he visto vuestras
respuestas y las agradezco mucho.

Estoy trabajando ahora con las ideas que me habeis sugerido.

Muchas gracias de nuevo por la ayuda.

Un saludo,

Guillermo


> Hola,
> 
> Efectivamente tanto con optim(), como con constrOptim() tienes esa
> limitación de obtener el máximo o el mínimo a un intervalo determinado.
> 
> Para el problema que planteas, creo que debieras de pensar en una solución
> general y por qué no resolverlo de forma analítica. En tu planteamiento no
> aparece la función que hay que maximizar o minimizar, tan sólo has
incluido
> la restricción.
> 
> La solución analítica de este tipo de problemas de
maximización/minimización
> de funciones sujetas a restricciones se suelen resolver de esta manera:
> http://es.wikipedia.org/wiki/Multiplicadores_de_Lagrange
> 
> Si nos puedes comentar algo más del detalle de la función que quieres
> minimizar, podríamos probar a ver si hay tal solución analítica.
> 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
> www.datanalytics.com/blog
> 
> 2011/1/26 <guivivi en alumni.uv.es>
> 
> > Hola,
> >
> > Pongo un ejemplo resumido del problema que estoy intentando resolver:
> >
> > Para un valor n = 10, he obtenido un valor y = 1.11
> >
> > Para este valor y, busco el valor mínimo de n que cumpla:
> >
> > n*y*nivel.sig < 3
> >
> > Para hacerlo con R, defino mi función como:
> >
> > s <- function (n, y, nivel.sig){
> >  n*y*nivel.sig - 3
> > }
> >
> > Para resolver esto, la función uniroot() presenta problemas porque exige
> > un parámetro "interval" que define un intervalo en cuyos extremos la
> > función debe ser de distinto signo o cero, así que de antemano hay que
> > comprobar que se cumpla esta condición en la función.
> > Cuando tienes muchos valores distintos de n y de y, comprobar esto
> > resulta muy laborioso.
> >
> > Por tanto, he buscado alternativas y he encontrado optimize() y nlm().
> > Así es como estoy usando optimize():
> >
> > > optimize(s, c(0,10), tol = 0.1, y = 1.11, nivel.sig = 0.05)
> > obtengo:
> > $minimum
> > [1] 0.04797285
> >
> > $objective
> > [1] -2.997338
> >
> > Pero si hago:
> > > optimize(s, c(9,10), tol = 0.1, y = 1.11, nivel.sig = 0.05)
> > obtengo:
> > $minimum
> > [1] 9.055728
> >
> > $objective
> > [1] -2.497407
> >
> > Es decir, sólo me busca el mínimo entre el intervalo que yo le digo,
> > pero yo le que quisiera es que me encontrara el mínimo n con nivel.sig =
> > 0.05 que satisfaga n*y*nivel.sig < 3 siendo y=1.11, sin tener que
> > especificar yo el intervalo.
> >
> > Con nlm() tampoco sé muy bien como hacerlo.
> >
> > No sé si esto se puede hacer o estoy enfocando mal el problema.
> >
> > Gracias por la ayuda.
> >
> > Un saludo,
> >
> > Guillermo
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> 



Más información sobre la lista de distribución R-help-es