[R-es] programación en R_escribir función

marcelino.delacruz en upm.es marcelino.delacruz en upm.es
Dom Nov 11 20:46:00 CET 2012


Tal vez así (si no he olvidado algún paréntesis):

parameters <- function(datos){
  asint_pend <- NULL
  for (p in unique(datos$parcela)){
       hossfeldIV <- nls(ho~edad*exp(0.1)/(a+b*(edad*exp(0.1))),
                         data=datos[datos$parcela==p,],
                         start=list(a=30, b=10), trace=TRUE)
       asint_pend <- rbind(c(p,coef(hossfeldIV)))
  }
  return(asint_pend)
 }


Marcelino

Con fecha 11/11/2012, "Roy Vera" <roy_2roger en yahoo.com.mx> escribió:

>Hola a todos los R-ayudas
>
>estoy tratando de escribir una función en R que me devuelva los estimadores (coef()) de un análisis de regresión no lineal. La estructura de mi base de datos es la siguiente:
>
>##str(nigra)
>
>'data.frame':   334 obs. of  3 variables:
> $ parcela: Factor w/ 55 levels "cu1","cu10","cu11",..: 1 1 1 1 1 1 1 1 12 12 ...
> $ edad   : int  46 51 56 61 66 71 79 88 44 49 ...
> $ ho     : num  12.4 12.6 12.8 13.4 14.2 14.9 16.2 16.4 14.2 149 ...
>
>
>##
>
>donde, como se puede observar, son 334 observaciones, un factor (parcela) con 55 niveles y dos variables numéricas edad y ho, 
>
>he logrado aplicar un modelo no lineal con la función nls() así:
>
>##
>
>hossfeldIV <- nls(ho~edad*exp(0.1)/(a+b*(edad*exp(0.1))), data=nigra, start=list(a=30, b=10), trace=TRUE)
>coef(hossfeldIV) 
>
>##
>
>con lo cual me devuelve los coeficientes globales de la base de datos, pero lo que quiero es obtener los estimadores por cada uno de los niveles del factor parcela al correr el modelo, soy novato en R, pero intento aprovechar su funcionalidad, leyendo sobre programar funciones puedo escribir algo así:
>
>
>##
>
>> parameters <- function(datos){
>+ hossfeldIV <- nls(ho~edad*exp(0.1)/(a+b*(edad*exp(0.1))), 
>+   data=datos, start=list(a=30, b=10), trace=TRUE)
>+ asint_pend <- coef(hossfeldIV)
>+ return(asint_pend)
>+ }  
>##
>
>
>con lo cual está en función de "datos", es decir, si le doy un dataframe en lugar de datos, debería obtener lo que quiero, pero no es así... por favor si alguien puede ayudarme se lo agradecería..
>
>saludos cordiales
>
>Roy
>	[[alternative HTML version deleted]]
>



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