varias superponer studio lineas graficos graficas r loess

superponer - Ajustar una línea con LOESS en R



superponer graficas en r (3)

Desafortunadamente, los datos ya no están disponibles, pero una forma más fácil de ajustar una línea no paramétrica (Diagrama de dispersión ponderada localmente o simplemente LOESS si lo desea) es usar el siguiente código:

scatter.smooth(y ~ x, span = 2/3, degree = 2)

Tenga en cuenta que puede jugar con los parámetros span y degree para obtener una suavidad arbitraria.

Tengo un conjunto de datos con algunos puntos y quiero encajar en una línea. Lo probé con la función de loess . Lamentablemente obtengo resultados muy extraños. Ver la trama abajo. Espero una línea que pase más por los puntos y sobre toda la trama. ¿Cómo puedo lograr eso?

Cómo reproducirlo:

Descargue el conjunto de datos desde https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1 (solo dos kb) y use este código:

load(url(''https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1'')) lw1 = loess(y ~ x,data=data) plot(y ~ x, data=data,pch=19,cex=0.1) lines(data$y,lw1$fitted,col="blue",lwd=3)

Cualquier ayuda es muy apreciada. ¡Gracias!


Has trazado valores ajustados contra y lugar de contra x . Además, deberá ordenar los valores de x antes de trazar una línea. Prueba esto:

lw1 <- loess(y ~ x,data=data) plot(y ~ x, data=data,pch=19,cex=0.1) j <- order(data$x) lines(data$x[j],lw1$fitted[j],col="red",lwd=3)


Puede ser tarde, pero tienes opciones con ggplot (y dplyr). Primero, si solo quieres trazar una línea de loess sobre los puntos, puedes intentar:

library(ggplot2) load(url("https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1")) ggplot(data, aes(x, y)) + geom_point() + geom_smooth(method = "loess", se = FALSE)

De otra manera, es mediante la función de predict() usando un ajuste de loess. Por ejemplo, utilicé funciones dplyr para agregar predicciones a una nueva columna llamada "loess" :

library(dplyr) data %>% mutate(loess = predict(loess(y ~ x, data = data))) %>% ggplot(aes(x, y)) + geom_point(color = "grey50") + geom_line(aes(y = loess))

Actualización : Se agregó una línea de código para cargar los datos de ejemplo proporcionados Actualización2 : Corrección en el nombre de la función geom_smoot() acoording @phi comment