Introducción

Este proyecto tiene como objetivo analizar una base de datos, con 123 849 observaciones, de ofertas de empleo de LinkedIn en Estados Unidos durante el periodo 2023 a 2024, obtenida de la plataforma Kaggle.

Se usará R y RMarkdown para realizar el análisis de datos, que incluirá la carga y limpieza de los datos, análisis exploratorio de datos (EDA) y visualización de los resultados. A tráves de gráficos y tablas, se presentarán los hallazgos de manera clara y concisa para facilitar la interpretación.

Este análisis, busca responder a varias preguntas de investigación que permitirán entender mejor las características y tendencias del mercado laboral actual.

Objetivos del Análisis

1.Distribución de los Tipos de Trabajo: Determinar la proporción de ofertas de empleo que son de medio tiempo versus tiempo completo.

  1. Comparación de Salarios entre Trabajos Remotos y Presenciales: Analizar como varían los salarios ofrecidos para trabajos remotos en comparación con trabajos presenciales.

  2. Relación entre Vistas de Vacantes y Tipo de Trabajo: Investigar si hay diferencias en la cantidad de vistas que reciben las vacantes de medio tiempo frente a las de tiempo completo.

  3. Distribución de Salarios por Periodo de Pago: Examinar cómo se distribuyen los salarios mínimos y máximos seguún el periodo de pago específicado en las ofertas de empleo.

  4. Correlación entre las Vistas a las Vacantes y el Rango Salarial: Encontrar si existe, o no, una correlación entre las visitas a las vacantes con un rango salario mayor o menor.

Descripción de Variables

La base de datos incluye: max_sal: numeric Salario máximo que ofrecen por puesto de trabajo. min_sal: numeric Salario mínimo que ofreccen por pueto de trabajo. pay_period: character Periodo de pago (por hora, mes año, quincena). views: numeric El número de veces que se ha visto la oferta de trabajo. applies: numeric Número de aplicaciones al puesto. type: character Si el empleo es parcial, tiempo completo, contrato, beca, temporal u otro. work_type: character La modalidad de trabajo.

Librerias

## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ── 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

Base de datos original

Se inicia por cargar la base de datos original descargada de Kaggle y eliminar las columnas y datos que no se usarán en esta ocasión. #### Eliminacion de columnas

ruta= "postings.csv"
postings <- read_csv(ruta)
## Rows: 123849 Columns: 28
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (15): company_name, title, description, pay_period, location, formatted_...
## dbl (13): job_id, max_salary, company_id, views, med_salary, min_salary, app...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
linK<-postings %>%
  select(max_salary,pay_period,views,min_salary,applies, remote_allowed,work_type, formatted_work_type)

show_col_types =FALSE

Limpieza de Datos

Se procede con la limpieza de datos, retirando aquellos que en su mayoría tengan NA o información que no sea de utilidad para el análisis.

Se realizó el cambio de nombre a algunas columnas

linK<-linK %>% rename(max_sal=max_salary, min_sal=min_salary, type=work_type, work_type=remote_allowed)
linK<-linK %>% rename(remote=work_type)

De las 123 849 observacioes que se tenían, despues de la limpieza de datos, solo 2 094 son útiles para proseguir con el análisis estadístico.

Se convierte la variable remote a factores para una mejor interpretación

linK<-linK %>% mutate(remote=factor(remote, levels = c(0,1), labels = c("Remoto", "No Remoto")))

Preguntas de Investigación

¿Cuál es la distribución de las ofertas de empleo entre las diferentes modalidades?

job_type<-linK %>% count(type)

Gráfico de Distribución por Tipos de Trabajo

ggplot(job_type, aes(x = type, y = n, fill = type)) +
  geom_bar(stat = "identity") +
  labs(title = "Distribución de la Duración del Empleo",
       x = "Duración",
       y = "Número de Ofertas") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none")

Según los resultados obtenidos, la modalidad de tiempo completo (FULL_TIME) es la más solicitada por las empresas, representando 1 545 de las 2 094 vacantes ofertadas. Esta modalidad supera considerablemente a la opción de contrato (CONTRACT), que cuenta con 470 solicitudes.

Este hallazgo indica que las empresas tienen una clara preferencia por ofrecer contratos a tiempo completo en comparación con contratos temporales o por proyecto. La alta demanda de vacantes a tiempo completo podría reflejar una tendencia hacía la estabilidad laboral y el compromiso a largo plazo en el mercado de trabajo estadounidense. Por otro lado, el menor número de vacantes de contrato puede sugerir que, aunque las oportunidades de trabajo por contrato están disponibles, no son tan prevalentes como las ofertas de tiempo completo.

¿Cómo se comparan los salarios de los trabajos remotos con los trabajos presenciales?

