[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