Laboratorio 5. Periodismo de Datos.
Vamos a seguir explorando las tablas de Contingencia para cruzar dos o mas variables entre si, asi como seguir practicando el uso de las bases de datos etiquetadas.
- El día de hoy vamos a revisar:
Tareas: Ver para que sirve cada uno de los paquetes que utilizamos.
Ejemplo: Utilizaremos una base de datos de admisiones a cierta universidad para ver si hay una discriminación por género en los procesos de admisión.
Breve Comercial
Este ejemplo viene de la clase 5 del curso de la Escuela de Métodos de Modelos estadísticos de Javier Márquez [@JMarquezP](https://twitter.com/JMarquezP). Si estan interesados en el programa, la liga es la siguiente:
Igualmente, para entender mejor el contexto de este problema, se recomienda leer el siguiente artículo de Medium.
Librerías a utilizar.
Utilizaremos las siguientes librerías:
sjlabelled, para poner etiquetas a nuestras tibbles y data.frames.sjmisc, para poder realizar cruces de variables en bases de datos.tidyverse, para manipular bases de datos y usar la pipa%>%.
Leemos la base de datos proveniente de la siguiente dirección web: https://raw.githubusercontent.com/JuveCampos/presentaciones/master/PdD2020/Admisiones.csv
Ad <- read_csv("https://raw.githubusercontent.com/JuveCampos/presentaciones/master/PdD2020/Admisiones.csv")
head(Ad)## # A tibble: 6 x 3
## Admitido Sexo Departamento
## <dbl> <dbl> <chr>
## 1 1 1 A
## 2 1 1 A
## 3 1 1 A
## 4 1 1 A
## 5 1 1 A
## 6 1 1 A
Esta base de datos contiene información de solicitudes de admision estudiantiles a diversos programas de licenciatura de una muy reconocida universidad de los Estados Unidos.
Contiene 3 columnas, las cuales son:
Admitido, la cual nos dice si un estudiante fué admitido o fué rechazado del programa de la universidad al que solicitó entrar.Sexo, el sexo del solicitante.Departamento, el departamento académico de la Universidad al cual solicitó el ingreso.
Etiquetando variables.
A partir de esta base de datos, vamos a generar variables etiquetadas.
Les pegamos el post-it encima.
Asignación de claves a los valores de la variable.
Ahora generamos las claves de los datos de las variables.
Claves:
- En la columna Admitido:
1: admitido; 0: rechazado
- En la columna Sexo:
1: Hombre; 2:Mujer
En la columna departamento, cada letra hace referencia a un Departamento Académico distinto, teniendo los siguientes departamentos:
A,B,C,D,EyF.Recodemos, digo, recordemos como es el formato para hacer recodificación de una variable con el paquete
sjmisc:
“ClaveVieja1 = ClaveNueva1 [TextoEtiqueta1];
ClaveVieja2 = ClaveNueva2 [TextoEtiqueta2];
…
ClaveViejaN = ClaveNuevaN [TextoEtiquetaN]”
Análisis de los datos: generando flat_tables.
Ahora vamos a hacer los cruces de las variables. Recordemos del último laboratorio que los cruces los podemos hacer mediante las tablas de contingencia, las cuales son tablas que se emplean para registrar y analizar la asociación entre dos o más variables, habitualmente de naturaleza cualitativa (nominales u ordinales).
- En este caso… ¿Qué nos interesa analizar?
Dado que sospechamos que en esta escuela hay una discriminación por género en el proceso de admisión, vamos a analizar primero las proporciones de alumnos rechazados y aceptados dentro del proceso de admisión.
## Sexo Hombre Mujer
## Admitido
## Rechazado 53.88 46.12
## Admitido 68.26 31.74
# Grafica de admitidos:
Ad %>%
filter(Admitido == 1) %>%
group_by(Sexo) %>%
count() %>%
ggplot(aes(x = as_factor(Sexo), y = n, fill = as_factor(Sexo))) +
geom_col() +
scale_fill_manual(values = c("blue", "yellow"))## Sexo Hombre Mujer
## Admitido
## Rechazado 55.48 69.65
## Admitido 44.52 30.35
¿Que nos dice la tabla anterior?
Que del total de mujeres que solicitaron admisión, fueron rechazadas casi el 70 % de ellas, mientras que de los hombres que solicitaron admisión, tan solo fueron rechazados el 55 %.
¿A qué conclusión llegamos entonces al ver estas tablas? Comenten entre todos.
Desagregando los datos por Departamento.
Hay una variable que hace falta analizar: la admisión por departamento.
Para esto, vamos a desagregar los datos por departamento, para ver si hay departamentos que aportan más a la discriminación en las admisiones por género.
¿Cómo se les ocurre que podamos afrontar esto analizando por departamento?. Comenten entre todos.
## [1] "A" "B" "C" "D" "E" "F"
## Departamento A B C D E F
## Admitido Sexo
## Rechazado Hombre 313 207 205 279 138 351
## Mujer 19 8 391 244 299 317
## Admitido Hombre 512 353 120 138 53 22
## Mujer 89 17 202 131 94 24
## Departamento A B C D E F
## Admitido Sexo
## Rechazado Hombre 33.55 35.38 22.33 35.23 23.63 49.16
## Mujer 2.04 1.37 42.59 30.81 51.20 44.40
## Admitido Hombre 54.88 60.34 13.07 17.42 9.08 3.08
## Mujer 9.54 2.91 22.00 16.54 16.10 3.36
## Sexo Hombre Mujer
## Admitido
## Rechazado 94.28 5.72
## Admitido 85.19 14.81
# Grafica
Ad %>%
group_by(Departamento, Sexo, Admitido) %>%
count() %>%
# Aqui contamos los admitidos y rechazados por Dpto y Sexo
filter(Departamento == "A") %>%
# Aqui nos quedamos solo con los del Dpto. A
ggplot(aes(x = as_factor(Sexo),
y = n,
fill = as_factor(Admitido))) +
# Aquí declaramos los elementos Estéticos (los canales de Segasi)
geom_col(position = "dodge") ## Sexo Hombre Mujer
## Admitido
## Rechazado 96.28 3.72
## Admitido 95.41 4.59
# Grafica
Ad %>%
group_by(Departamento, Sexo, Admitido) %>%
count() %>%
# Aqui contamos los admitidos y rechazados por Dpto y Sexo
filter(Departamento == "B") %>%
# Aqui nos quedamos solo con los del Dpto. A
ggplot(aes(x = as_factor(Sexo),
y = n,
fill = as_factor(Admitido))) +
# Aquí declaramos los elementos Estéticos (los canales de Segasi)
geom_col(position = "dodge") # Aquí declaramos los elementos Geométricos (las marcas de Segasi)
# C
Ad %>%
filter(Departamento == "C") %>%
flat_table(Admitido, Sexo, margin = "row")## Sexo Hombre Mujer
## Admitido
## Rechazado 34.40 65.60
## Admitido 37.27 62.73
# Grafica
Ad %>%
group_by(Departamento, Sexo, Admitido) %>%
count() %>%
# Aqui contamos los admitidos y rechazados por Dpto y Sexo
filter(Departamento == "C") %>%
# Aqui nos quedamos solo con los del Dpto. A
ggplot(aes(x = as_factor(Sexo),
y = n,
fill = as_factor(Admitido))) +
# Aquí declaramos los elementos Estéticos (los canales de Segasi)
geom_col(position = "dodge") # Aquí declaramos los elementos Geométricos (las marcas de Segasi)
# D
Ad %>%
filter(Departamento == "D") %>%
flat_table(Admitido, Sexo, margin = "row")## Sexo Hombre Mujer
## Admitido
## Rechazado 53.35 46.65
## Admitido 51.30 48.70
# Grafica
Ad %>%
group_by(Departamento, Sexo, Admitido) %>%
count() %>%
# Aqui contamos los admitidos y rechazados por Dpto y Sexo
filter(Departamento == "D") %>%
# Aqui nos quedamos solo con los del Dpto. A
ggplot(aes(x = as_factor(Sexo),
y = n,
fill = as_factor(Admitido))) +
# Aquí declaramos los elementos Estéticos (los canales de Segasi)
geom_col(position = "dodge") # Aquí declaramos los elementos Geométricos (las marcas de Segasi)
# E
Ad %>%
filter(Departamento == "E") %>%
flat_table(Admitido, Sexo, margin = "row")## Sexo Hombre Mujer
## Admitido
## Rechazado 31.58 68.42
## Admitido 36.05 63.95
# Grafica
Ad %>%
group_by(Departamento, Sexo, Admitido) %>%
count() %>%
# Aqui contamos los admitidos y rechazados por Dpto y Sexo
filter(Departamento == "E") %>%
# Aqui nos quedamos solo con los del Dpto. A
ggplot(aes(x = as_factor(Sexo),
y = n,
fill = as_factor(Admitido))) +
# Aquí declaramos los elementos Estéticos (los canales de Segasi)
geom_col(position = "dodge") Gráficas
Realizaremos ahora gráficas para hacer la comparativa final:
# Librerias
library(ggplot2)
# Gr'aficas de admitidos
Ad %>%
group_by(Departamento, Sexo, Admitido) %>%
count() %>%
ggplot(aes(x = as_factor(Sexo), y = n, fill = as_factor(Admitido))) +
geom_col(position = "dodge") +
facet_grid(. ~ Departamento)