Introducción

Fuente de datos

https://www.ine.gov.py/microdatos/register/EPCH_ANUAL/EPHC_2023_ANUAL/REG02_ANUAL_2023.csv

Hipótesis planteada

Demostrar que la probabilidad de estar desocupado de un joven en áreas urbanas en el sector no agrícola esta determinado por el nivel de estudios, el sexo, la edad y estado civil.

Variables seleccionadas

Situación de ocupación (PEAA) Nivel de estudios (añoest) Área de residencia (area) Sexo (P06) Edad (P02) Estado civil (P09) Rama de actividad (RAMA_PEA)

Lectura y procesamiento de datos

#install.packages("readr")
library("readr")
eph23=read.csv2("REG02_ANUAL_2023.csv", header=TRUE, sep=";", dec=",")
names(eph23)
##   [1] "UPM"          "NVIVI"        "NHOGA"        "TRIMESTRE"    "AÑO"         
##   [6] "DPTO"         "AREA"         "L02"          "P02"          "P03"         
##  [11] "P04"          "P04A"         "P04B"         "P05C"         "P05P"        
##  [16] "P05M"         "P06"          "P08D"         "P08M"         "P08A"        
##  [21] "P09"          "A01"          "A01A"         "A02"          "A03"         
##  [26] "A04"          "A04A"         "A04B"         "A05"          "A07"         
##  [31] "A08"          "A10"          "A11A"         "A11M"         "A11S"        
##  [36] "A12"          "A13REC"       "A14REC"       "A15"          "A16"         
##  [41] "A17A"         "A17M"         "A17S"         "A18"          "B01REC"      
##  [46] "B02REC"       "B03LU"        "B03MA"        "B03MI"        "B03JU"       
##  [51] "B03VI"        "B03SA"        "B03DO"        "B04"          "B05"         
##  [56] "B06"          "B07A"         "B07M"         "B07S"         "B08"         
##  [61] "B09A"         "B09M"         "B09S"         "B10"          "B11"         
##  [66] "B12"          "B12A"         "B12B"         "B12C"         "B13"         
##  [71] "B14"          "B15"          "B16G"         "B16U"         "B16D"        
##  [76] "B16T"         "B17"          "B18AG"        "B18AU"        "B18BG"       
##  [81] "B18BU"        "B19"          "B20G"         "B20U"         "B20D"        
##  [86] "B20T"         "B21"          "B22"          "B23"          "B24"         
##  [91] "B25"          "B26"          "B271"         "B272"         "B28"         
##  [96] "B29"          "B30"          "B31"          "C01REC"       "C02REC"      
## [101] "C03"          "C04"          "C05"          "C06"          "C07"         
## [106] "C08"          "C09"          "C101"         "C102"         "C11G"        
## [111] "C11U"         "C11D"         "C11T"         "C12"          "C13AG"       
## [116] "C13AU"        "C13BG"        "C13BU"        "C14"          "C14A"        
## [121] "C14B"         "C14C"         "C15"          "C16REC"       "C17REC"      
## [126] "C18"          "C18A"         "C18B"         "C19"          "D01"         
## [131] "D02"          "D03"          "D04"          "D05"          "E01A"        
## [136] "E01B"         "E01C"         "E01D"         "E01E"         "E01F"        
## [141] "E01G"         "E01H"         "E01I"         "E01J"         "E01K"        
## [146] "E01L"         "E01M"         "ED01"         "ED02"         "ED03"        
## [151] "ED0504"       "ED06C"        "ED08"         "ED09"         "ED10"        
## [156] "ED11F1"       "ED11F1A"      "ED11GH1"      "ED11GH1A"     "S01A"        
## [161] "S01B"         "S02"          "S03"          "S03A"         "S03B"        
## [166] "S03C"         "S04"          "S05"          "S06"          "S07"         
## [171] "S08"          "S09"          "CATE_PEA"     "TAMA_PEA"     "OCUP_PEA"    
## [176] "RAMA_PEA"     "HORAB"        "HORABC"       "HORABCO"      "PEAD"        
## [181] "PEAA"         "TIPOHOGA"     "FEX.2022"     "NJEF"         "NCON"        
## [186] "NPAD"         "NMAD"         "añoest"       "ra06ya09"     "e01aimde"    
## [191] "e01bimde"     "e01cimde"     "e01dde"       "e01ede"       "e01fde"      
## [196] "e01gde"       "e01hde"       "e01ide"       "e01jde"       "e01kde"      
## [201] "e01lde"       "e01mde"       "e01kjde"      "e02bde"       "ingrevasode" 
## [206] "ipcm"         "pobrezai"     "pobnopoi"     "quintili"     "decili"      
## [211] "quintiai"     "decilai"      "informalidad"
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
# Seleccionar las columnas deseadas
variables <- c("PEAA", "RAMA_PEA", "P06", "P02", "AREA", "añoest", "P09")

