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).
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
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
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.