---
title: "Ayudantia 2"
output: html_document
---
## Uso de paquete tidyverse
Instalación y uso de tidyverse para gestión de bases de datos: filtros, tablas de distribución de frecuencia, análisis segmentados y tablas de contingencia
```{r}
install.packages("tidyverse")
install.packages("haven")
library(tidyverse)
library(haven)
```
```{r}
evaluation <- read_dta("evaluation.dta")
summary(evaluation)
```
Otra forma de ver la composición de la base de datos es con el comando `glimpse`
```{r}
glimpse(evaluation)
```
Ahora debemos buscar si alguna de nuestras variables tienes datos perdidos (Missing Values o NA). Al utilizar `is.na()` nos retorna un vector con valores FALSE (no es NA) o TRUE (es NA), la funcion `is.nan()` tiene la misma función, pero hay algunos casos en que el dato perdido se escribe como NAN. Al utilizar `sum()` contamos los casos en que el valor es TRUE, por lo tanto en la varibale `poverty_index` no hay datos perdidos. Hay algunas formas de reemplazar los valores NA por otros valores o eliminar las filas en donde exista un NA, para mayor información de esta función visitar el siguiente link https://statisticsglobe.com/r-is-na-function/
```{r}
sum(is.na(evaluation$poverty_index))
sum(is.nan(evaluation$poverty_index))
```
## Filtros
La variable `poverty_index` indica el indice de probreza del hogar, el cual va de 1 a 100. Para escoger un hogar es necesario que el indice sea menor o igual a 58, es decir, que todos los hogares que cumplan esa condición serán elegidos y por lo tanto tendran el valor 1 en la variable `elegible`.
```{r}
HogaresElegibles <- evaluation %>%
filter(poverty_index <= 58)
summary(HogaresElegibles$eligible)
```
```{r}
HogaresNoElegibles <- evaluation %>%
filter(poverty_index > 58)
summary(HogaresNoElegibles$eligible)
```
Otro comando importante al revisar una base de datos es `arrange()`, con este podemos ordenar por variables y encontrar patrones. En este caso ordenaremos la variable `health_expenditures` la cual indica el gasto en salud de bolsillo (per cápita al año). Para ver las diferencias filtraremos y veremos solo esta columna. Podemos observar que los hogares elegibles tienen menor gasto en salud.
```{r}
healtExp_Elegibles <- HogaresElegibles %>%
select(health_expenditures)
```
```{r}
healtExp_Elegibles %>%
arrange(desc(health_expenditures))
```
```{r}
healtExp_NoElegibles <- HogaresNoElegibles %>%
select(health_expenditures)
```
```{r}
healtExp_NoElegibles %>%
arrange(desc(health_expenditures))
```
## Análisis segmentados
Para realizar analisis segmentados es muy util el comando `group_by()`, el cual permite agrupar datos de acuerdo a las variables de una columna. A continuación se muestra el promedio de `health_expenditures` para cada valor en `educ_hh`, variable que indica la cantidad de años de escolaridad del o la jefe de hogar.
```{r}
library(dplyr)
HogaresElegibles %>% # Specify data frame
group_by(educ_hh) %>% # Specify group indicator
summarise_at(vars(health_expenditures), # Specify column
list(health_expenditures = mean)) # Specify function
```
```{r}
library(dplyr)
HogaresNoElegibles %>% # Specify data frame
group_by(educ_hh) %>% # Specify group indicator
summarise_at(vars(health_expenditures), # Specify column
list(health_expenditures = mean)) # Specify function
```
## Tablas de contingencia
Una tabla de contingencia es una herramienta utilizada en la rama de la estadística, la cual consiste en crear al menos dos filas y dos columnas para representar datos categóricos en términos de conteos de frecuencia. En este caso la utilizaremos para analizar las variables `eligible` y `enrolled`. La primera indica si el hogar califica para el programa y la segunda si el hogar ingreso al programa.
```{r}
table(evaluation$eligible, evaluation$enrolled, dnn = c("eligible", "enrolled"))
```
De la tabla anterior podemos obtener la siguiente información, los hogares que no son elegibles (`eligible = 0`) no pueden entrar al programa, por lo tanto, los 8570 hogares no elegibles tienen valor 0 en la variable `enrolled`; de los hogares elegibles (`eligible = 1`) 5328 no entraron al programa `enrolled = 0` y 5929 si entraron al programa `enrolled = 1`