# Seleccionar solo las columnas que existen en 'variables'
eph23selec <- eph23 %>%
  select(any_of(variables))
names(eph23selec)
## [1] "PEAA"     "RAMA_PEA" "P06"      "P02"      "AREA"     "añoest"   "P09"
#install.packages("tidyverse")
#install.packages("conflicted")
library("tidyverse")
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.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("conflicted")
conflicts_prefer(dplyr::filter)
## [conflicted] Will prefer dplyr::filter over any other package.
eph23fil <- eph23selec %>%
  filter(AREA==1 & (PEAA==1 | PEAA==2) & (P02>=14 & P02<=29) & RAMA_PEA!=1 & añoest != 99 )
table(eph23fil$P02, eph23fil$AREA)
##     
##        1
##   14  42
##   15  75
##   16 103
##   17 148
##   18 257
##   19 326
##   20 357
##   21 372
##   22 383
##   23 421
##   24 405
##   25 415
##   26 447
##   27 454
##   28 457
##   29 450

Procesamiento por variables

PEAA

eph23fil$PEAA <- factor(eph23fil$PEAA, levels = c(1, 2), labels = c("Ocupados", "Desocupados"))

tabla_PEAA <- table(eph23fil$PEAA, useNA = "ifany")
tabla_PEAA
## 
##    Ocupados Desocupados 
##        4633         479

P06

eph23fil$P06 <- factor(eph23fil$P06, levels = c(1, 6), labels = c("Hombres", "Mujeres"))

tabla_P06 <- table(eph23fil$P06, useNA = "ifany")
tabla_P06
## 
## Hombres Mujeres 
##    2733    2379

Años de estudio

Solo dos niveles , con y sin estudios universitarios

tabla_añoest <- table(eph23fil$añoest, useNA = "ifany")
tabla_añoest
## 
##    0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15 
##    5    3    9   20   20   47  157  140  160  307  249  304 1773  363  425  314 
##   16   17   18 
##  395  358   63
# Categorizar añoest en dos niveles, mayor o igual a 12 "Con estudios universitarios", de 0 a 12 sin estudios universitarios y 99 no responde
library(dplyr)

# Crear la nueva variable 'nivelest2' categorizada
eph23fil <- eph23fil %>%
  mutate(
    conestuduniver = case_when(
      añoest >= 13 & añoest < 99 ~ "Con estudios universitarios",
      añoest >= 0 & añoest <= 12 ~ "Sin estudios universitarios",
      añoest == 99 ~ "No responde",
      TRUE ~ "Otro" # Manejo de valores inesperados
    )
  )

table(eph23fil$conestuduniver)
## 
## Con estudios universitarios Sin estudios universitarios 
##                        1918                        3194

Estado civil

tabla_estadocivil <- table(eph23fil$P09, useNA = "ifany")
tabla_estadocivil
## 
##    1    2    3    4    5    6 
##  250 1187   12    4 3655    4
# 
# Casado    1
# Unido 2
# Separado  3
# Viudo 4
# Soltero   5
# Divorciado    6
# NR    9
# Categoriza P06 solo en es soltero, si y no. De modo que

# Crear la nueva variable es o no soltero
eph23fil <- eph23fil %>%
  mutate(
    essoltero = case_when(
      P09 >= 1 & P09 <= 2 ~ "No es soltero",
      TRUE ~ "Es soltero" # Manejo de valores inesperados
    )
  )

table(eph23fil$essoltero)
## 
##    Es soltero No es soltero 
##          3675          1437

Descriptivo bivariado para la situacion de ocupacion

Ocupación vs Sexo

tabla_PEAAvsP06= table(eph23fil$P06, eph23fil$PEAA)
tabla_PEAAvsP06
##          
##           Ocupados Desocupados
##   Hombres     2514         219
##   Mujeres     2119         260

Prueba de independencia para PEAA vs Sexo

# Crear el gráfico de mosaico
mosaicplot(tabla_PEAAvsP06, main = "Mosaico de Estado Laboral por Sexo",
           xlab = "Sexo", ylab = "Estado Laboral",
           col = c("lightblue", "salmon"), shade = TRUE)

Prueba de Independencia Chi-Cuadrado

# Realizar la prueba de chi-cuadrado
chi_sq <- chisq.test(tabla_PEAAvsP06)
chi_sq
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabla_PEAAvsP06
## X-squared = 12.392, df = 1, p-value = 0.0004311

