¿Cómo trazar una línea suave usando ggplot2 en R?

En este artículo, aprenderemos cómo trazar una línea suave usando ggplot2 en el lenguaje de programación R.

Usaremos el conjunto de datos » Arrestos estadounidenses » como un conjunto de datos de muestra para este artículo.

 Murder Assault UrbanPop Rape
Alabama      13.2     236       58 21.2
Alaska       10.0     263       48 44.5
Arizona       8.1     294       80 31.0
Arkansas      8.8     190       50 19.5
California    9.0     276       91 40.6
Colorado      7.9     204       78 38.7

Primero tracemos la línea de regresión.

Sintaxis: 

geom_smooth(método= lm )

Hemos utilizado la función geom_smooth() para agregar una línea de regresión a nuestro diagrama de dispersión al proporcionar » método = lm » como argumento. Hemos establecido method=lm como lm significa Modelo lineal, que traza una línea de regresión lineal.

Pero podemos ver en el siguiente ejemplo que, aunque la línea de regresión lineal es una línea de mejor ajuste, no es una línea uniforme. Más adelante en este artículo, veremos cómo podemos trazar una línea suave usando múltiples enfoques.

Ejemplo:

R

library(ggplot2)
 
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
 
plot + geom_smooth(method = lm)

Producción:

Método 1: Usar el método «loess» de la función geom_smooth()

Podemos trazar una línea suave usando el método “ loess ” de la función geom_smooth(). La única diferencia, en este caso, es que hemos pasado method=loess, a diferencia de lm en el caso anterior. Aquí, «loess» significa » ajuste de regresión local «. Este método traza una línea de regresión local suave.

Sintaxis: 

geom_smooth(método = loess )

Ejemplo:

R

library(ggplot2)
 
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
 
plot + geom_smooth(method = loess)

Producción:

Método 2: Uso de la interpolación polinomial

También podemos usar la fórmula: y~ploy(x,3), junto con el método del modelo lineal, que nos da la misma línea suave que en el ejemplo anterior. Pasa “ se ” como FALSO en el argumento. De forma predeterminada, el valor de » se » sigue siendo VERDADERO, lo que da como resultado trazar un intervalo de confianza alrededor de la línea uniforme. 

Sintaxis: 

geom_smooth(método = “lm”, fórmula = y ~ poly(x, 3) , se = FALSO)

Ejemplo:

R

library(ggplot2)
 
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
 
plot + geom_smooth(method = "lm", formula = y ~ poly(x, 3), se = FALSE)

Producción:

 

Método 3: Uso de la función stat_smooth() con el método «loess»

stat_smooth() y geom_smooth() son alias. Ambos tienen los mismos argumentos y ambos se utilizan para trazar una línea suave. Podemos trazar una línea suave usando el método » loess » de la función stat_smooth() . La única diferencia, en este caso, es que hemos pasado method= loess , a diferencia de lm en el caso anterior. Aquí, «loess» significa «ajuste de regresión local» . Este método traza una línea de regresión local suave.

Sintaxis : 

stat_smooth(método = loess)

Ejemplo:

R

library(ggplot2)
 
plot <- ggplot(USArrests, aes(Murder, Assault)) + geom_point()
 
plot + stat_smooth(method = loess)

Producción:

Método 4: interpolación spline

La regresión spline es un mejor método, ya que supera las deficiencias de la regresión polinomial, ya que la regresión polinomial solo pudo expresar una cantidad particular de curvatura. En palabras simples, los splines son funciones polinómicas por partes.

Para dibujar una spline, use la función spline al pasar el marco de datos para el trazado.

Sintaxis: 

spline (atributos)

Ejemplo:

R

library(ggplot2)
 
spline.d <- as.data.frame(spline(USArrests$Murder, USArrests$Assault))
 
plot <- ggplot(USArrests, aes(x = Murder, y = Assault))+geom_point() +
geom_line(data = spline.d, aes(x = x, y = y))
plot

Producción:

Publicación traducida automáticamente

Artículo escrito por sudhanshublaze y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *