Análisis de estadísticas descriptivas y cálculos de probabilidad condicional.

DESCRIPCIÓN: Este conjunto de datos se obtuvo de la Sección de Estudios de Ingresos Dinámicos de la Universidad de Michigan. El propósito de los datos en esta aplicación es estudiar los factores que influyen en las mujeres casadas a participar en la fuerza laboral. Esta muestra contiene 200 observaciones. Las variables de la base de datos y sus categorías son las siguientes: • Columna 1 (AÑOA): Variable que indica si la esposa trabaja fuera del hogar en el año en que se toma la muestra (1 = sí, 0 = no). • Columna 2 (AÑOP): Variable indicadora si es que la esposa trabajó fuera de su hogar en el año previo al muestreo (1 = sí, 0 = no). • Columna 3 (INGESP): Ingresos del esposo en miles de dólares. • Columna 4 (EDAD): Edad del respondiente en años. • Columna 5 (EDUC): Nivel de educación del respondiente en años. • Columna 6 (RAZAN): Variable indicadora para la raza negra (1 = negra, 0 = no-negra). • Columna 7 (NIÑ1): Variable indicadora si es que hay niños en el hogar menores de dos años (1 = sí, 0 = no). • Columna 8 (NIÑ2): Variable indicadora si es que hay niños en el hogar entre 2 y 6 años (1 = sí, 0 = no).

Cargar librerías

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ ggplot2   3.5.1     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(scales)
## 
## Attaching package: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor

Cargar archivo

madres_trabajadoras <- read_xlsx('/Users/alondraixchelhuertatrevino/Desktop/TEC/8 SEMESTRE/Analisis Decisiones/Actividad Edwin/mujeres_trabajadoras.xlsx')

head(madres_trabajadoras)
## # A tibble: 6 × 8
##   ANIOA ANIOP INGESP  EDAD  EDUC RAZAN  NIN1  NIN2
##   <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     1   7.35    27    10     1     0     0
## 2     1     0   6.78    35    12     0     0     0
## 3     1     1   6.06    40    12     0     0     0
## 4     1     1   6.44    35    12     1     0     0
## 5     1     0   4.74    28    10     0     0     1
## 6     1     1   6.62    30    10     0     0     1

Preguntas

1.  ¿Qué proporción de mujeres no trabajaron ni al momento de la encuesta, ni el año anterior a la encuesta?
# estadísticas básicas
madres_trabajadoras %>%
  count(categoria = ifelse(ANIOA == 0 & ANIOP == 0, # para ambos años si no trabajó y ambas condiciones se cumplen
                           "No trabajó ningún año", 
                           "Trabajó al menos uno")) %>%
  mutate(prop = n / sum(n)) 
## # A tibble: 2 × 3
##   categoria                 n  prop
##   <chr>                 <int> <dbl>
## 1 No trabajó ningún año    50  0.25
## 2 Trabajó al menos uno    150  0.75
# visualización
madres_trabajadoras %>%
  count(categoria = ifelse(ANIOA == 0 & ANIOP == 0, # para ambos años si no trabajó y ambas condiciones se cumplen
                           "No trabajó ningún año", 
                           "Trabajó al menos uno")) %>%
  mutate(prop = n / sum(n)) %>%
  ggplot(aes(x = "", y = prop, fill = categoria)) +
    geom_col(width = 1, color = "white") +
    coord_polar(theta = "y") +
    geom_text(aes(label = paste0(round(prop * 100, 1), "%")),
              position = position_stack(vjust = 0.5)) +
    theme_void()

El 25% de las mujeres que respondieron no estaban trabajando en ningún año. Básicamente un cuarto de la población encuestada, 50 personas de 200.

2.  ¿Cómo se comportan los salarios del esposo, para mujeres que trabajan y para las que no trabajan?
# estadísticas básicas
madres_trabajadoras %>%
  mutate(
    trabaja = ifelse(ANIOA == 1, "Esposa trabaja", "Esposa no trabaja") # solo estoy considerando quienes sí están trabajando en el año "actual"
  ) %>%
  group_by(trabaja) %>%
  summarise(
    n = n(), 
    media = mean(INGESP, na.rm = TRUE),
    mediana = median(INGESP, na.rm = TRUE),
    sd = sd(INGESP, na.rm = TRUE),
    minimo = min(INGESP, na.rm = TRUE),
    maximo = max(INGESP, na.rm = TRUE)
  )
## # A tibble: 2 × 7
##   trabaja               n media mediana    sd minimo maximo
##   <chr>             <int> <dbl>   <dbl> <dbl>  <dbl>  <dbl>
## 1 Esposa no trabaja    65 10.0     7.80  8.48      0   54.3
## 2 Esposa trabaja      135  8.24    7.79  4.36      0   27.9
# visualización
madres_trabajadoras %>%
  mutate(
    trabaja = factor(ifelse(ANIOA == 1, "Con trabajo", "Sin trabajo"),
                     levels = c("Sin trabajo","Con trabajo"))
  ) %>%
  ggplot(aes(x = trabaja, y = INGESP, fill = trabaja)) +
    geom_boxplot(alpha = 0.7, outlier.size = 1) +
    scale_y_continuous(name = "Ingreso del esposo (miles USD)") +
    labs(
      x = "",
      title = "Distribución del ingreso del esposo dependiendo si la esposa trabaja"
    ) +
    theme_minimal() +
    theme(legend.position = "none")

