Visualización de datos para variables cuantitativas
Gráficos con R base
R base proporciona una serie de funciones para crear gráficos básicos
Algunas de las funciones más comunes son:
plot(): gráfico de dispersión
hist(): histograma
boxplot(): diagrama de caja y bigotes
Ejemplo con R base: Histograma
Histograma: muestra la distribución de una variable cuantitativa
La distribución se divide en intervalos o “bins”, y se cuenta la frecuencia de datos en cada intervalo
En R, se puede utilizar la función hist() para crear un histograma
Se puede personalizar el número de intervalos con el argumento breaks
Creando un histograma de capital suscrito
Utilizando la función hist() de R base
hist(supercias_limpio$capital_suscrito, breaks =5, main ="Histograma de Capital Suscrito", xlab ="Capital Suscrito", ylab ="Frecuencia")
Creando un histograma de capital suscrito
Una distribución con valores atípicos complica la visualización
Se puede utilizar la escala logarítmica para mejorar la visualización
hist(log(supercias_limpio$capital_suscrito), breaks =5, main ="Histograma de Capital Suscrito (log)", xlab ="Log(Capital Suscrito)", ylab ="Frecuencia")
Gráficos con ggplot2
ggplot2 es una librería de R que permite crear gráficos de alta calidad y personalizables
Utiliza el Grammar of Graphics para construir gráficos, definidos por capas diferentes
Gramatica de gráficos
Todo gráfico, según el Grammar of Graphics, tiene siete posibles capas:
Datos: conjunto de datos a visualizar
Estéticas: mapeo de variables a atributos visuales (color, forma, tamaño, etc.)
Geometrías: tipo de gráfico (puntos, líneas, barras, etc.)
Facetas: subdivisión de los datos en subgráficos
Estadísticas: resumen de los datos (media, mediana, etc.)
Coordenadas: sistema de coordenadas (cartesiano, polar, etc.)
Temas: aspecto visual del gráfico (colores, fuentes, etc.)
Gramatica de gráficos
Creando un histograma con ggplot2
Para crear un histograma con ggplot2, se utiliza la función ggplot() para definir los datos y las estéticas
Se añade una capa de geometría con geom_histogram()
Se pueden personalizar las etiquetas, títulos, colores, etc.
Replicando el histograma de capital suscrito con ggplot2
library(ggplot2)ggplot(supercias_limpio, aes(x = capital_suscrito)) +geom_histogram(bins =5) +labs(title ="Histograma de Capital Suscrito", x ="Capital Suscrito", y ="Frecuencia")
Mejorando el histograma con ggplot2
Este paquete permite una mayor personalización de los gráficos que R base
Definimos la longitud de los bins, el color de las barras, el color de fondo, etc.
El uso del pipe %>% permite encadenar funciones de manera más sencilla, combinando con dplyr
Histograma de capital suscrito mejorado con ggplot2
supercias_limpio %>%filter(capital_suscrito >0, capital_suscrito <2500000) %>%ggplot(aes(x = capital_suscrito)) +geom_histogram(bins =5, fill ="skyblue", color ="black") +labs(title ="Histograma de Capital Suscrito", x ="Capital Suscrito", y ="Frecuencia") +theme_minimal()
Eliminar valores atípicos con ggplot2
Se pueden filtrar los valores atípicos para mejorar la visualización
Se utiliza el rango intercuartil (IQR) para identificar los valores atípicos
Histograma de capital suscrito sin valores atípicos
supercias_limpio %>%filter(capital_suscrito >quantile(capital_suscrito, 0.25, na.rm = T) -1.5*IQR(capital_suscrito, na.rm = T) & capital_suscrito <quantile(capital_suscrito, 0.75, na.rm = T) +1.5*IQR(capital_suscrito, na.rm = T)) %>%ggplot(aes(x = capital_suscrito)) +geom_histogram(bins =5, fill ="skyblue", color ="black") +labs(title ="Histograma de Capital Suscrito", x ="Capital Suscrito", y ="Frecuencia") +theme_minimal()
Diagrama de caja (caja y bigotes)
El diagrama de caja y bigotes muestra la distribución de una variable cuantitativa
La caja representa el rango intercuartil (IQR), y los bigotes se extienden hasta los valores extremos
Se pueden identificar valores atípicos
Diagrama de caja generico
Creando un diagrama de caja con ggplot2
Utilizando la función geom_boxplot() de ggplot2
Creando un diagrama de caja con ggplot2
Geometrías para diferentes tipos de gráficos
geom_point(): gráfico de dispersión
geom_line(): gráfico de líneas
geom_bar(): gráfico de barras
geom_boxplot(): diagrama de caja y bigotes
geom_histogram(): histograma
geom_density(): densidad
geom_violin(): violín
geom_text(): texto
geom_label(): etiquetas
Se puede usar en combinación (ej. geom_point() + geom_line())
Distribuciones acumuladas
La distribución acumulada muestra la proporción de datos menores o iguales a un valor dado
Generalmente se construyen intervalos o bins y se calcula la frecuencia en cada intervalo
La frecuencia acumulada es la suma de las frecuencias de los intervalos anteriores (i.e. running total)
Generalmente primero se prepara una tabla de distrubución de frecuencias, se calculan frecuencias acumuladas absolutas (Frecuencia Acumulada) y relativas (dividiendo por el total de datos).
La ojiva es el gráfico de la distribución acumulada
Implementación en R
Se puede generar una tabla de frecuencias con la función cut() y un workflow dplyr con group_by() y summarise()
Se necesita decidir el número de intervalos o bins mediante breaks
cut divide los datos en intervalos, y table cuenta la frecuencia de datos en cada intervalo
Utilizando la función geom_line() de ggplot2, se puede crear la ojiva graficando la tabla calculada previamente
tabla_frecuencias %>%ggplot(aes(x = intervalo, y = frecuencia_acumulada, group =1)) +geom_line(color ="skyblue") +labs(title ="Ojiva de Capital Suscrito", x ="Intervalo", y ="Frecuencia Acumulada") +theme_minimal()
Análisis de datos categóricos
Generalmente, nos interesa la frecuencia de ocurrencia de categorías
La frecuencia relativa o porcentaje de cada categoría es útil para comparar entre categorías
Utilizamos tablas de frecuencias y gráficos para visualizar la distribución de categorías
Calculamos frecuencias con workflows dplyr con group_by() y summarise()
Para variables categóricas, se pueden utilizar diferentes tipos de gráficos
Algunos de los gráficos más comunes son:
Gráfico de barras
Gráfico de barras apiladas
Gráfico de pastel
Gráfico de barras
El gráfico de barras es una forma sencilla de visualizar la frecuencia de una variable categórica
En el eje x se muestran las categorías, y en el eje y la frecuencia
En algunos casos, es válido apilar barras para mostrar la frecuencia de subcategorías
Generalmente los gráficos de barras son verticales, pero también pueden ser horizontales
Utiles con un número moderado de categorías
Creando un gráfico de barras con ggplot2
Utilizando la función geom_bar() de ggplot2
Se puede personalizar el color, el orden de las barras, las etiquetas, etc.
La función geom_bar() cuenta automáticamente la frecuencia de cada categoría
Empresas por provincia
supercias_filtrado %>%ggplot(aes(x = provincia)) +geom_bar(fill ="skyblue", color ="black") +labs(title ="Empresas por Provincia", x ="Provincia", y ="Frecuencia") +theme_minimal()
Empresas por provincia
La funcion top_n() de dplyr permite seleccionar las n categorías más frecuentes
Se puede utilizar para filtrar las 5 provincias con más empresas
library(forcats)supercias_filtrado %>%count(provincia) %>%# Count rapidamente cuenta la frecuencia de cada categoriatop_n(5, n) %>%ggplot(aes(x =fct_reorder(provincia, n), y = n)) +geom_bar(stat ="identity", fill ="skyblue", color ="black") +labs(title ="Top 5 Provincias con más Empresas", x ="Provincia", y ="Frecuencia") +theme_minimal()
Empresas por provincia
geom_bar() y geom_col()
geom_bar() es una abreviatura de geom_bar(stat = "count"), que cuenta la frecuencia de cada categoría
geom_col() es una abreviatura de geom_bar(stat = "identity"), que utiliza los valores de la variable y para la altura de las barras
Se puede utilizar geom_col() para gráficos de barras con valores precalculados, es decir, cuando ya se tiene la frecuencia de cada categoría
Es más flexible que geom_bar(), ya que permite utilizar valores precalculados, no solo frecuencias
Columnas apiladas
En algunos casos, es útil apilar las barras para mostrar la frecuencia de subcategorías
Se puede utilizar el argumento fill en aes() para apilar las barras, utilizando una variable categórica adicional
Se recomienda utilizar geom_col() y adecuadamente prepara los datos en formato largo (long format) - realizar un pivot_longer() con tidyr si es necesario
Empresas por provincia y sector (CIIU)
Ordenamos las primeras 5 provincias con más empresas y los CIIU de nivel 1
supercias_filtrado %>%group_by(provincia, ciiu_nivel_1) %>%summarise(frecuencia =n()) %>%filter(provincia %in%c("EL ORO", "MANABI", "AZUAY", "PICHINCHA", "GUAYAS")) %>%ggplot(aes(x = provincia, y = frecuencia, fill = ciiu_nivel_1)) +geom_col(position ="stack") +labs(title ="Empresas por Provincia y Sector (CIIU)", x ="Provincia", y ="Frecuencia",fill ="Sector (CIIU)") +theme_minimal()
Empresas por provincia y sector (CIIU)
Gráfico de pastel
El gráfico de pastel es una forma sencilla de visualizar la proporción de cada categoría en un conjunto de datos
Se utiliza para mostrar la distribución de categorías en un conjunto de datos
En R, se puede utilizar la función geom_bar() con el argumento coord_polar() para crear un gráfico de pastel
Sin embargo, las buenas prácticas de visualización sugieren que los gráficos de barras son más efectivos para comparar categorías
Empresas por provincia
supercias_filtrado %>%count(provincia) %>%ggplot(aes(x ="", y = n, fill = provincia)) +geom_bar(stat ="identity") +coord_polar("y") +labs(title ="Empresas por Provincia", x ="", y ="") +theme_minimal()
Empresas por provincia
Facetas o paneles
Las facetas o paneles permiten dividir un gráfico en subgráficos según una variable categórica
Se pueden utilizar para comparar la distribución de una variable en diferentes categorías
En ggplot2, se puede utilizar la función facet_wrap() o facet_grid() para crear facetas
Se especifica la variable categórica que se utilizará para dividir el gráfico en subgráficos
Empresas por provincia y sector (CIIU)
Utilizamos facetas para mostrar la distribución de empresas por provincia y sector (CIIU) en subgráficos
supercias_filtrado %>%group_by(provincia, ciiu_nivel_1) %>%summarise(frecuencia =n()) %>%ggplot(aes(x = provincia, y = frecuencia, fill = ciiu_nivel_1)) +geom_col(position ="stack") +labs(title ="Empresas por Provincia y Sector (CIIU)", x ="Provincia", y ="Frecuencia",fill ="Sector (CIIU)") +facet_wrap(~ciiu_nivel_1) +theme_minimal()
Empresas por provincia y sector (CIIU)
Editando gráficos con ggplot2: theme()
La función theme() permite personalizar la apariencia de un gráfico
Se pueden modificar aspectos como el color de fondo, los ejes, las etiquetas, etc.
Estructura de theme()
Se estructura a partir de cuatro tipos de elementos: element_text(), element_line(), element_rect(), element_blank()
element_text(): textos en el gráfico
element_line(): líneas en el gráfico
element_rect(): rectángulos en el gráfico (por ejemplo, el fondo o los ejes)
element_blank(): elementos en blanco, para eliminarlos
Ejemplo: modificar la leyenda de un gráfico
Se puede modificar la apariencia de la leyenda con theme()
Puesto que la leyenda es un elemento de texto, se utiliza element_text()
Se puede modificar el tamaño, el color, la fuente, etc.
Modificar la leyenda de un gráfico
supercias_filtrado %>%ggplot(aes(x = provincia)) +geom_bar(fill ="skyblue", color ="black") +labs(title ="Empresas por Provincia", x ="Provincia", y ="Frecuencia") +theme_minimal() +theme(legend.text =element_text(size =10, color ="blue", face ="bold"))
Modificar la leyenda de un gráfico
Modificar la apariencia del texto del eje
Se puede modificar la apariencia del texto del eje con theme()
Se utiliza axis.text para modificar el texto de los ejes, también axis.title para los títulos de los ejes
Se puede modificar el tamaño, el color, la fuente, etc.
Modificar la apariencia del texto del eje
supercias_filtrado %>%ggplot(aes(x = provincia)) +geom_bar(fill ="skyblue", color ="black") +labs(title ="Empresas por Provincia", x ="Provincia", y ="Frecuencia") +theme_minimal() +theme(axis.text.x =element_text(size =10, color ="red", angle =45),axis.text.y =element_text(size =10, color ="blue"),axis.title =element_text(size =12, color ="green", face ="bold"))