Inserción laboral de los egresados en universidades públicas de Andalucía

La complejidad del mercado laboral y la inserción laboral constituyen temas fundamentales en el contexto socioeconómico actual. Sin embargo, es en las etapas más tempranas de nuestra formación academica cuando podemos estar determinando nuestra inserción en el mercado laboral. Y es que siempre tenemos la pregunta… ¿está relacionada nuestra inserción laboral en el mercado con la rama que decidimos estudiar?

En este caso, abordaremos la cuestión a través de la estadística de Inserción laboral de los egresados en universidades públicas de Andalucía, que ofrece información relativa al proceso de inserción laboral de los egresados universitarios y que nos posibilita el análisis de los diferentes aspectos que caracterizan y determinan el acceso de dicho colectivo a los mercados de trabajo.

Este conjunto de datos puede proporcionar una visión detallada y esclarecedora sobre el proceso de inserción laboral de los graduados universitarios (en este caso de la CCAA de Andalucía), desentrañando los matices que definen su acceso a los dinámicos mercados laborales.

A través de esta exploración, nos proponemos identificar la posible correlación entre la inserción laboral y las diferentes ramas de actividad que componen el catálogo de carreras y másteres de las universidades andaluzas.

0. PLANTEAMIENTO DE LA HIPÓTESIS

La hipótesis nula (H0) y la hipótesis alternativa (H1) para el análisis de las relaciones entre las diferentes ramas de actividad y la inserción laboral de los egresados andaluces en el año 2020 podrían formularse de la siguiente manera:

Hipótesis nula (H0): No hay ninguna relación significativa entre las diferentes ramas de actividad y la inserción laboral de los egresados andaluces en el año 2020. En otras palabras, las variaciones en la elección de la rama de estudio no afectan de manera significativa la probabilidad de obtener empleo.

Hipótesis alternativa (H1): Existe una relación significativa entre las diferentes ramas de actividad y la inserción laboral de los egresados andaluces en el año 2020. Esto implica que la elección de la rama de estudio tiene un impacto significativo en la probabilidad de obtener empleo, y se observarán patrones distintos en la inserción laboral según la disciplina académica.

Durante el análisis de la base de datos, se buscarán evidencias estadísticas para respaldar o rechazar la hipótesis nula. Si los resultados indican que hay suficiente evidencia para rechazar la hipótesis nula, se podría concluir que, de hecho, existe una relación significativa entre las ramas de actividad y la inserción laboral de los egresados andaluces en el año 2020. Por otro lado, si no se encuentra evidencia suficiente, se podría aceptar la hipótesis nula y afirmar que no hay una relación significativa entre estas variables en el periodo analizado.

1. PREPARACIÓN DE LA BASE DE DATOS Y ENTORNO

1.1 Obtención de la base de datos.

El fichero de microdatos se puede encontrar en la página oficial de la Junta de Andalucía. El enlace es el siguiente: https://www.juntadeandalucia.es/institutodeestadisticaycartografia/descarga/mercado_trabajo/mercado_trabajo.htm

1.2 Fijar directorio

Una vez hemos descargado la base de datos, es importante el lugar donde la alojamos, ya que antes debemos determinar el directorio en el que vamos a estar trabajando.

setwd("/Users/Barbara/Desktop/R")
getwd()
## [1] "/Users/Barbara/Desktop/R"

1.3 Instalar paquetes

También es importante instalar y leer los paquetes con los que estaremos trabajando.

options(repos = c(CRAN = "https://cloud.r-project.org"))
library(readxl)
library(ggplot2)

1.4 Abrir BBDD

Y una vez tenemos esto listo, es hora de abrir nuestra base de datos en R studio.

BBDD20=read.csv("MicrodatILEUPA2020.csv")

2. EXPLORAR LA BASE DE DATOS

Antes de empezar a analizar datos y extraer conclusiones es muy importante visualizar nuestra base de datos, ya que en esta fase previa conocemos la estructura de los datos y revisamos si estos necesitan alguna transformación o depuración previa.

La calidad de los datos es de vital importancia, y este paso nos asegura que los datos que manejamos tienen la calidad necesaria.

2.1 Estructura de la base de datos

En la base de datos proporcionada por la Junta de Andalucía sobre la inserción laboral de sus egresados se encuentran el siguiente número de registros (filas y columnas, respectivamente):

