Actualmente, en la educación pública del país, a lo que se refiere primaria y secundaria, existe un gran ausentismo por licencias médicas de funcionarios públicos de la educación (Docentes y asistentes) que generan preocupación en la comunidad educativa y al gobierno de turno. Antes de tomar cualquier decisión sobre como abordar la problemática, se debe realizar un análisis que en cierta medida, ponga en evidencia tal situación, para llevar no solo el monitoreo mensual de las cantidades de licencias médicas, sino que también caracterizarlas a distintos niveles (comuna y provincia), con el fin de poder generar políticas públicas más direccionadas acorde a los distintos grupos (Niveles).
Para lograr lo anterior, se realizará un análisis exploratorio, para luego describirlos o caracterizarlos a distintos niveles (Establecimiento educacional, comuna, provincia) y finalmente generar una propuesta de monitoreo mensual (evolución temporal de las cantidades de licencias médicas presentadas), para observar tendencias en distintos tramos de tiempo.
Generación de las Bases de datos.
Análisis de datos faltantes, duplicados y asignación de categorías.
Análisis Descriptivos de las variables locales.
Análisis Gráfico considerando la evolución temporal.
Conclusiones.
En este apartado, se detallará del como se extraen los datos para evaluar posibles sesgos, para luego poder procesar los datos con mayor razonamiento en función a los casos que podrían presentarse al analizar las licencias médicas.
La información que se registra es la siguiente:
library(readxl)
library(tidyverse)
library(lubridate)
library(openxlsx)
library(ggplot2)
library(esquisse)
library(DT)
library(kableExtra)
library(summarytools)
library(gridExtra)
lic_med <- read_excel("BBDD LM.xlsx")# 1725 registros
lic_med<- janitor::clean_names(lic_med)# ayuda con los nombres
names(lic_med)## [1] "rut_trab" "folio_lm" "inicio_lm" "dias"
# Cambiar la estructura de la base de datos a través de coherción
lic_med<-lic_med %>% mutate_at(c("folio_lm", "dias"), as.integer) %>%
mutate(inicio_lm = ymd(inicio_lm))| Rut-Encriptado | Folio Lic. Med. | Fecha Inicio LM | Cantidad de Días |
|---|---|---|---|
| Caracter | Número Entero | Fecha | Número Entero |
El funcionario/a presenta una licencia médica: Vía electrónica (98% aprox) y Física (2% aprox)
A través de la plataforma electrónica (Lic. Med. Electrónicas) y oficina de partes (para lic. Med. Físicas) se recepcionan las LM. para luego tramitarlas y registrarlas en un documento formato Excel.
Se envían a al analista estadístico para generar los informes correspondientes.
De este proceso se pueden apreciar los siguientes sesgos:
Posible error de digitación: Duplicados, falta o error de información.
Licencias anuladas y rechazadas: no se contabilizan, ya que no generan ausentismo.
# Análisis de valores perdidos y duplicados
naniar::miss_var_summary(lic_med)# Tabla de distr. NAS## # A tibble: 4 x 3
## variable n_miss pct_miss
## <chr> <int> <dbl>
## 1 folio_lm 109 6.32
## 2 rut_trab 3 0.174
## 3 inicio_lm 1 0.0580
## 4 dias 0 0
lic_med<-lic_med[complete.cases(lic_med), ]# BBDD sin NAS - 1612 registros
lic_med<-unique(lic_med)# Se eliminan los duplicados - 1591 registrosOriginalmente, el proceso de tratado de los valores perdidos, mayoritariamente se produce por la digitación (95% de las veces), generando así, no solo duplicados, sino que también erroneos. Finalmente, se decide eliminar los duplicados y los NAS para efectos del proyecto, ya que, se tendría que investigar junto con el o la administrativo/a que generó la base de datos y comenzar allí la búsqueda.
Con la información que se posee, no se pueden realizar profundos análisis, sin embargo, para lograr los objetivos, se debe relacionar con otras tablas de información, considerando como llave principal o primary key al rut encriptado como sigue:
1.- Existe otra tabla de información que llamaremos Maestro institucional, que posee toda la información detallada por mes del presente año, de cada uno de los y las funcionarios/as para obtener asi las variables que se desean para es presente contexto.
Maestro_institucional <- read_excel("Maestro institucional 2022.xlsx")
Maestro_institucional <- janitor::clean_names(Maestro_institucional)
names(Maestro_institucional)
dplyr::glimpse(Maestro_institucional)
str(Maestro_institucional)De la base de datos institucional se puede observar que tiene 33 variables, de las cuales solo nos interesan 11 de ellas:
| Nombre del Campo | Descripción | Estructura | Observación |
|---|---|---|---|
| Mes | Indica el mes del registro vigente en aquel mes | Fecha | Número Entero |
| Rut_trab | Rut del Funcionario/a | Caracter | sin observación |
| nombre_completo | Nombre del Funcionario/a | Caracter | Sin observación |
| programa | Partida dipres al que pertenece el Func. | Caracter | Sin observaciones |
| establecimiento | Establecimiento educacional al que depende | Caracter | Sin observaciones |
| escalafon | Categoría profesional | Caracter | Asistente de la ed., Técnico, Docente, etc. |
| tipo_de_hora | Calidad juridica contractual | Caracter | Planta, Contrata, Cod. Trab. |
| Jurnada | Cantidad de horas contratadas | Numérico | Número Entero |
| Isapre | si pertenece a isapre o fonasa | Caracter | Sin observaciones |
| Proyecto | Subvención por el cual fue contratado | Caracter | Sin observaciones |
| Monto_Recuperar | Monto monetario por dia a recuperar | Numérico | Sin observaciones |
Acto seguido, se realiza una extracción mensual del archivo Maestro institucional debido a que una persona puede estar presente en ese archivo 5 veces (de enero a mayo) o más, dependiendo si posee más de un contrato, con el fin de ir monitoriando la cantidad vigente de contrato mes a mes y asi realizar una unión de manera iterativa que vaya recopilando la información mes a mes, ej: si no esta en mayo, búsquelo en abril, si allí tampoco se encuentra, búsquelo en marzo y así sucesivamente hasta enero.
Entonces se sigue el siguiente proceso técnico:
1.- Crear un directorio llamado Maestro de remuneraciones por mes.
dir.create("Maestros de Remuneraciones por mes")2.- Se generan los archivos correspondiente y se guardan en el directorio creado anteriormente, con las variables deseadas.
Maestro_institucional <- Maestro_institucional %>% mutate(mes_anio = ymd(mes_anio)) %>%
mutate(mes = factor(month(mes_anio), levels = c(1:5),
labels = c("Enero","Febrero","Marzo", "Abril","Mayo"))) %>%
rename(rut_trab = rut_dv) %>%
select(c("mes" ,"rut_trab","nombre_completo","programa",
"establecimiento","escalafon","tipo_de_hora",
"jornada","isapre","proyecto","montos_recuperar")) %>%
group_nest(mes) %>%
mutate(file = paste0("Maestros de Remuneraciones por mes/",mes, ".xlsx")) %>%
select(file, x = data) %>%
pwalk(write.xlsx)3.- Se crea una función para la automatización del proceso de unión y limpieza de bases de datos, a través de un método iterativo utilizando las funciones join, for y bindrows.
# Función - unión y limpieza de bases de datos
Tratamiento_union_limpieza <- function(base){
archivos <- list.files("Maestros de Remuneraciones por mes/")
archivos <- paste0("Maestros de Remuneraciones por mes/", archivos)
Maestro <- tibble()
Base_aux <- base
for(i in seq_along(archivos)){
Base_aux <- Base_aux %>% left_join(read_excel(archivos[i]), by ="rut_trab")
Maestro <- Maestro %>% bind_rows(Base_aux[complete.cases(Base_aux), ])
Base_aux <- Base_aux[!complete.cases(Base_aux), ]
Base_aux <- Base_aux %>% select(1:4)
}
Maestro
}
lic_med <- Tratamiento_union_limpieza(lic_med)# Se asigna la BBDD limpia
naniar::miss_var_summary(lic_med)## # A tibble: 13 x 3
## variable n_miss pct_miss
## <chr> <int> <dbl>
## 1 rut_trab 0 0
## 2 folio_lm 0 0
## 3 inicio_lm 0 0
## 4 dias 0 0
## 5 nombre_completo 0 0
## 6 programa 0 0
## 7 establecimiento 0 0
## 8 escalafon 0 0
## 9 tipo_de_hora 0 0
## 10 jornada 0 0
## 11 isapre 0 0
## 12 proyecto 0 0
## 13 montos_recuperar 0 0
4.- Finalmente, con la base de datos sin valores perdidos ni duplicados, se realizan las asignaciones correspondientes a los factores que consideraremos en los proximos análisis.
lic_med <- lic_med %>%
mutate(Calidad_Juridica = factor(tipo_de_hora)) %>%
mutate(Salud = factor(isapre)) %>%
mutate(Escalafon = factor(escalafon)) %>%
mutate(Programa=factor(programa)) %>%
mutate(Proyecto = factor(proyecto)) %>%
mutate(montos_recuperar = montos_recuperar*dias) %>%
select(-c("programa","escalafon","tipo_de_hora","isapre","proyecto")) %>%
mutate(Mes = factor(month(inicio_lm),
levels = c(1,2,3,4,5,6,7,8,9,10,11,12),
labels = c("Enero","Febrero","Marzo","Abril",
"Mayo","Junio","Julio", "Agosto",
"Septiembre","Octubre","Noviembre",
"Diciembre"))) %>%
mutate(Anio = factor(year(inicio_lm)))
dt <- lic_med[1:5, 6:12]
dt %>%
kbl(caption = "Muestra de BBDD Licencias médicas 2022") %>%
kable_classic(full_width = F, html_font = "Cambria")| establecimiento | jornada | montos_recuperar | Calidad_Juridica | Salud | Escalafon | Programa |
|---|---|---|---|---|---|---|
| JARDIN RAYITO DE SOL | 44 | 137952.40 | PLAZO FIJO | FONASA | CODIGO DEL TRABAJO | JUNJI |
| JARDIN INFANTIL LOS GRILLITOS | 44 | 145838.47 | PLAZO FIJO | FONASA | CODIGO DEL TRABAJO | JUNJI |
| LICEO PEDRO TRONCOSO MACHUCA | 44 | 113701.23 | PLAZO FIJO | FONASA | ASISTENTE DE LA EDUCACION | P-02 |
| JARDIN VISTA ALEGRE | 44 | 213872.40 | PLAZO FIJO | FONASA | CODIGO DEL TRABAJO | JUNJI |
| LICEO POLITECNICO | 44 | 68668.53 | PLAZO FIJO | FONASA | ASISTENTE DE LA EDUCACION | P-02 |
Muestra pequeña de la base de datos con la cual se trabajará. (Se omiten variables que muestran datos confidenciales). total de registros completos y sin duplicar: 1.473
Como primer análisis, se observará la evolución de las cantidades de licencias medicas presentada con fecha de inicio en el mes que corresponde (Ausentismo).
# Evolución de las licencias medicas en el anio 2022
lic_med<-lic_med %>% filter(Mes %in% c("Enero","Febrero", "Marzo","Abril","Mayo"))
ggplot(data = lic_med, mapping = aes(x = Mes,addlabels=TRUE))+
geom_bar(fill="Darkblue")+
labs(title = "Evolución las Licencias presentadas",
subtitle = "De Enero a Mayo 2022",
y = "Cantidad de Lic. Médicas",
label = TRUE) +
geom_text(aes(label = ..count..),
stat = "count", vjust = 2,
colour = "white", lwd=4)+
theme_bw()Claramente han ido en aumento las licencias médicas de la provincia, pero hay que destacar que de un total de 2.500 funcionarios aproximadamente, solo el mes de mayo 2022, el 28% ha presentado al menos una licencia que genera un ausentismo de un día a más.
Si observamos, la siguiente tabla:
summary(lic_med$dias)
summary(lic_med$montos_recuperar)| Variable | Min | 1er Cuartil | Mediana | Media | 3er Cuartil | Max |
|---|---|---|---|---|---|---|
| Días | 1.00 | 5.00 | 14.00 | 16.49 | 28.00 | 120.00 |
| Montos a Recuperar | 13.322 | 150.096 | 314.511 | 506.535 | 649.551 | 6.201.724 |
Se aprecia que los días oscilan entre 1 y 120, en la que hay que destacar que dentro de ellas estan las licencias por embarazo las cuales corresponden a 25 licencias, el resto son psiquiátricas (un 66.6%), un 20% en enfermedades por medicina general y traumatología y Enfermedad por hijo (13.4%). además, en promedio son 16.49 días y en mediana unos 14 días.
ggplot(lic_med) +
aes(x = Escalafon, y = dias) +
geom_col(fill = "#1E7EDB") +
labs(x = "Escalafon", y = "Cantidad de Días",
title = "Total de dias en el periodo", subtitle = "De Enero a Mayo 2022", caption = "Provincia del Huasco") +
theme_bw()ggplot(lic_med) +
aes(x = Escalafon, y = dias, group = Escalafon) +
geom_boxplot(fill = "#FF8C00") +
labs(x = "Escalafon", y = "Cantidad de Días", title = "Boxplot de la Cantidad de Dias por LM", subtitle = "Por Escalafon",
caption = "Provincia del Huasco") +
theme_bw()Al observar el boxplot se tiende a ver aproximadamente como distribuyen y en que escala en comparación a las demás categorías, y se observa que los docentes y asistentes concentran en términos relativos la mayor cantidad de licencias médicas.
| Freq | % | % Cum. | |
|---|---|---|---|
| JUNJI | 178 | 12.08 | 12.08 |
| P-01 | 31 | 2.10 | 14.19 |
| P-02 | 1264 | 85.81 | 100.00 |
| Total | 1473 | 100.00 | 100.00 |
el programa 02 que comprende a los asistentes y docentes en conjunto, un 85.81% de las licencias emitidas, son de esta categoría.
Otro dato relevante a considerar, es el monto a recuperar por esas licencias med., sin entrar en más detalles, el monto a recuperar es de : $ 746.126.628 a la fecha. (Esto es un aproximado), lo cual genera un excedente positivo a las arcas públicas.
# por Escalafon
ggplot(lic_med) +
aes(x = Mes, group = Escalafon) +
geom_bar(fill = "#3805CD") +
labs(y = "Cantidad de licencias",
title = "Licencias", subtitle = "de enero a mayo", caption = "Provincia del Huasco")+
geom_text(aes(label = ..count..),
stat = "count", vjust = 2,
colour = "white", lwd=2)+
theme_bw() +
facet_wrap(vars(Escalafon))# Por Programa
ggplot(lic_med) +
aes(x = Mes) +
geom_bar(fill = "#228B22") +
labs(y = "Cantidad de Licencias", title = "Evolucion mensual por programa",
subtitle = "de Enero a Mayo 2022", caption = "Provincia del Huasco") +
theme_bw() +
facet_wrap(vars(Programa))# Por Proyecto
ggplot(lic_med) +
aes(x = Mes) +
geom_bar(fill = "#B209DB") +
labs(y = "Cantidad de licencias", title = "Evolución mensual por Proyecto",
subtitle = "de Enero a Mayo 2022", caption = "Provincia del Huasco") +
theme_minimal() +
facet_wrap(vars(Proyecto))Al observar los gráficos, sigue mostrando la tendencia al alza junto con los distintas categorías que son de interés a un director del servicio publico, ademas, hay mucha mas información relevante que analizar, pero por efecto del proyecto 3, se dejo a estas categorías.
Finalmente ante la propuesta, se concluye que el grado de emisión de licencias medicas de la provincia son alarmantes, ya que comprenden mas del 25% de la dotación, sin embargo, es un primer paso a destacar el gran impacto que provoca el ausentismos de los profesionales y técnicos de la educación post pandemia. hoy en día se tiene que tomar las riendas del asunto, junto con analizar de manera mas exhaustiva, las posibles implicancias que a nivel provincial están sucediendo. a que nivel asociado se encuentra el ausentismo con los resultados simce y prueba de admision universitaria por ejemplo.