---
title: "Clase 3. Explorando datos categóricos"
subtitle: "Contenidos conceptuales"
output: 
  html_document:
    toc: TRUE
    toc_float: TRUE
author: "Germán Rosati"
date: "`r format(Sys.time(), '%d %B, %Y')`"
theme: Boadilla
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=FALSE)
```

```{r message=FALSE, warning=FALSE, include=FALSE, paged.print=FALSE}
knitr::opts_chunk$set(echo=TRUE, message=FALSE, warning=FALSE, tidy=TRUE)
```

```{r warning=TRUE, include=FALSE}
library(tidyverse)
library(eph)
df <- get_microdata(year = 2021, trimester = 2, type = "individual")
df <- organize_labels(df=df, type='individual') # Vamos a etiquetar la base
df <- df %>% mutate_at(vars(REGION, CH03, CH04, CH07:CAT_INAC), ~as.character(.))

df <- df %>%
        mutate(REGION = if_else(REGION == '44', 'Patagonia', REGION))
```

## Tablas de contingencia (dos variables)
La siguiente tabla nos resume la condición de actividad en función del sexo.
```{r echo=FALSE}
df %>%
  filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  janitor::tabyl(ESTADO, CH04) %>%
  janitor::adorn_totals(where = c('row','col')) %>%
  gt::gt()  
```

Cada valor en la tabla (celda) representa la cantidad de veces que una combinación particular de valores ocurrieron. Asi, Por ejemplo, la tabla nos dice que hubo 12.147 personas inactivas que eran mujeres. Los *totales de columna* proveen información sobre el total de casos para cada columna y lo propio sucede con los *totales de fila*-

Otra forma común de representar esto es mediante un gráfico "facetado":

```{r echo=FALSE}
df %>%
    filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  group_by(CH04, ESTADO) %>%
  summarise(n=n()) %>%
  ggplot() + 
    geom_col(aes(x=ESTADO, y=n)) +
    facet_wrap(~CH04) +
    theme_minimal()
```

El gráfico anterior nos muestra la misma información que la tabla: cada panel es una de las columnas de la tabla, en el eje X encontramos las filas de la tabla y en el eje Y el conteo de valores. Sin embargo, falta algo...

## Visualizando dos variables categóricas
### Gráficos de barra con dos variables
Podemos mostrar las distribuciones de dos variables categóricas en un gráfico de barras al mismo tiempo. Estos gráficos suelen ser útiles para visualizar la relación entre dos variables categóricas. La figura siguiente muestra tres gráficos de este tipo que visualizan la relación entre sexo y condición de actividad. El siguiente es un gráfico de barras apiladas:

```{r echo=FALSE}
df %>%
    filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  group_by(CH04, ESTADO) %>%
  summarise(n=n()) %>%
  ggplot() + 
    geom_col(aes(x=CH04, y=n, fill=ESTADO), position="stack") +
    theme_minimal()
```

Este gráfico muestra que las mujeres son más que los varones. Es difícil decir, basándose únicamente en este diagrama, cómo las diferentes condiciones de actividad varían según sexo. Pareciera ser que los varones están ocupadas en mayor medida.

La gráfica B es una gráfica de barras "desplazadas".
```{r echo=FALSE}
df %>%
    filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  group_by(CH04, ESTADO) %>%
  summarise(n=n()) %>%
  ggplot() + 
    geom_col(aes(x=CH04, y=n, fill=ESTADO), position='dodge') +
    theme_minimal()
```

Este gráfico muestra claramente que dentro de cada sexo la principal forma de actividad es diferente: ocupados en varones, inactivas en mujeres.

Finalmente, el gráfico C es un gráfico de barras estandarizado (también conocido como gráfico de barras rellenas). 

```{r echo=FALSE}
df %>%
    filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  group_by(CH04, ESTADO) %>%
  summarise(n=n()) %>%
  ggplot() + 
    geom_col(aes(x=CH04, y=n, fill=ESTADO), position = 'fill') +
    theme_minimal()