nrow(BBDD20)
## [1] 49585
ncol(BBDD20)
## [1] 27
str(BBDD20)
## 'data.frame':    49585 obs. of  27 variables:
##  $ CURSO            : chr  "2020-2021" "2020-2021" "2020-2021" "2020-2021" ...
##  $ TIPOESTUDIO      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ UNIVERSIDAD      : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ NACI             : int  724 724 724 724 724 724 724 724 724 724 ...
##  $ SEXO             : int  6 6 6 1 6 6 6 6 1 6 ...
##  $ EDAD             : int  1 1 5 1 1 1 5 1 2 1 ...
##  $ RAMA             : int  4 4 4 4 4 4 4 4 4 4 ...
##  $ AMBITO           : int  913 913 913 913 913 913 913 913 913 913 ...
##  $ CAMPO            : int  91301 91301 91301 91301 91301 91301 91301 91301 91301 91301 ...
##  $ RENDIMIENTO      : chr  "Q4" "Q4" "Q3" "Q3" ...
##  $ RESIDENCIA_PADRON: int  1 1 1 1 1 1 1 1 1 1 ...
##  $ GURB             : int  2 1 1 2 1 2 1 3 2 1 ...
##  $ REGIMENA0T2      : int  99 99 99 99 99 99 99 99 99 99 ...
##  $ REGIMENA0T3      : int  1 1 1 99 1 99 1 1 1 1 ...
##  $ REGIMENA0T4      : int  4 1 1 99 1 99 1 4 4 1 ...
##  $ REGIMENA1T1      : int  4 1 1 99 1 99 99 4 4 99 ...
##  $ REGIMENA1T2      : int  4 99 1 4 1 4 4 4 4 99 ...
##  $ REGIMENA1T3      : int  4 99 1 4 1 4 4 4 4 1 ...
##  $ AFILIADO4T       : int  4 2 4 2 4 2 3 4 4 2 ...
##  $ SITULABA1T3      : int  1 5 1 1 1 1 1 1 1 1 ...
##  $ LUGTRABA1T3      : int  2 99 1 2 1 2 2 2 2 1 ...
##  $ MOVILIDADA1T3    : int  3 99 1 3 1 3 3 3 3 1 ...
##  $ ACTIVIDADA1T3    : chr  "Q" "-" "Q" "Q" ...
##  $ TIEMPOAFILA1T3   : int  99 99 3 99 2 99 99 99 99 4 ...
##  $ GRUPOCOTA1T3     : int  99 99 2 99 2 99 99 99 99 2 ...
##  $ TCONTRATOA1T3    : int  99 99 2 99 2 99 99 99 99 2 ...
##  $ TJORNADAA1T3     : int  99 99 2 99 2 99 99 99 99 1 ...

Como se observa en la estructura anterior, la mayoría de las variables son númericas (enteros) porque están codificadas.

A continuación se proporciona una tabla con las variables y los códigos de estas.

TABLAS

2.2 Transformación de las variables

Sin embargo, para un mayor entendimiento, vamos a transformar las variables que nos interesan en nuestro análisis. Vamos a trabajar unicamente con Rama y con la situación laboral.

Para no modfiicar la variable original, creamos una segunda variable y registramos en esa los cambios.

BBDD20$RAMA_cod=BBDD20$RAMA
BBDD20$RAMA_cod <- ifelse(BBDD20$RAMA_cod == "1", "CIENCIAS SOCIALES Y JURIDICAS",
                           ifelse(BBDD20$RAMA_cod == "2", "INGENIERIA Y ARQUITECTURA",
                                  ifelse(BBDD20$RAMA_cod == "3", "ARTES Y HUMANIDADES",
                                         ifelse(BBDD20$RAMA_cod == "4", "CIENCIAS DE LA SALUD",
                                                ifelse(BBDD20$RAMA_cod == "5", "CIENCIAS",
                                         BBDD20$RAMA_cod)))))
BBDD20$RAMA_cod <- as.factor(BBDD20$RAMA_cod)
porcentajes <- prop.table(table(BBDD20$RAMA_cod)) * 100
print(porcentajes)
## 
##           ARTES Y HUMANIDADES                      CIENCIAS 
##                     10.618130                      7.945951 
##          CIENCIAS DE LA SALUD CIENCIAS SOCIALES Y JURIDICAS 
##                     16.196430                     53.292326 
##     INGENIERIA Y ARQUITECTURA 
##                     11.947161

Hacemos lo mismo para la situación laboral.

BBDD20$SITULABA1T3_cod=BBDD20$SITULABA1T3
BBDD20$SITULABA1T3_cod <- ifelse(BBDD20$SITULABA1T3_cod == "1", "Trabajador",
                           ifelse(BBDD20$SITULABA1T3_cod == "2", "Parado que sí ha trabajado antes",
                                  ifelse(BBDD20$SITULABA1T3_cod == "3", "Parado que no ha trabajado antes",
                                         ifelse(BBDD20$SITULABA1T3_cod == "4", "Estudiando en la Universidad",
                                                ifelse(BBDD20$SITULABA1T3_cod == "5", "Otras",
                                                       ifelse(BBDD20$SITULABA1T3_cod == "6", "Otras",
                                         BBDD20$SITULABA1T3_cod))))))
