Hola Jordi.
Las funciones ''f'' y ''grp'' deben tener un
único argumento que es un vector
con los parámetros de la función. Deberías reescribir tu función f así:
f <- function(x) 2^(x[1]-2) * (x[2]^(2*x[1]) + ...
y equivalentemente para grp.
Un saludo.
El 20 de septiembre de 2012 10:14, Jordi Arjona
<jordikaiser@gmail.com>escribió:
> Buenas a todos,
>
> Ante todo decir que estoy haciendo mis primeros pinitos en R y además a
> contrarreloj, lo cual creo que puede ser un cocktail un tanto explosivo.
> La duda que os propongo me ha surgido al intentar ejecutar una función. No
> sé si es una duda muy estúpida o no lo es, pero así a botepronto no he
> podido encontrar solución googleando. Si me podéis echar una mano con ella
> o indicarme el mejor sitio para encontrar soluciones a este tipo de
> problema os estaré muy agradecido.
>
> Paso al problema. Básicamente estoy intentando ejecutar la función optim
> con el método L-BFGS-B. Os pongo el código a continuación:
>
> f <- function(a,b) 2^(a-2)*(b^(2*a) + (1-b)^a*b^a)+a*b^a-a*(1-b)^a - b^a
-1
> grp <- function(a,b){
> gr[1]<- 2^(a-2)*log(a-2)*b^(2*a) +
>
>
2^(a-1)*b^(2*a)*log(2*a)+2^(a-2)*log(a-2)*(1-b)^a*b^a+((1-b)*b)^a*log(a)*2^(a-1)+b^a+a*log(a)*b^a-(1-a)^a-a*log(a)*(1-a)^a-b^a*log(a)
> gr[2]<- 2^(a-2)*(2*a*b^(2*a-1) - a*(1-b)^(a-1)*b^a+a*(1-b)^a*b^(a-1))
> +a^2*b^(a-1)+a^2*(1-b)^(a-1)-a*b^(a-1)
> return(gr)
> }
>
> result<-optim(c(1.5,0.6),f,grp,method
> ="L-BFGS-B",lower=c(1,0),upper=c(2,1),control="REPORT",
hessian = FALSE)
>
>
> Al ejecutar obtengo este error:
>
> Error en b^(2 * a) : b'' esta perdido
>
>
>
> Decir también que en mi atrevida ignorancia lo he ejecutado con hessian a
> true y a false, por evitar estar metiendo la pata ahí y el resultado es el
> mismo en ambos casos.
>
> Muchas gracias!!!
>
> Jordi
>
> pd: trabajo con RStudio
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
[[alternative HTML version deleted]]