[R-es] Problema de minimizaci=?US-ASCII?Q?=F3?=n
guivivi en alumni.uv.es
guivivi en alumni.uv.es
Mie Ene 26 12:12:05 CET 2011
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
Más información sobre la lista de distribución R-help-es