Con la visualización se puede ver más facilmente donde se agrupan. Si bien, el promedio entre ambos grupos es casi el mismo, el grupo donde las mujeres no trabajan hay más outliers de parejas cuyos ingresos alcanzan hasta los 40 mil USD. Esto puede explicarnos un poco más de la dinámica familiar. Donde el hombre sea el único con trabajo, este será remunerado a una medida más alta que aquellos que no sean los únicos que trabajan.

3.  ¿Qué podemos decir de la edad de las mujeres incluidas en la muestra?
# estadísticas básicas
madres_trabajadoras %>%
  summarise(
    n = n(),
    media = mean(EDAD,   na.rm = TRUE),
    mediana = median(EDAD, na.rm = TRUE),
    sd = sd(EDAD,     na.rm = TRUE),
    minimo = min(EDAD,    na.rm = TRUE),
    maximo = max(EDAD,    na.rm = TRUE),
  )
## # A tibble: 1 × 6
##       n media mediana    sd minimo maximo
##   <int> <dbl>   <dbl> <dbl>  <dbl>  <dbl>
## 1   200  35.1      35  7.02     21     46
# visualización
ggplot(madres_trabajadoras, aes(x = factor(EDAD))) + 
  geom_bar(fill = "steelblue") +
  labs(
    x = "Edad (años)",
    y = "Frecuencia",
    title = "Distribución de la edad de las mujeres en la muestra"
  ) +
  theme_minimal()

La distribución de edad en las mujeres va desde los 21 a los 46 años. Los grupos más grandes son las personas de 46, 40 y 31 años de edad. Y los grupos que menos respondieron fueron los 21, 22 y 41 años de edad. En general las mujeres menores a 31 contestaron con menos frecuencia la encuesta.

4.  ¿Qué sucede con la proporción de las mujeres no trabajadoras, de acuerdo al nivel educativo?
# estadística 
madres_trabajadoras %>%
  group_by(EDUC) %>%
  summarise(
    total = n(),
    no_trabaja = sum(ANIOA == 0),
    prop_no = no_trabaja / total
  )
## # A tibble: 5 × 4
##    EDUC total no_trabaja prop_no
##   <dbl> <int>      <int>   <dbl>
## 1     7     6          1   0.167
## 2    10    24          7   0.292
## 3    12   153         55   0.359
## 4    16    11          2   0.182
## 5    18     6          0   0
# como puedo asumir la escolaridad a partir del numero de años, recodificaré para la cantidad de años
madres_trabajadoras %>%
  mutate(
    nivel = recode(EDUC,
      `7` = "Primaria",
      `10` = "Primaria",
      `12` = "Prepa",
      `16` = "Carrera",
      `18` = "Posgrado"
    ),
    nivel = factor(nivel,
      levels = c("Primaria", "Prepa", "Carrera", "Posgrado")
    )
  ) %>%
  group_by(nivel) %>%
  summarise(
    total = n(),
    no_trabaja = sum(ANIOA == 0),
    prop_no = no_trabaja / total
  )
## # A tibble: 4 × 4
##   nivel    total no_trabaja prop_no
##   <fct>    <int>      <int>   <dbl>
## 1 Primaria    30          8   0.267
## 2 Prepa      153         55   0.359
## 3 Carrera     11          2   0.182
## 4 Posgrado     6          0   0
# tomando eso en cuenta se hace más fácil la visualización para tu entendimiento
madres_trabajadoras %>%
  mutate(
    nivel = recode(EDUC,
      `7` = "Primaria",
      `10` = "Primaria",
      `12` = "Prepa",
      `16` = "Carrera",
      `18` = "Posgrado"
    ),
    nivel = factor(nivel,
      levels = c("Primaria", "Prepa", "Carrera", "Posgrado")
    )
  ) %>%
  group_by(nivel) %>%
  summarise(
    total      = n(),
    no_trabaja = sum(ANIOA == 0),
    prop_no    = no_trabaja / total
  )%>%
  ggplot(aes(x = nivel, y = prop_no)) +
  geom_col(fill = "steelblue") +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  labs(
    x = "Nivel Educativo",
    y = "Prop. no trabajadoras",
    title = "Proporción de mujeres no trabajadoras por nivel educativo"
  ) +
  theme_minimal()

A partir de haber pulido esta visualización, tenemos algunos hallazgos. La mayor parte de las mujeres que no trabajan concluyeron sus estudios en Preparatoria, luego siguen aquellos que concluyeron en primaria y finalmente las que concluyeron en carrera. Finalmente, resalta mucho el hecho de que ninguna mujer que no está trabajando actualmente, estudió posgrado.