BBDD20$SITULABA1T3_cod <- as.factor(BBDD20$SITULABA1T3_cod)
porcentajes <- prop.table(table(BBDD20$SITULABA1T3_cod)) * 100
print(porcentajes)
## 
##     Estudiando en la Universidad                            Otras 
##                         8.109307                        26.635071 
## Parado que no ha trabajado antes Parado que sí ha trabajado antes 
##                         2.083291                         7.040436 
##                       Trabajador 
##                        56.131895

Además, queremos saber si nuestra variable tiene algún valor nulo que pueda afectar a los resultados. Para ello realizamos el siguiente paso:

# Usa la función sum(is.na()) para contar los valores nulos

nulos_situacion_laboral <- sum(is.na(BBDD20$SITULABA1T3_cod))

print(paste("Número de valores nulos en la situación laboral:", nulos_situacion_laboral))
## [1] "Número de valores nulos en la situación laboral: 0"

2.2 Exploración de la información

Una vez tenemos nuestra base de datos transformada y codificada, vamos a conocer los datos resultantes. Aunque ya hemos observado las tablas de frecuencias, ahora se calculará los porcentajes y se visualizarán los datos para un mayor entendimiento de estos:

# Crear la tabla de contingencia
tabla_rama <- table(BBDD20$RAMA_cod)

tabla_rama_porc <- addmargins(prop.table(tabla_rama)) *100

print(tabla_rama_porc)
## 
##           ARTES Y HUMANIDADES                      CIENCIAS 
##                     10.618130                      7.945951 
##          CIENCIAS DE LA SALUD CIENCIAS SOCIALES Y JURIDICAS 
##                     16.196430                     53.292326 
##     INGENIERIA Y ARQUITECTURA                           Sum 
##                     11.947161                    100.000000
tabla_rama_porc <- prop.table(tabla_rama) *100
tabla_rama_porc_df <- as.data.frame(tabla_rama_porc)

# Crear un gráfico de sectores
library(ggplot2)

ggplot(tabla_rama_porc_df, aes(x = "", y = Freq, fill = Var1)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y") +
  theme_void() +
  geom_text(aes(label = sprintf("%.1f%%", Freq)), position = position_stack(vjust = 0.5)) +
  labs(title = "% de alumnos egresados por Rama") +
  scale_fill_manual(values = c("lavenderblush", "lavenderblush3", "olivedrab", "olivedrab1", "olivedrab3"))

Como se observa en el gráfico, la mitad de los egresados pertenece a la rama de ciencias sociales y jurídicas.

# Crear la tabla de contingencia
tabla_situacion <- table(BBDD20$SITULABA1T3_cod)

tabla_sit_porc <- addmargins(prop.table(tabla_situacion)) *100

print(tabla_sit_porc)
## 
##     Estudiando en la Universidad                            Otras 
##                         8.109307                        26.635071 
## Parado que no ha trabajado antes Parado que sí ha trabajado antes 
##                         2.083291                         7.040436 
##                       Trabajador                              Sum 
##                        56.131895                       100.000000
#crear tabla de contingencia
tabla_sit_porc <- prop.table(tabla_situacion) *100
tabla_sit_porc_df <- as.data.frame(tabla_sit_porc)

# Crear un gráfico de barras
library(ggplot2)

ggplot(tabla_sit_porc_df, aes(x = Var1, y = Freq, fill = Var1)) +
  geom_bar(stat = "identity", color = "white") +
  theme_minimal() +
  geom_text(aes(label = sprintf("%.1f%%", Freq)), vjust = -0.5, size = 3) + 
  labs(title = "Situación laboral de los alumnos egresados",
       x = "Situación Laboral", y = "Porcentaje") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 9),
        legend.position = "none",
        plot.title = element_text(hjust = 0.5)) +  # Centrar el título
  scale_fill_manual(values = c("olivedrab1", "olivedrab2", "olivedrab3", "olivedrab4", "lavenderblush3"))

Como se observa, el 56,2% se encuentra trabajando.

3. CONTRASTE DE LA HIPÓTESIS NULA

A continuación se desea estudiar la posible correlación entre la rama estudiada y la inserción laboral.

Para ello primero creamos una tabla de contingencia.

# Crear la tabla de contingencia
tabla_cont <- table(BBDD20$SITULABA1T3_cod, BBDD20$RAMA_cod)

# Calcular los porcentajes por fila
porcentajes_por_fila <- addmargins(prop.table(tabla_cont, margin = 2)) * 100


