[R-es] Parámetros iniciales para ajustes no lineales

Marcuzzi, Javier Rubén javier.ruben.marcuzzi en gmail.com
Dom Nov 4 01:17:36 CET 2012


Sin dudas hay una cantidad de posibilidades, dentro de estas se encuentra 
nls y nlme, hay algunos escritos en internet, habría que experimentarlo, yo 
no puedo decir algo al respecto, pero posiblemente nlme pueda calcular su 
modelo sin el mensaje de error, en mi experiencia me encontré con problemas 
por ejemplo en lm que en nlme funcionaron.

-----Mensaje original----- 
From: Fernando Macedo
Sent: Saturday, November 03, 2012 5:51 PM
To: r-help-es en r-project.org
Subject: Re: [R-es] Parámetros iniciales para ajustes no lineales

Estaba con problemas similares estudiando unos datos (aún no logré
ajustar para un modelo, pero ya probaré con nls2).

Leyendo el libro "Nonlinear Regression with R" que esta bastante
interesante plantea varias formas de buscar los valores iniciales.

Una de ellas es la que venia usando yo de ir viendo con curve() donde
introduces el modelo que quieres evaluar y buscar valores que se ajusten
aproximadamente a tus datos. Eso te daría una idea de los valores a
usar. Si usas por ejemplo plot() para ver tus datos puedes usar curve()
agregándole el argumento add=T para que dibuje la curva encima de tus
datos.

Otra es plantear una serie de valores iniciales para cada coeficiente en
vectores y usar nls2().

De todas formas te recomiendo la lectura del libro porque plantea
realizar algoritmos para obtener valores iniciales, cosa que yo pasé por
alto.

Saludos

Fernando Macedo

El 03/11/12 17:55, Carlos Ortega escribió:
> Hola,
>
> Sí, prueba el paquete nls2 y dentro del paquete la función nls2().
> Básicamente utiliza el mismo algoritmo que la función nls(), pero evaluado
> en un intervalo que tú defines.
> Mira los ejemplos de la función.
>
> Si sigues con errores, creo que entonces es mejor que nos dejes el 
> conjunto
> de datos que quieres ajustar para hacer otras pruebas...
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 3 de noviembre de 2012 20:45, Roy Vera 
> <roy_2roger en yahoo.com.mx>escribió:
>
>> Hola Javier
>>
>> gracias por tu respuesta, bueno la verdad es que he estado probando con
>> varios valores de los parámetros, naturalmente que en la bibliografía
>> existen parámetros al cual puedo referirme para poder iniciar, de hecho 
>> lo
>> he intentado con algunos, pero igual me da el mismo error, por esa razón
>> quisiera saber si existe otro método de encontrar los parámetros de
>> partida...y también entender qué significa lo que me devuelve R como
>> error...
>>
>>
>> algunos datos adicionales:
>>
>> ho = variable numérica referida a altura dominante
>> edad = variable edad numérica
>> data = nigra (nombre del dataframe)
>>
>> saludos
>>
>> Roy
>>
>>
>>
>>
>>
>>
>> ________________________________
>>   De: "Marcuzzi, Javier Rubén" <javier.ruben.marcuzzi en gmail.com>
>> Para: Roy Vera <roy_2roger en yahoo.com.mx>; r-help-es en r-project.org
>> Enviado: Sábado, 3 de noviembre, 2012 18:13:44
>> Asunto: Re: [R-es] Parámetros iniciales para ajustes no lineales
>>
>> Estimado Roy Vera
>>
>> No sabría exactamente pero:
>>
>> str(nigra)
>>
>> edad y ho son numérico, se sobreentiende pero por las dudas.
>>
>> luego si no leo mal usted cambio el valor de a, es decir start=list(a=
>>
>> ¿sería muy problemático utilizar valores tipo 0.005 (el primero que usted
>> usa), 0.01, 0.1, 0.5, 1, 2 ..., usted llega hasta 12.18?
>>
>> Puede ser que sus valores iniciales están lejos de lo real, ¿en la
>> bibliografía hay algún valor como para intentar a partir de este?
>>
>> O realizar el "mismo modelo" pero lineal, tomar un valor de este y
>> utilizar el resultado como valor inicial en el modelo no lineal.
>>
>> Javier Marcuzzi
>>
>>
>> -----Mensaje original----- From: Roy Vera
>> Sent: Saturday, November 03, 2012 12:10 PM
>> To: r-help-es en r-project.org
>> Subject: [R-es] Parámetros iniciales para ajustes no lineales
>>
>> Hola a todos
>>
>> estoy aplicando la función polinómica de Hossfeld [1], y algunos otros
>> modelos no lineales para tratar de ajustarlos a un grupo de datos
>> forestales,
>>
>>
>> [1] Y= b*t*exp(c)/(t*exp(c)+a)
>>
>> Al colocar la función en R con parámetros estimados, me devuelve los
>> siguiente:
>>
>> ## model1 <- nls(ho ~ (b*edad*exp(c)/(edad*exp(c)+a)), data=nigra,
>>     start=list(a=0.005,b=0.08,c=-0.00006), trace=TRUE)##
>>
>> ## 108807.6 :   5e-03  8e-02 -6e-05
>> Error en nls(ho ~ (b * edad * exp(c)/(edad * exp(c) + a)), data = nigra, 
>> :
>> singular gradient ##
>>
>>
>> O si cambio de valores de los parámetros me suele dar otro tipo de 
>> mensaje:
>>
>> ## model1 <- nls(ho ~ (b*edad*exp(c)/(edad*exp(c)+a)), data=nigra,
>>      start=list(a=12.18,b=0.06,c=-0.00006), trace=TRUE) ##
>>
>>
>> ##109135.3 :  12.18000  0.06000 -0.00006
>> Error en numericDeriv(form[[3L]], names(ind), env) :
>> Missing value or an infinity produced when evaluating the model##
>>
>> entiendo que esta pregunta va más en sentido de conocimiento de la
>> estadística, pero si alguno tiene alguna idea para resolver este 
>> problema,
>> se la agradecería..
>>
>> saludos cordiales
>>
>> Roy
>> [[alternative HTML version deleted]]
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>          [[alternative HTML version deleted]]
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


[[alternative HTML version deleted]]







_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



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