salario_remoto <- linK %>%
  group_by(remote) %>%
  summarize(mean_min_sal = mean(min_sal, na.rm = TRUE),
            mean_max_sal = mean(max_sal, na.rm = TRUE))
print(salario_remoto)
## # A tibble: 1 × 3
##   remote    mean_min_sal mean_max_sal
##   <fct>            <dbl>        <dbl>
## 1 No Remoto       72117.      102748.

Dentro de los 2 094 datos analizados, todos corresponden a trabajos no remotos, lo que indica una ausencia notable de ofertas laborales en modalidad remota por parte de las empresas. Este hallazgo sugiere que, en el contexto actual de los datos analizados, las oportunidades de trabajo remoto son inexistentes o extremadamente raras.

En términos salariales, el análisis muestra que el salario mínimo para los trabajos no remotos es de 72 mil dólares anuales en promedio. Este dato puede reflejar un nivel de compensación competitivo para roles que requieren presencia física en el lugar de trabajo. Por otro lado, el salario máximo promedio supera los 102 000 dólares anuales. Estos datos son superiores al promedio del salario mínimo de 51 mil dólares anuales del año 2023 en Estados Unidos (Indeed, 2024).

La falta de ofertas laborales remotas podría estar relacionada con varios factores, como la naturaleza del sector o la preferencia de las empresas por mantener a sus empleados en ubicaciones físicas para fomentar la colaboración directa o supervisión más estricta.

Además, el rango salarial observado podría indicar que las empresas están dispuestas a ofrecer salarios competitivos para atraer talento, a pesar de la falta de opciones remotas. Esto puede ser referencia a que los empleadores prefieren que sus empleados esten en las oficinas que en sus casas.

¿Hay alguna diferencia en la cantidad de vistas que reciben las vacantes de diferente modalidad?

views_modalidad<-linK %>%
  group_by(type) %>%
  summarize(mean_v = mean(views, na.rm = TRUE),
            sd_v = sd(views, na.rm = TRUE),
            min_v = min(views, na.rm = TRUE),
            max_v = max(views, na.rm = TRUE))
print(views_modalidad)
## # A tibble: 6 × 5
##   type       mean_v  sd_v min_v max_v
##   <chr>       <dbl> <dbl> <dbl> <dbl>
## 1 CONTRACT    120.  205.      2  2337
## 2 FULL_TIME   110.  351.      2  9975
## 3 INTERNSHIP   54.1  74.9     6   237
## 4 OTHER        20    15.1     8    37
## 5 PART_TIME   195.  668.      3  4951
## 6 TEMPORARY   119.  134.     20   487

Las vacantes de medio tiempo tienen la media más alta de vistas con 195.33, lo que sugiere una gran demanda. Sin embargo, la alta desviación estándar de 668.26 indica que la popularidad de estas vacantes varia considerablemente. Por otro lado, las vacantes de CONTRACT y FULL_TIME también muestran promedios elevados de vistas (120.22 y 109.93 respectivamente), pero con una dispersión significativa, lo que señala una distribución desigual en la atención recibida.

En contraste, las vacantes INTERNSHIP y OTHERS presentan promedios de vistas más bajos, con 54.11 y 20 respectivamente. La desviación estándar relativamente baja en estas categorías sugiere una consistencia mayor en la cantidad de vistas que reciben, con menos variabilidad comparada con otras modalidades. Esto implica que estas vacantes tienden a atraer menos atencion de manera más uniforme.

Gráfica de Vistas segun la Modalidad de Empleo

views_sum<-linK %>% 
  group_by(type) %>%
  summarize(mean_v = mean(views, na.rm = TRUE))
ggplot(views_sum, aes(x = type, y = mean_v, fill = type)) +
  geom_bar(stat = "identity") +
  labs(title = "Promedio de Vistas por Modalidad de Empleo",
       x = "Modalidad de Empleo",
       y = "Promedio de Vistas") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none")

Que la modalidad de PART_TIME tenga la mayor cantidad de vistas sugiere que las personas que buscan empleo están interesadas principalmente en vacantes de medio tiempo. Esta tendencia podría deberse a que, hoy en día, muchas personas buscan tener tiempo para sus pasatiempos o para convivir más con familiares y amigos.

En general, el análisis indica que la modalidad de empleo tiene un impacto significativo en la visibilidad de las vacantes. Las vacantes de PART_TIME y FULL_TIME pueden atraer más vistas, pero presentan una alta variabilidad, lo que puede complicar la previsibilidad de su popularidad. Por otro lado, modalidades como INTERNSHIP y OTHERS tienden a recibir menos vistas de manera más constante. Este conocimiento puede ayudar a los reclutadores a ajustar sus estrategias de publicación de ofertas para optimizar la atracción de candidatos.

