Jimmy Erney Reyes Velasco
2020-Sep-30 22:48 UTC
[R-es] Graficar una curva de tendencia potencial.
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]]
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 en 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Jimmy Erney Reyes Velasco
2020-Oct-01 11:30 UTC
[R-es] Graficar una curva de tendencia potencial.
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 en 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 en 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 en 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]]
Hola Jimmy, Me queda la duda si la fórmula debe ir entre ?single quote?. Manuel On Wed, 30 Sep 2020 at 16:48 Jimmy Erney Reyes Velasco < jimmyreyesvelasco en gmail.com> wrote:> 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 en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > --*Manuel Spínola, Ph.D.* Instituto Internacional en Conservación y Manejo de Vida Silvestre Universidad Nacional Apartado 1350-3000 Heredia COSTA RICA mspinola en una.cr <mspinola en una.ac.cr> mspinola10 en gmail.com Teléfono: (506) 8706 - 4662 Personal website: Lobito de río <https://sites.google.com/site/lobitoderio/> Institutional website: ICOMVIS <http://www.icomvis.una.ac.cr/> [[alternative HTML version deleted]]
Gracias Emilio, tu respuesta nos sirve a todos, Eric. On 01-10-20 06:10, Emilio L. Cano wrote:> 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 en 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 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