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
> >
>