# Convertir a data frame
porcentajes_por_fila_df <- as.data.frame(porcentajes_por_fila)
library(kableExtra)
# Imprimir la tabla formateada
tabla_formateada <- kable(porcentajes_por_fila, format = "html", booktabs = TRUE, digits = 2) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))

# Imprimir la tabla formateada
print(tabla_formateada)
ARTES Y HUMANIDADES CIENCIAS CIENCIAS DE LA SALUD CIENCIAS SOCIALES Y JURIDICAS INGENIERIA Y ARQUITECTURA Sum
Estudiando en la Universidad 15.84 16.93 4.59 6.26 8.39 52.01
Otras 37.38 28.68 18.44 29.22 15.31 129.03
Parado que no ha trabajado antes 2.75 2.03 1.07 2.61 0.56 9.02
Parado que sí ha trabajado antes 6.44 4.01 3.59 9.65 2.63 26.32
Trabajador 37.59 48.35 72.31 52.26 73.11 283.62
Sum 100.00 100.00 100.00 100.00 100.00 500.00

Con nuestra tabla de contingencia ya creada, observamos que los que mayor inserción tienen son las ramas de las ciencias sociales y las ingenierias y arquitecturas. ¿Pero están correlacionadas realmente? Para ello vamos a utilizar el coeficiente de chi-cuadrado de Pearson para saber si esta correlación tiene fundamentos estadisticos y si podemos rechazar la hipotesis nula de independencia.

chisq.test(porcentajes_por_fila)
## Warning in chisq.test(porcentajes_por_fila): Chi-squared approximation may be
## incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  porcentajes_por_fila
## X-squared = 49.719, df = 25, p-value = 0.002307

El valor obtenido de p-value sugiere que hay evidencia significativa para rechazar la hipótesis nula al ser menor que 0,05.

Nuestro valor de Chi-cuadrado tabulado para 25 grados de libertad y un nivel de significación del 0,05 es de 37,65. Por su parte, el valor obtenido en el test es de 49,72. Al ser este mayor, se rechaza la H0. Es decir, se asume que hay dependencia entre la rama de actividad estudiada y la inserción laboral.

porcentajes_por_fila <- (prop.table(tabla_cont, margin = 2)) * 100

# Convertir la tabla de porcentajes a un marco de datos
df <- as.data.frame(porcentajes_por_fila)

# Crear el gráfico de barras
ggplot(df, aes(x = Var2, y = Freq, fill = Var1)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Situación laboral de los egresados por rama",
       x = "Ramas",
       y = "Porcentaje") +
  theme_minimal() +
  scale_fill_manual(values = c("olivedrab1", "olivedrab2", "olivedrab3", "olivedrab4", "lavenderblush3")) +
  theme(
    plot.title = element_text(size = 12, hjust = 0.5),  
    axis.text.x = element_text(size = 8, angle = 90, vjust = 1),   
    axis.text.y = element_text(size = 8),   
    axis.title.x = element_text(size = 10), 
    axis.title.y = element_text(size = 10)  
  )

En el gráfico se observa claramente como son las ramas de ciencias de la salud e ingenieria y arquitectura las que tienen un % mayor de insertados en el mercado laboral, mientras que son los egresados de artes y humanidades los que tienen un menor grado de inserción laboral.

chisq.test(porcentajes_por_fila)$observed
## Warning in chisq.test(porcentajes_por_fila): Chi-squared approximation may be
## incorrect
##                                   
##                                    ARTES Y HUMANIDADES  CIENCIAS
##   Estudiando en la Universidad               15.840456 16.928934
##   Otras                                      37.378917 28.680203
##   Parado que no ha trabajado antes            2.754036  2.030457
##   Parado que sí ha trabajado antes            6.438746  4.010152
##   Trabajador                                 37.587844 48.350254
##                                   
##                                    CIENCIAS DE LA SALUD
##   Estudiando en la Universidad                 4.594696
##   Otras                                       18.441041
##   Parado que no ha trabajado antes             1.070850
##   Parado que sí ha trabajado antes             3.586104
##   Trabajador                                  72.307309
##                                   
##                                    CIENCIAS SOCIALES Y JURIDICAS
##   Estudiando en la Universidad                          6.259224
##   Otras                                                29.218543
##   Parado que no ha trabajado antes                      2.607379
##   Parado que sí ha trabajado antes                      9.649953
##   Trabajador                                           52.264901
##                                   
##                                    INGENIERIA Y ARQUITECTURA
##   Estudiando en la Universidad                      8.389602
##   Otras                                            15.310601
##   Parado que no ha trabajado antes                  0.557056
##   Parado que sí ha trabajado antes                  2.633356
##   Trabajador                                       73.109386