¿Cuál es la distribución de los salarios mínimos y máximos según el periodo de pago?

Resumen de Salarios por Periodo de Pago

pp<-linK %>%
  group_by(pay_period) %>%
  summarize(mean_min_sal = mean(min_sal, na.rm = TRUE),
            mean_max_sal = mean(max_sal, na.rm = TRUE))
print(pp)
## # A tibble: 4 × 3
##   pay_period mean_min_sal mean_max_sal
##   <chr>             <dbl>        <dbl>
## 1 BIWEEKLY         71323        89965 
## 2 HOURLY             253.         314.
## 3 MONTHLY           4075.        8304.
## 4 YEARLY          102329.      145796.

La tabla presenta el promedio salarial minimo y maximo segun el periodo de pago, proporcionando una visión clara de como varían las compensaciones dependiendo de la frecuencia de pago. Para los pagos quincenales (BIWEEKLY), el salario mínimo promedio es de 71 323 dólares y el máximo promedio es de 89 965 dólares. Esto indica que las posiciones pagadas quincenalmente tienden a ofrecer salarios relativamente altos, tanto en el extremo mínimo como en el máximo.

Por otro lado, las posiciones pagadas por hora (HOURLY) tienen los salarios más bajos en promedio. El salario mínimo promedio es de 252.80 dólares y el máximo promedio es de 313.82. Esto refleja la naturaleza de los pagos por hora, que son más frecuentes pero en cantidades menores, resultando en salarios más bajos comparados con otros periodos de pago.

Gráfico de salarios por periodo de pago

ggplot(pp, aes(x = reorder(pay_period, mean_max_sal))) +
  geom_bar(aes(y = mean_min_sal), stat = "identity", fill = "blue", alpha = 0.5) +
  geom_bar(aes(y = mean_max_sal), stat = "identity", fill = "pink", alpha = 0.5) +
  labs(title = "Distribución de Salarios por Periodo de Pago",
       x = "Periodo de Pago",
       y = "Salario Promedio",
       fill = "Salario") + 
  scale_fill_manual(values = c("blue", "pink"), labels = c("Mínimo", "Máximo")) + 
  theme_minimal() +
  coord_flip()

Como se puede observar en la gráfica, los salarios varían significativamente según la frecuencia de pago. Las posiciones con pagos anuales ofrecen las compensaciones más altas en promedio, mientras que las pagadas por hora tienen las compensaciones más bajas. Los pagos quincenales y mensuales se sitúan en un rango intermedio, con los pagos quincenales siendo relativamente altos. Está información es útil para comprender las diferencias salariales basadas en el periodo de pago y puede influir en las decisiones de empleo tanto de empleadores como de empleados.

¿Existe una correlación entre el número de vistas y el rango salarial ofrecido para las vacantes?

Rango salarial

linK<-linK %>%
  mutate(rango_salarial = max_sal - min_sal)

Se creó una nueva columna en la base de datos para identificar el rango salarial y continuar con el análisis, con el objetivo de conocer la correlación entre el rango salarial y las vistas a las vacantes.

Correlación entre vistas y rango salarial

corel_vs<-linK %>% summarize(correlacion = cor(views, rango_salarial, use = "complete.obs"))

ggplot(linK, aes(x = rango_salarial, y = views)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "lm", col = "purple") + 
  labs (title = "Correlación entre las Vistas y el Rango Salarial",
        x = "Rango Salarial",
        y = "Vistas") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

El valor de correlación obtenido es de -0.00606859, el cual sugiere que no existe una relación significativa entre el rango salarial y el número de vistas a las vacantes. Esto refuerza lo que se observa en la gráfica, donde no se evidencia una tendencia clara. En términos prácticos, el rango salarial no parece influir de manera relevante en el número de vistas que reciben las vacantes, y otros factores podrían estar desempeñando un papel más importante en la popularidad de las vacantes.

Hallazgos Relevantes

Conclusión

En conclusión, este análisis revela distintas tendencias clave en el mercado laboral de Estados Unidos. Estos hallazgos pueden ayudar a los empleadores a ajustar sus estrategias de contratación y publicación de ofertas para atraer mejor a los candidatos adecuados.

Referencias

  1. Kon, A. (2024).LinkedIn Job Postings (2023 - 2024). Recuperado de: https://www.kaggle.com/datasets/arshkon/linkedin-job-postings?select=postings.csv
  2. Indeed. (2024).Salario promedio en Estados Unidos y factores que lo afectan. Recuperado de: https://www.indeed.com/orientacion-profesional/pago-salario/salario-promedio-estados-unidos-factores