5.  ¿Hay más mujeres trabajadoras con niños menores de dos años o mayores?
# estadisticas
madres_trabajadoras %>%
  filter(ANIOA == 1) %>% # para solo considerar a las mujeres trabajadores
  summarise(
    'Menores de 2 años' = sum(NIN1 == 1, na.rm = TRUE),
    `Entre 2 y 6 años` = sum(NIN2 == 1, na.rm = TRUE)
  ) %>%
  pivot_longer(
    cols = everything(),
    names_to = "grupo_edad",
    values_to = "conteo"
  )
## # A tibble: 2 × 2
##   grupo_edad        conteo
##   <chr>              <int>
## 1 Menores de 2 años      2
## 2 Entre 2 y 6 años      32
# visualización
madres_trabajadoras %>%
  filter(ANIOA == 1) %>%                    # sólo las que trabajan
  summarise(
    `Menores de 2 años` = sum(NIN1 == 1, na.rm = TRUE),
    `Entre 2 y 6 años` = sum(NIN2 == 1, na.rm = TRUE)
  ) %>%
  pivot_longer(
    cols = everything(),
    names_to = "grupo_edad",
    values_to = "conteo"
  ) %>% 
  ggplot(aes(x = grupo_edad, y = conteo, fill = grupo_edad)) +
  geom_col(show.legend = FALSE) +
  geom_text(aes(label = conteo), vjust = -0.5) +
  labs(
    x = "",
    y = "Número de trabajadoras",
    title = "Trabajadoras con niños según su edad"
  ) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +
  theme_minimal()

La mayor parte de las mujeres trabajadoras que tienen hijos tienen entre 2 y 6 años. Un análisis adicional a esta visualización sería la intersección de la edad de la madre, se pudiera calcular a qué edad tuvieron los hijos. También la intersección con el nivel educativo pueda ser interesante.

6.  ¿Qué proporción de mujeres negras trabajaron durante los dos años referidos en la muestra? ¿Y qué proporción de mujeres no negras trabajaron durante el mismo período?
# estats basicas
madres_trabajadoras %>%
  mutate(raza = ifelse(RAZAN == 1, "Negra", "No negra")) %>% # para renombrar
  group_by(raza) %>%
  summarise(
    prop = mean(ANIOA == 1 & ANIOP == 1, na.rm = TRUE), # que han trabajado ambos años
    .groups = "drop"
  )
## # A tibble: 2 × 2
##   raza      prop
##   <chr>    <dbl>
## 1 Negra    0.657
## 2 No negra 0.527
# vis
madres_trabajadoras %>%
  mutate(raza = ifelse(RAZAN == 1, "Negra", "No negra")) %>% # para renombrar
  group_by(raza) %>%
  summarise(
    prop = mean(ANIOA == 1 & ANIOP == 1, na.rm = TRUE), # que han trabajado ambos años
    .groups = "drop"
  ) %>%
  ggplot(aes(x = raza, y = prop, fill = raza)) +
    geom_col(width = 0.6) +
    geom_text(aes(label = percent(prop, accuracy = 0.1)), 
              vjust = -0.3, size = 4) +
    scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0,1)) +
    labs(
      x = NULL,
      y = "Proporción",
      title = "Mujeres que trabajaron ambos años, por raza"
    ) +
    theme_minimal() +
    theme(legend.position = "none")

En ambos grupos, más de la mitad de la población trabajó los dos años, sin embargo es interesante notar que las mujeres negras superan esta proporción en comparación con las mujeres no negras por casi 13 puntos porcentuales.

7.  ¿Qué podemos decir acerca de las características de las mujeres que trabajan?
# Estadísticas
madres_trabajadoras %>%
  filter(ANIOA == 1) %>%                    # solo las que trabajan en el año de la encuesta
  summarise(
    n = n(),
    pct_total = n() / nrow(madres_trabajadoras),
    edad_media = round(mean(EDAD,   na.rm = TRUE), 1),
    educ_media = round(mean(EDUC,   na.rm = TRUE), 1),
    ingreso_esposo_med = round(mean(INGESP, na.rm = TRUE), 1),
    ingreso_esposo_sd = round(sd(INGESP,   na.rm = TRUE), 1),
    negras = sum(RAZAN == 1),
    prop_negras = round(negras/n, 1)
  ) 
## # A tibble: 1 × 8
##       n pct_total edad_media educ_media ingreso_esposo_med ingreso_esposo_sd
##   <int>     <dbl>      <dbl>      <dbl>              <dbl>             <dbl>
## 1   135     0.675       36.1       12.1                8.2               4.4
## # ℹ 2 more variables: negras <int>, prop_negras <dbl>

A partir de la tabla anterior podemos tener una noción general de las características de SOLAMENTE las mujeres que trabajan. El promedio de cada categoría relevante en terminos de educación, edad, ingresos del esposo, y raza.