Saltar al contenido

¿Cuál es la diferencia entre geoms y stats en ggplot2?

Solución:

Esto solo pretende complementar la respuesta aceptada.

Según Hadley Wickkam, autor de ggplot2, en su libro ‘ggplot2: Elegant Graphics for Data Analysis’ (enlace aquí) en la p. 91, de la sección 5.2 ‘Creación de una trama capa por capa’:

Solo necesita configurar una estadística y una geom: cada geom tiene una estadística predeterminada y cada estadística tiene una geom predeterminada.

La respuesta aceptada anteriormente explica bien por qué los dos son diferentes. Esto está destinado a explicar por qué son difíciles de distinguir en la práctica: siempre que usa una capa geom, también está usando implícitamente una capa de estadísticas (incluso si es solo la transformación de identidad); del mismo modo, cada vez que usa una capa de estadísticas, también está usando implícitamente una capa geom.

Si está de acuerdo con los valores predeterminados utilizados por cualquiera de las capas, sería redundante indicar explícitamente ambas capas. Incluso si no está de acuerdo con los valores predeterminados proporcionados por cualquiera de las capas, puede modificar los valores predeterminados como parámetros para cada capa (es decir, puede modificar el geom predeterminado como un parámetro para pasar a cualquier stat_* función, y puede modificar la estadística predeterminada como un parámetro para pasar a cualquier geom_* función). En palabras de Hadley Wickham (misma fuente que arriba):

Puedes pasar params en ... (en cuyo caso los parámetros stat y geom se separan automáticamente)

Esto es algo difícil de entender conceptualmente, por eso también he tenido esta pregunta. En su artículo sobre la filosofía subyacente a ggplot2, que se encuentra aquí, en la Sección 4, una ‘Jerarquía de valores predeterminados’, Hadley Wickham explica las consideraciones prácticas detrás de este comportamiento predeterminado en términos de simplificar el código que de otra manera sería innecesariamente largo.

Por ejemplo, sin las especificaciones predeterminadas y utilizando la gramática de los gráficos únicamente, el código para un diagrama de dispersión simple podría verse así:

ggplot() +
layer(
data = diamonds, mapping = aes(x = carat, y = price),
geom = "point", stat = "identity", position = "identity"
) +
scale_y_continuous() +
scale_x_continuous() +
coord_cartesian()

Usando valores predeterminados para las escalas y coordenadas, podemos escribir algo como:

ggplot(data = Diamonds, aes(x = carat, y = price)) + 
layer(
geom = "point", stat = "identity", position = "identity"
)

Pero esto es todavía molestamente largo, por supuesto, ya que los valores de stat y position son solo "identity", que básicamente significa ‘no hacer nada’, entonces, ¿por qué tener que decir eso explícitamente?

sin embargo, el layer() La función no tiene valores predeterminados para stat o position – deben especificarse explícitamente en una llamada al layer() función.

Para evitar esto, Hadley hizo el geom_* funciones así como stat_* funciona como envoltorios del layer() función que tiene valores predeterminados tanto para el geom y stat parámetro. La diferencia entre el stat_* y geom_* funciones es qué parámetro tiene un inmutable (inmutable) valor predeterminado, stat o geom.

Fuente: http://ggplot2.tidyverse.org/reference/layer.html

Entonces para el geom_* funciones puede cambiar el valor predeterminado de la stat pero no el valor predeterminado de la geom parámetro, mientras que para el stat_* funciones puede cambiar el valor predeterminado de la geom pero no el valor predeterminado de la stat parámetro.

Una capa es una combinación de datos, estadísticas y geom con un posible ajuste de posición. Por lo general, las capas se crean utilizando geom_* o stat_* llamadas pero también se puede crear directamente usando esta función [the layer() function].

geoms significa “objetos geométricos”. Estos son los elementos centrales que ve en la trama, objetos como puntos, líneas, áreas, curvas.

stats significan “transformaciones estadísticas”. Estos objetos resumen los datos de diferentes maneras, como contar observaciones, crear una línea loess que se ajuste mejor a los datos o agregar un intervalo de confianza a la línea loess.

Como las geoms son el “núcleo” de la trama, estos son objetos obligatorios. Por otro lado, las estadísticas no son necesarias para producir una trama, pero pueden mejorar en gran medida la trama final.

Como señala @ eipi10 en los comentarios, estas distinciones son algo conceptuales ya que la mayoría de las geoms experimentan alguna transformación estadística antes de ser graficadas. Éstos incluyen geom_bar, geom_smooth, y geom_quantile. Algunas excepciones comunes en las que los datos se presentan en forma más o menos “sin procesar” son geom_point y geom_line y el menos utilizado geom_rug.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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