```


Este gráfico muestra con mayor claridad que la condición de actividad más común entre mujeres es la inactividad y entre los varones la ocupación. A su vez, la proporción de desocupados es muy similar entre varones y mujeres.

El gráfico de barras apiladas es más útil cuando es razonable asignar una variable como variable explicativa (aquí, sexo `CH04`) y la otra variable como respuesta (aquí, condición de actividad `ESTADO`), ya que estamos agrupando primero por una variable y luego separándola por las demás.

Los diagramas de barras esquivadas son más agnósticos en su visualización sobre qué variable, si alguna, representa la variable explicativa y cuál la variable de respuesta. También es fácil discernir el número de casos en cada una de las seis combinaciones de grupos diferentes. Sin embargo, una desventaja es que tiende a requerir más espacio horizontal, lo que puede apreciarse en la mayor estrechez del segundo gráfico en comparación con los otros dos. Asimismo, cuando los tamaños de los grupos difieren considerablemente, resulta más difícil evaluar la existencia de una asociación entre las variables.

El gráfico de barras apiladas estandarizado es útil si la variable principal en el gráfico de barras apiladas está relativamente desequilibrada. En este caso la distribucion por `CH04` no está muy desequilibrada pero aún así resulta más complejo en ese gráfico de barras apiladas simple verificar una asociación. La principal desventaja de la versión estandarizada es que perdemos todo sentido de cuántos casos representa cada una de las barras.

## Porcentajes de filas y columnas
En las secciones anteriores, inspeccionamos visualizaciones de dos variables categóricas en gráficos de barras. Sin embargo, no hemos discutido cómo se calculan los valores. En esta sección investigaremos cómo calcular las diferentes proporciones en una tabla de contingencia. 

La siguiente tabla muestra las *proporciones por fila* para la primera tabla que vimos antes. Las mismas se calculan como los conteos divididos por los totales de las filas. 

El valor 12147 en la intersección de mujer e inactivo se reemplaza por: $\frac{12147}{19765} = 0.615$. Entonces, ¿qué representa 0,615? Corresponde a la proporción de encuestades inactivas que son mujeres.

```{r echo=FALSE}
df %>%
  filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  janitor::tabyl(ESTADO, CH04) %>%
  janitor::adorn_totals(where = c('row','col')) %>%
  janitor::adorn_percentages(denominator = 'row') %>%
  gt::gt() %>%
  gt::fmt_number(
          columns = c(-ESTADO),
          decimals=3)
```
Una tabla de contingencia con las *proporciones por columnas* se calcula de manera similar, donde cada una se calcula como el recuento dividido por el total de la columna correspondiente. La siguiente es una tabla de este tipo. Podemos ver, entonces, que el 56.5% de las mujeres son inactivas. Este valor es notablemente superior al de los varones (39.2%). A su vez, los varones tienen una mayor tasa de ocupación. Esto constituye evidencia de que las variables pueden estar asociadas.

```{r echo=FALSE}
df %>%
  filter(ESTADO %in% c("Ocupado", "Desocupado", "Inactivo")) %>%
  janitor::tabyl(ESTADO, CH04) %>%
  janitor::adorn_totals(where = c('row','col')) %>%
  janitor::adorn_percentages(denominator = 'col') %>%
  gt::gt() %>%
  gt::fmt_percent(
          columns = c(-ESTADO),
          decimals=2)
```

Las proporciones de fila y columna también pueden considerarse proporciones condicionales, ya que nos informan sobre la proporción de observaciones en un nivel dado de una variable categórica condicional en el nivel de otra variable categórica.

## Comparando datos numéricos en diferentes grupos
Algunas de las preguntas de investigación más interesantes surgen del análisis y la comparación de variables cuantitativas entre diferentes grupos. En esta sección, ampliaremos algunos métodos que ya hemos visto para hacer gráficos de datos numéricos de múltiples grupos, así como también presentaremos algunos métodos nuevos para comparar datos numéricos entre grupos.

Vamos a analizar y comparar el ingreso total familiar promedio, la cantidad promedio de miembros por hogar y la edad promedio de la población en las 6 regiones que releva la EPH.

```{r echo=FALSE}
df %>%
        group_by(CODUSU, NRO_HOGAR) %>%
        mutate(cant_miembros=n()) %>%
        ungroup() %>%
        group_by(REGION) %>%
        summarise(ifpc_medio = weighted.mean(IPCF, w=PONDIH),
                  edad_media = weighted.mean(CH06, w=PONDERA),
                  cantidad_miembros = weighted.mean(cant_miembros, w=PONDERA)) %>%
        arrange(desc(ifpc_medio)) %>%
        gt::gt() %>%
        gt::fmt_currency(
          columns = ifpc_medio,
          decimals=2
        ) %>%
        gt::fmt_number(
                columns=c(edad_media, cantidad_miembros),
                decimals = 2)
``` 

### Para discutir...
- ¿Cuáles son las variables que están en juego acá? 
- ¿Qué nivel de medición tiene cada una de ellas?

Se observa que la Patagonia es la región que mayores ingresos per cápita muestra y de las de menores tamaño promedio de los hogares. En contraste, la zona del Nordeste y Noroeste son las que menores ingresos per cápita familiares presentan y que mayores tamaños medios de hogar presentan.