El comportamiento que está viendo se debe a cómo se ggplot2
manejan los datos que están fuera de los rangos de los ejes del gráfico. Puede cambiar este comportamiento dependiendo de si usa scale_y_continuous
(o, de manera equivalente, ylim
) o coord_cartesian
para establecer rangos de eje, como se explica a continuación.
library(ggplot2)
ggplot(mtcars, aes(mpg, hp)) +
geom_point()
En el siguiente código, un punto con hp = 335 está fuera del rango y del gráfico. Además, debido a que solíamos scale_y_continuous
establecer el rango del eje y, este punto no se incluye en ninguna otra estadística o medida de resumen calculada por ggplot, como la línea de regresión lineal.
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
scale_y_continuous(limits=c(0,300)) +
geom_smooth(method="lm")
Warning messages:
1: Removed 1 rows containing missing values (stat_smooth).
2: Removed 1 rows containing missing values (geom_point).
En el siguiente código, el punto con hp = 335 todavía está fuera del rango y del gráfico, pero este punto se incluye, no obstante, en cualquier estadística o medida de resumen que calcula ggplot, como la línea de regresión lineal. Esto se debe a que solíamos coord_cartesian
establecer el rango del eje y, y esta función no excluye los puntos que están fuera de los rangos del gráfico cuando realiza otros cálculos sobre los datos.
Si compara este y el gráfico anterior, puede ver que la línea de regresión lineal en el segundo gráfico tiene una pendiente ligeramente más pronunciada, porque el punto con hp = 335 se incluye al calcular la línea de regresión, aunque no es visible en el gráfico. .
ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
coord_cartesian(ylim=c(0,300)) +
geom_smooth(method="lm")
y
eje de esa cuestión. Los valores están limitados entre 0 y 0.12 debido a esta función:ylim(0,0.12)