IN2039: Visualización de Datos
Departamento de Ingeniería Industrial
Enfocarnos en 1 variable categórica.
Introducción
Resúmenes estadísticos
Gráfica de barras
Gráfica circular y Actividad
Transformando variables categóricas
Hoy usaremos R para construir gráficas y tablas. Para esto, usaremos las librerías que ya vimos antes como readxl
, ggplot2
, ggformula
, y dplyr
.
Carguémoslas en R antes de comenzar.
Ilustraremos los conceptos de hoy usando el conjunto de datos penguins.xlsx
.
Súbelo a Google Colab y cárgalo en R usando el siguiente código.
En Google Colab, el archivo debe de estar en la carpeta llamada “content” o “contenido.”
Hoy nos enfocaremos en visualizar las variables categóricas: species
, island
y sex
.
A pesar de que la variables species
, island
y sex
son claramente categóricas, R no reconoce esto.
Por default, R determina que esas variables son carácter o chr
porque están compuestas por texto.
En R, las variables categóricas se conocen como
factor
ofct
.
Para asegurarnos que R sepa que la variable es categórica o fct
, usamos la función mutate_at()
de dplyr
:
Nota que acabamos de reemplazar el objeto penguins_data
con su nueva versión.
Ahora, las etiquetas de las variables son fct
.
Un resumen estadístico nos ayuda a resumir un conjunto de observaciones de una manera simple.
Los resúmenes estadísticos más utilizados para datos categóricos son:
La frecuencia de una categoría es el número de observaciones que pertenecen a esa categoría.
La frecuencia relativa es la frecuencia dividida por el número total de observaciones.
Resume una variable categórica contando los valores por categoría.
Especie | Frecuencia |
---|---|
Adelie | 152 |
Chinstrap | 68 |
Gentoo | 124 |
Total | 344 |
Frecuencia: Número de observaciones en cada categoría.
Total: Suma total de observaciones.
Para construir una tabla de frecuencia en dplyr, usamos las funciones group_by()
, summarise()
, y n()
.
La función group_by()
toma una tabla existente y la convierte en una tabla agrupada donde las operaciones se realizan “por grupo”.
La función n()
cuenta los valores de una categoría.
El código se lee:
Del objeto
penguins_data
, agrupa los datos por la variablespecies
, y resume los datos usando el número de elementos por categoría (n()
).
Resume una variable categórica calculando la proporción de valores por categoría.
Especie | Frecuencia relativa |
---|---|
Adelie | 0.442 |
Chinstrap | 0.198 |
Gentoo | 0.360 |
Suma | 1 |
Representa visualmente una tabla de frecuencias o frecuencias relativas.
La frecuencia (o frecuencia relativa) se representa por una barra de altura proporcional.
Si quieres graficar la frecuencia relativa, usa la función gf_percents
.
Usando las herramientas para gráficos en ggplot, podemos mejorar el código anterior para que la gráfica se vea así.
Se construye dividiendo un círculo en varias porciones que representan las categorías de la variable.
El diámetro del círculo comprendido por una categoría es su frecuencia relativa.
Permite dar un vistazo rápido a las proporciones de cada categoría.
Preguntale a ChatGPT
island
en penguin_data
.20:00
Aplica los principios del diseño gráfico.
Podemos mejorar gráficas de variables categóricas usando estas técnicas:
Re-etiquetar las categorías para que sean más informativas.
Re-ordenar las categorías para que sigan su orden natural.
Colapsar categorías para simplificar la gráfica.
Este conjunto de datos contiene información recopilada por el Servicio del Censo de EE. UU. sobre viviendas en el área de Boston, Massachusetts.
Los datos están en Boston_dataset.xlsx
. Súbelos a Google Colab y cárgalos en R usando el siguiente comando.
# A tibble: 6 × 14
crim zn indus chas nox rm age dis rad tax ptratio black
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
1 0.00632 18 2.31 0 0.538 6.58 65.2 4.09 Low 296 15.3 397.
2 0.0273 0 7.07 0 0.469 6.42 78.9 4.97 Low 242 17.8 397.
3 0.0273 0 7.07 0 0.469 7.18 61.1 4.97 Low 242 17.8 393.
4 0.0324 0 2.18 0 0.458 7.00 45.8 6.06 Low 222 18.7 395.
5 0.0690 0 2.18 0 0.458 7.15 54.2 6.06 Low 222 18.7 397.
6 0.0298 0 2.18 0 0.458 6.43 58.7 6.06 Low 222 18.7 394.
# ℹ 2 more variables: lstat <dbl>, medv <dbl>
Nos concentraremos en las siguientes variables:
chas
: Si la casa limita con el río Charles (1: Si y 0: No)
rad
: Indice de accesibilidad a carreteras radiales (Low
, Medium
, High
).
Asegúrate de que R sabe que esas variables son categóricas.
Vamos a construir una gráfica de barras de chas
.
Sin embargo, las categorías en la gráfica no son informativas.
Lo mejor es re-nombrar las categorías de la variable chas
para que la gráfica de barras de mas información al usuario.
unique()
.mutate()
y case_match()
.Boston_dataset = Boston_dataset %>%
mutate(chas = case_match(chas, "0" ~ "No", "1" ~ "Si"))
Boston_dataset %>% select(crim, zn, indus, chas) %>% head()
# A tibble: 6 × 4
crim zn indus chas
<dbl> <dbl> <dbl> <chr>
1 0.00632 18 2.31 No
2 0.0273 0 7.07 No
3 0.0273 0 7.07 No
4 0.0324 0 2.18 No
5 0.0690 0 2.18 No
6 0.0298 0 2.18 No
Mucho mejor 😃
Ahora, construyamos una gráfica de barras de rad
.
Las categorías no siguen un orden natural de izquierda a derecha: Low
, Medium
, y High
.
Para tener el orden de las categorías deseado, debemos de ser más explícitos al definir la variable categórica en R.
Mucho mejor 😃
Algunas variables categóricas tienden a tener muchas categorías. Por ejemplo, los estados de un pais o códigos postales. En estos casos, puede ser difícil visualizar de todas las categórias en una sola gráfica.
Una estrategia para desarrollar una visualización efectiva es colapsar categorías.
Por ejemplo, en la variable rad
, podemos collapsar las categorías Medium
y High
en una sola categoría llamada Other
.
Para colapsar categorías en dplyr, usamos la función case_when()
junto con mutate()
. La función case_when()
permite remplazar categorías usando expreciones lógicas en variables específicas.
# A tibble: 6 × 14
crim zn indus chas nox rm age dis rad tax ptratio black
<dbl> <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
1 0.00632 18 2.31 No 0.538 6.58 65.2 4.09 Low 296 15.3 397.
2 0.0273 0 7.07 No 0.469 6.42 78.9 4.97 Low 242 17.8 397.
3 0.0273 0 7.07 No 0.469 7.18 61.1 4.97 Low 242 17.8 393.
4 0.0324 0 2.18 No 0.458 7.00 45.8 6.06 Low 222 18.7 395.
5 0.0690 0 2.18 No 0.458 7.15 54.2 6.06 Low 222 18.7 397.
6 0.0298 0 2.18 No 0.458 6.43 58.7 6.06 Low 222 18.7 394.
# ℹ 2 more variables: lstat <dbl>, medv <dbl>
El colapsamiento de categorías simplifica nuestra gráfica.
También, nos permite enfatizar alguna categoría como Low
y ver se compara con las otras categorías (como un todo).
Para guardar una gráfica de ggplot2, primero guardamos la gráfica en un objeto de R.
Luego, usamos la función ggsave()
.
Algunos de los argumentos arriba son:
width
: ancho del gráfico.height
: altura del gráfico.units
: unidades de medición.dpi
: resolución del gráfico.Tecnológico de Monterrey