Interpretación: La prueba de chi-cuadrado reveló una asociación significativa entre el sexo y el estado laboral, lo que sugiere diferencias en las tasas de empleo entre hombres y mujeres en el conjunto de datos analizado.

Ocupación vs nivel de estudios

tabla_PEAAvsNIVELEST= table(eph23fil$conestuduniver, eph23fil$PEAA)
tabla_PEAAvsNIVELEST
##                              
##                               Ocupados Desocupados
##   Con estudios universitarios     1788         130
##   Sin estudios universitarios     2845         349
# Crear el gráfico de mosaico
mosaicplot(tabla_PEAAvsNIVELEST, main = "Mosaico de Estado Laboral por Nivel de estudios",
           xlab = "Nivel de estudios", ylab = "Estado Laboral",
           col = c("lightblue", "salmon"), shade = TRUE)

Prueba de Independencia Chi-Cuadrado

# Realizar la prueba de chi-cuadrado
chi_sq <- chisq.test(tabla_PEAAvsNIVELEST)
chi_sq
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabla_PEAAvsNIVELEST
## X-squared = 23.804, df = 1, p-value = 1.067e-06

Interpretación

Análisis de regresión logística

# Análisis de regresión logística para explicar la situaación de ocupación para los factores sexo (P06), con estudios unversitarios (conestuduniver) , el vivir no en pareja (essoltero)

# Cargar las librerías necesarias
library(dplyr)    # Para manipulación de datos
library(ggplot2)  # Para visualización (opcional)
library(pscl)     # Para métricas de bondad de ajuste
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
# Ajustar el modelo de regresión logística binaria
modelo_logit <- glm(PEAA ~ P06 + conestuduniver + essoltero, 
                    data = eph23fil, 
                    family = binomial)

# Resumen del modelo
summary(modelo_logit)
## 
## Call:
## glm(formula = PEAA ~ P06 + conestuduniver + essoltero, family = binomial, 
##     data = eph23fil)
## 
## Coefficients:
##                                           Estimate Std. Error z value Pr(>|z|)
## (Intercept)                               -2.79904    0.11385 -24.586  < 2e-16
## P06Mujeres                                 0.46857    0.09846   4.759 1.94e-06
## conestuduniverSin estudios universitarios  0.62486    0.10913   5.726 1.03e-08
## essolteroNo es soltero                    -0.50904    0.11857  -4.293 1.76e-05
##                                              
## (Intercept)                               ***
## P06Mujeres                                ***
## conestuduniverSin estudios universitarios ***
## essolteroNo es soltero                    ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 3179.8  on 5111  degrees of freedom
## Residual deviance: 3114.2  on 5108  degrees of freedom
## AIC: 3122.2
## 
## Number of Fisher Scoring iterations: 5

Interpretación de los coeficientes en términos de odds ratios

# Interpretación de los coeficientes en términos de odds ratios
exp(coef(modelo_logit))
##                               (Intercept) 
##                                0.06086837 
##                                P06Mujeres 
##                                1.59771177 
## conestuduniverSin estudios universitarios 
##                                1.86798077 
##                    essolteroNo es soltero 
##                                0.60107211

Intervalos de confianza para los odds ratios

exp(confint(modelo_logit))
## Waiting for profiling to be done...
##                                                2.5 %     97.5 %
## (Intercept)                               0.04848017 0.07576261
## P06Mujeres                                1.31781278 1.93890649
## conestuduniverSin estudios universitarios 1.51226222 2.32035871
## essolteroNo es soltero                    0.47419829 0.75513232

Gráfica

# Evaluación de la bondad de ajuste utilizando Pseudo R-squared
library(pscl)
pR2(modelo_logit)
## fitting null model for pseudo-r2
##           llh       llhNull            G2      McFadden          r2ML 
## -1.557123e+03 -1.589925e+03  6.560444e+01  2.063130e-02  1.275142e-02 
##          r2CU 
##  2.753195e-02
# Predicciones del modelo
eph23fil <- eph23fil %>%
  mutate(
    probabilidad = predict(modelo_logit, type = "response"),
    prediccion = ifelse(probabilidad > 0.5, 1, 0)
  )
# Visualización de las probabilidades predichas
ggplot(eph23fil, aes(x = probabilidad, fill = factor(PEAA))) +
  geom_histogram(binwidth = 0.05, alpha = 0.7, position = "identity") +
  theme_minimal() +
  labs(title = "Distribución de Probabilidades Predichas",
       x = "Probabilidad de Estar Ocupado",
       y = "Frecuencia",
       fill = "Ocupado") +
  scale_fill_manual(values = c("red", "green"))

Interpretación final

Conclusiones

Referencias

Anexos