[R-es] Graficar una curva de tendencia potencial.

Jimmy Erney Reyes Velasco j|mmyreye@ve|@@co @end|ng |rom gm@||@com
Jue Oct 1 13:30:08 CEST 2020


Muchas Gracias por la información.

Aclaro que estoy trabajando con un modelo potencial porque el criterio de
información de Akaike me da el valor más bajo en el modelo potencial
teniendo para el modelo lineal un valor de AIC=5.81 y para el modelo
potencial AIC=-46.55, por eso es que lo estoy utilizando.
Muchas gracias me ha servido mucho la información

<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Libre
de virus. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

El jue., 1 de oct. de 2020 a la(s) 04:10, Emilio L. Cano (
emilopezcano using gmail.com) escribió:

> Hola Jimmy,
>
> Enhorabuena por proporcionar un ejemplo reproducible. Es la mejor forma de
> poder ayudar, y no todo el mundo lo hace.
>
> El ajuste no lineal muchas veces falla por los valores iniciales. Lo mejor
> es intentar buscar valores iniciales lo más aproximados posibles. De tu
> nube de puntos, se ve que es prácticamente una recta y=x, pero si los pones
> en 1,1 o 0,1, da errores. Entonces siempre primero asegúrate de que el
> modelo lineal se puede ajustar. Si la función nls da errores, entonces
> primero arregla eso, y después podrás graficarlo.
>
> En el caso de la función potencial que planteas, es fácil encontrar
> valores muy aproximados linealizando, y después puedes usar esos valores
> como iniciales para ajustar el modelo no lineal (y meterlos también en el
> gráfico).
>
> Pego debajo un ejemplo (reproducible) que funciona. Con nls parece que no
> funciona se=TRUE, si lo necesitas creo que tendrías que añadir una capa
> geom_ribbon calculándola con el resultado del modelo.
>
> Un saludo,
> Emilio L. Cano
>
>
> modelos_Garcia <- read.table(header = TRUE,
>                 text = "AF_E PS_E
> 90.838 2.206
> 83.139 1.751
> 134.272 3.710
> 84.043 2.076
> 105.184 2.788
> 157.249 3.783
> 50.280 1.027
> 96.973 2.355
> 123.582 3.398
> 60.417 1.236
> 123.501 3.315
> 90.128 1.566
> 193.783 5.167
> 116.036 2.994
> 100.289 2.216
> 56.943 1.106
> 102.272 2.692
> 145.579 3.810
> 53.105 1.202
> 127.212 3.061
> 102.838 2.383
> 126.352 2.723
> 13.661 0.190
> 164.352 4.870
> 159.945 4.160
> 54.382 0.884
> 128.253 3.598
> 181.208 4.767
> 145.118 3.779
> 65.993 1.147")
>
> ## No funcionan los valores iniciales
> modelo <- nls(PS_E ~ a*AF_E^b, modelos_Garcia, start = list(a = 1, b = 1))
>
> ## Buscar mejores:
> modelol <- lm(log(PS_E) ~ log(AF_E), modelos_Garcia)
> coef(modelol)
>
> ## Probar de nuevo
> modelo <- nls(PS_E ~ a*AF_E^b, modelos_Garcia,
>               start = list(a = exp(coef(modelol)[1]), b =
> coef(modelol)[2]))
> coef(modelo)
> a0 <- exp(coef(modelol)[1])
> b0 <- coef(modelol)[2]
>
> library(ggplot2)
> ggplot(modelos_Garcia,aes(x = AF_E,y = PS_E)) +
>   geom_point() +
>   geom_smooth(method = 'nls',
>               formula = y~a*x^b,
>               method.args = list(start = list(a = a0,
>                                               b = b0)),
>               se = FALSE)
>
>
>
> > El 1 oct 2020, a las 0:48, Jimmy Erney Reyes Velasco <
> jimmyreyesvelasco using gmail.com> escribió:
> >
> > AF_E PS_E
> > 90.838 2.206
> > 83.139 1.751
> > 134.272 3.710
> > 84.043 2.076
> > 105.184 2.788
> > 157.249 3.783
> > 50.280 1.027
> > 96.973 2.355
> > 123.582 3.398
> > 60.417 1.236
> > 123.501 3.315
> > 90.128 1.566
> > 193.783 5.167
> > 116.036 2.994
> > 100.289 2.216
> > 56.943 1.106
> > 102.272 2.692
> > 145.579 3.810
> > 53.105 1.202
> > 127.212 3.061
> > 102.838 2.383
> > 126.352 2.723
> > 13.661 0.190
> > 164.352 4.870
> > 159.945 4.160
> > 54.382 0.884
> > 128.253 3.598
> > 181.208 4.767
> > 145.118 3.779
> > 65.993 1.147 Hola buenas tardes
> > quiero graficar una curva de tendendia de un modelo potencial con estos
> > datos.
> > mi codigo es el siguiente:
> >
> > ggplot(modelos_Garcia,aes(x = AF_E,y = PS_E)) +
> >  geom_point() +
> >  stat_smooth(method = 'nls', formula = 'y~a*x^b', start = list(a =
> > 1,b=1),se=TRUE)
> >
> > pero cuando ejecuto el código no me aparece la curva de tendencia
> > ¿alguien sabe cómo podría hacerlo?.
> > por otro lado me gustaría añadir la ecuación del modelo.
> > agradezco mucho la información que puedan darme.
> >
> >       [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Libre
de virus. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

	[[alternative HTML version deleted]]



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