El trabajo infantil en Colombia persiste como una problemática social que limita el desarrollo educativo y perpetúa la desigualdad, a pesar de los esfuerzos normativos para su reducción. Comprender los factores que lo explican resulta clave para diseñar políticas públicas más efectivas.
La presente investigación busca responder a la pregunta: ¿Cómo se pueden identificar y caracterizar diferentes perfiles socioeconómicos de niños, niñas y adolescentes en situación de trabajo infantil en Colombia durante 2024, y cuáles son los factores que explican con mayor persistencia su prevalencia en distintos contextos demográficos y territoriales?
Para ello, se aplicarán técnicas de análisis estadístico multivariado como regresión múltiple y logística, ANOVA/MANOVA y métodos de clasificación, que permitirán explorar las relaciones entre variables sociodemográficas, educativas, económicas y territoriales. De esta manera, el estudio pretende aportar evidencia que contribuya a una mejor comprensión del fenómeno y a la formulación de estrategias de intervención orientadas a la protección de la niñez.
#Cargar datos
setwd("D:/URosario/Semestre5/Análisis Estadístico de Datos/PROYECTO")
#Librerias necesarias
library(readr)
library(dplyr)
library(ggplot2)
library(modeest)
library(readr)
#Cargar base de datos
BASE <- read_delim("total_tri_4_2024_pl.CSV",
delim = ";", escape_double = FALSE, trim_ws = TRUE)
# Selección de variables
datos = BASE[,c('P3271', "P6040", "P6050", "P6090", "P6160", "P6170", "P3042", "CLASE","P400", "P401", "P402", "P403", "P404", "P405", "P408", "P409", "P410", "P411", "P414", "P415", "P420", "P3131S1", "P3131S2", "P3131S3", "P3132S1","P3132S2", "P3132S3", "P3133S1", "P3133S2", "P3133S3", "P3134S1", "P3134S2", "P3134S3", "P3135S1", "P3135S2", "P3135S3", "P3142","P3143", "P3145", "P423", "AREA")]
Se realiza las visualizaciones de 30 variables para conocer su distribución de frecuencia. Entre las variables demográficas se incluyeron el sexo al nacer (P3271), la edad (P6040), el parentesco con el jefe del hogar (P6050) y la clase del hogar urbano/rural (CLASE). En el ámbito educativo se consideraron la afiliación a seguridad social en salud (P6090), la capacidad de leer y escribir (P6160), la asistencia a una institución educativa (P6170) y el nivel educativo alcanzado (P3042). Respecto a las condiciones laborales se analizaron la actividad principal de la semana pasada (P400), la realización de actividades pagas (P401), la tenencia de trabajo o negocio (P402), la ayuda sin pago en un negocio familiar (P403), las diligencias para conseguir empleo (P404), la razón principal para trabajar (P405), la condición laboral (P408), el ingreso mensual antes de descuentos (P409), la recepción de alimentos o vivienda como pago (P410, P411), los meses trabajados (P414), las horas trabajadas por semana (P415) y el lugar donde realiza su trabajo (P420). Finalmente, se incorporaron variables adicionales de actividades específicas (P3131S1 a P3135S3, P3142, P3143, P3145) y la razón principal para realizar oficios del hogar (P423). Estas variables, en conjunto, proporcionan una visión integral de los factores socioeconómicos, educativos y laborales asociados al trabajo infantil en Colombia.
#gráfica ¿Cuál fue su sexo al nacer?
datos$P3271 <- factor(datos$P3271,
levels = c(1, 2),
labels = c("Masculino", "Femenino"))
prop.table(table(datos$P3271)) * 100
##
## Masculino Femenino
## 50.86765 49.13235
#Edad
summary(datos["P6040"])
## P6040
## Min. : 5.00
## 1st Qu.: 8.00
## Median :11.00
## Mean :11.23
## 3rd Qu.:14.00
## Max. :17.00
ggplot(datos, aes(x = P6040)) +
geom_histogram(binwidth = 1, fill = "steelblue", color = "black") +
labs(title = "Histograma de la Edad",
x = "Edad",
y = "Frecuencia") +
theme_minimal()
Los individuos tienen edad entre los 5 y 17 años, con una media de 11 años. Se observa una distribución equilibrada de edades, con una mayor concentración de individuos en los rangos más altos, aunque sin que esto represente un predominio excesivo.
#¿Cuál es el parentesco de … con el jefe o jefa del hogar?
datos$P6050 <- factor(datos$P6050,
levels = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13),
labels = c("jefedehogar", "pareja/esposo", "hijo/hijastro", "padre/madre",
"suegro", "hermano/hermanastro", "yerno/nuera", "nieto", "otro pariente",
"empleado del servicio doméstico", "pensionista", "trabajador",
"otro no pariente"))
datos %>%
count(P6050) %>%
mutate(porcentaje = n / sum(n) * 100)
#Clase
datos$CLASE <- factor(datos$CLASE,
levels = c(1, 2),
labels = c("cabecera", "resto"))
#¿Está afiliado, es cotizante o beneficiario de alguna entidad de seguridad social en salud?
datos$P6090 <- factor(datos$P6090,
levels = c(1, 2, 9),
labels = c("Si", "No", "Nosabe/Noinforma"))
tabla <- datos %>%
count(P6090, CLASE) %>%
group_by(CLASE) %>%
mutate(prop = n / sum(n))
Los datos muestran que la estructura de los hogares está dominada por relaciones familiares directas: más de tres cuartas partes de los individuos son hijos o hijastros del jefe del hogar, y casi una quinta parte son nietos. Esto refleja la importancia de los hogares nucleares y extendidos en la conformación familiar. Aunque en proporciones muy bajas, también se registran empleados del servicio doméstico y personas sin parentesco, lo que indica convivencia no familiar.
#Edad segun sabe leer
ggplot(datos, aes(x = P6160, y = P6040, fill = P6160)) +
geom_boxplot() +
labs(title = "Edad según saber escribir y leer",
x = "Sabe escribir", y = "Edad") +
theme_minimal()
# Filtramos solo los que no saben leer
no_leen <- datos %>%
filter(P6160 == "No")
table(no_leen$P6040, no_leen$CLASE)
## < table of extent 0 x 2 >
#¿Actualmente asiste a alguna institución educativa (jardín, escuela, colegio,universidad)?
datos$P6170 <- factor(datos$P6170,
levels = c(1, 2),
labels = c("Sí", "No"))
ggplot(datos, aes(x = P6170, y = P6040, fill = P6170)) +
geom_boxplot() +
labs(title = "Edad según asiste a alguna institución educativa",
x = "Asiste a una institucion educativa", y = "Edad") +
theme_minimal()
datos %>%
count(P6170) %>%
mutate(porcentaje = n / sum(n) * 100)
#Año o Grado alcanzado
datos$P3042 <- factor(datos$P3042,
levels = c(1, 2, 3, 4, 5,6,7,8,9,10,11,12,13,99),
labels = c("ninguno", "preescolar", "Bprimaria", "Bsecundaria",
"Bachillerato", "Bachillerato técnico", "normalista",
"tecnica profesional", "tecnológica", "universitaria",
"especialización", "maestria", "doctora", "Nosabe/Noinforma"))
datos %>%
count(P3042) %>%
mutate(porcentaje = n / sum(n) * 100)
sin_escolaridad <- datos %>%
filter(P3042 == "ninguno")
#Edades de personas sin ningún año escolar aprobado
ggplot(sin_escolaridad, aes(x = P6040)) +
geom_histogram(binwidth = 1, fill = "tomato", color = "white") +
labs(
title = "Edades de personas sin ningún año escolar aprobado",
x = "Edad",
y = "Frecuencia"
) +
theme_minimal()
Se observa una mayoría en la asistencia de los jóvenes a instituciones educativas con un 91.7% . La asistencia una institución educativa se ve reflejada en todas las edades, con una media de 11 años. La no asistencia a una institución educativa se concentra en edades mayores, con una media de 15 años, pero se ve una concentración significante de los 9 años a los 17 años.
La mayoría de los individuos reporta como último año aprobado la educación básica primaria (42%) y la secundaria (34.9%), lo que significa que cerca del 77% de la población se concentra en niveles básicos. Un 10.7% alcanzó el bachillerato, mientras que la proporción que accede a educación superior es muy baja (1.65% en total entre técnico, tecnológico y universitario). Además, un 2.14% no tiene ningún año aprobado, lo que refleja rezago educativo.
Este histograma muestra que la mayoría de los niños sin ningún año escolar aprobado se concentran en edades muy tempranas, especialmente a los 5 años, lo cual es esperable porque aún no han tenido la oportunidad de iniciar o avanzar en el sistema educativo. A medida que la edad aumenta, la frecuencia disminuye considerablemente, aunque todavía se observan algunos casos aislados en adolescentes mayores. Esto refleja que, si bien es normal que los más pequeños no tengan años aprobados, la permanencia de esta condición en edades avanzadas evidencia rezago educativo y posibles barreras de acceso o continuidad en la escolarización
#¿En qué actividad ocupó la mayor parte del tiempo la semana pasada?
datos$P400 <- factor(datos$P400,
levels = c(1, 2, 3, 4, 5,6),
labels = c("trabajando", "buscandotrabajo", "estudiando",
"oficios del hogar", "Incapacitado permanente para trabajar",
"otro"))
ggplot(datos, aes(x = factor(P400))) +
geom_bar(fill = "steelblue") +
labs(
title = "Actividad principal de la semana pasada",
x = "Actividad",
y = "Frecuencia"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#¿Realizó alguna actividad paga por una hora o más la semana pasada?
datos %>%
count(P401) %>%
mutate(porcentaje = n / sum(n) * 100)
Este gráfico muestra la actividad principal realizada por los niños, niñas y adolescentes la semana pasada. Se observa que la mayoría se dedica principalmente a estudiar, lo cual es un resultado positivo, ya que refleja el acceso y permanencia en el sistema educativo. Sin embargo, también aparecen grupos más pequeños que reportan estar trabajando, buscando empleo o realizando oficios del hogar, lo que evidencia la presencia de trabajo infantil o responsabilidades domésticas a temprana edad. Estos casos minoritarios son importantes porque representan situaciones de riesgo que pueden afectar la continuidad escolar y el desarrollo integral de los menores.
La tabla muestra que solo una fracción muy pequeña de los niños y niñas (0,47%, equivalente a 183 casos) declaró haber realizado alguna actividad remunerada por una hora o más en la última semana. La gran mayoría 98,2% no reportó haber trabajado, mientras que un 1,34% aparece como “NA”, lo que indica ausencia de respuesta.
#¿Tenía durante esa semana algún trabajo o negocio por el que recibe ingresos?
datos %>%
count(P402) %>%
mutate(porcentaje = n / sum(n) * 100)
#¿Ayudó sin pago en la empresa o negocio de un familiar?
datos %>%
count(P403) %>%
mutate(porcentaje = n / sum(n) * 100)
Se observa que solo un 0,54% de los niños, niñas y adolescentes reportó haber colaborado sin remuneración en la empresa o negocio de un familiar durante la semana pasada. En contraste, la gran mayoría (97,3%, equivalente a 37.911 casos) indicó no haber participado en este tipo de actividad, mientras que un 2,14% corresponde a respuestas no registradas o no aplicables. Estos resultados refuerzan la idea de que, dentro de la muestra, la participación en actividades laborales no remuneradas vinculadas al entorno familiar es poco frecuente, aunque es importante considerarla porque puede reflejar formas de trabajo infantil que suelen pasar desapercibidas al no generar ingresos directos. Adicional
se identifica que únicamente el 0,51% de los niños, niñas y adolescentes declaró haber realizado alguna gestión para conseguir un empleo o instalar un negocio, mientras que el 97,1% respondió que no.
#¿Hizo alguna diligencia para conseguir un trabajo o instalar un negocio?
datos %>%
count(P404) %>%
mutate(porcentaje = n / sum(n) * 100)
#Proporción de diligencias según nivel educativo
datos$P404 <- factor(datos$P404,
levels = c(1, 2),
labels = c("Sí", "No"))
ggplot(datos, aes(x = P3042, fill = P404)) +
geom_bar(position = "fill") +
labs(title = "Proporción de conseguir un trabajo según nivel educativo",
x = "Nivel educativo alcanzado",
y = "Proporción",
fill = "¿Hizo diligencia?") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
El gráfico muestra la proporción de niños, niñas y adolescentes que realizaron diligencias para conseguir trabajo o instalar un negocio, diferenciada por nivel educativo alcanzado. En todos los niveles, la gran mayoría no reportó haber hecho gestiones, mientras que el porcentaje de quienes sí lo hicieron es prácticamente marginal y es en los niveles educativos mayores, que tiene sentido que estén buscando trabajo.
La variable sobre la razón principal por la que trabajan los niños, niñas y adolescentes evidencia que los motivos más frecuentes son el gusto por tener su propio dinero (0,89%) y la participación en la actividad económica de la familia (0,52%), seguidos por el apoyo en los gastos del hogar (0,37%). Otras razones, como costearse estudios, la idea de que el trabajo los forma, o que los aleja de los vicios, tienen una representación mínima. Sin embargo, lo más preocupante es que un 98% de los registros aparece como “NA”, es decir, sin información disponible. Esta ausencia masiva de datos limita de manera crítica la interpretación del fenómeno, ya que impide comprender con precisión las motivaciones reales detrás del trabajo infantil. Podríamos suponer que son los individuos que no trabajan que se ve reflejada en la variable: ¿Realizó alguna actividad paga por una hora o más la semana pasada? Donde se obtuvo 38.252 casos “No”, sin embargo, las cantidades no empatan.
#Razón principal por la que trabaja
datos$P405 <- factor(datos$P405,
levels = c(1, 2, 3, 4, 5,6,7),
labels = c("costearse el estudio", "ayudar con los gastos de la casa",
"participar en la actividad económica de la familia",
"trabajo lo forma y lo hace honrado", "el trabajo lo aleja de los vicios",
"Le gusta trabajar para tener su propio dinero", "otro"))
datos %>%
count(P405) %>%
mutate(porcentaje = n / sum(n) * 100)
S
#Condición laboral en este trabajo
datos$P408 <- factor(datos$P408,
levels = c(1, 2, 3, 4, 5,6,7,8),
labels = c("Obrero o empleado particular", "-", "Empleado doméstico",
"Trabajador por cuenta propia", "-", "Trabajador familiar sin remuneración",
"Jornalero o Peón", "otro"))
tabla <- table(datos['P408'])
barplot(tabla,
col = "skyblue",
main = "Condición laboral en este trabajo",
ylab = "Frecuencia",
xlab = "Categoría",
las = 2)
En la gráfica se ve reflejado que el trabajador por cuenta propia tiene mayor frecuencia, es decir, que trabajan como independientes. Luego el empleado particular que se entiende como trabajador para una empresa o negocio, el trabajador familiar sin remuneración también tiene una frecuencia importante. Omita la columna “,” que es un error en la base de datos, de todas formas tiene 0 resultados.
#¿Recibió alimentos como parte de pago?
datos %>%
count(P410) %>%
mutate(porcentaje = n / sum(n) * 100)
#¿Recibió vivienda como parte de pago?
datos %>%
count(P411) %>%
mutate(porcentaje = n / sum(n) * 100)
#Ingreso mensual antes de descuentos
summary(datos['P409'])
## P409
## Min. : 0
## 1st Qu.: 300000
## Median : 500000
## Mean : 580495
## 3rd Qu.: 800000
## Max. :1800000
## NA's :38652
ggplot(datos, aes(x = P409)) +
geom_density(fill = "lightblue", alpha = 0.6) +
labs(title = "Distribución de densidad de ingresos",
x = "Ingreso mensual antes de descuentos",
y = "Densidad") +
theme_minimal()
En cuanto a la variable de ingreso mensual, los resultados muestran que los menores que reportaron algún ingreso presentan un promedio de 580.495 COP, lo que indica cierta concentración hacia valores bajos, aunque existen casos con ingresos mucho más altos (máximo de 1.800.000 COP). El rango intercuartílico (300.000 – 800.000 COP) sugiere que la mayoría de los niños y niñas que trabajan reciben ingresos en niveles bastante reducidos, lo que refleja condiciones de vulnerabilidad económica y probablemente de informalidad laboral.
La gráfica de densidad muestra que la mayoría de los ingresos mensuales reportados se concentran en valores bajos, con un pico principal alrededor de los 300.000 a 500.000 COP. A partir de este rango, la densidad disminuye progresivamente, evidenciando que los ingresos altos son poco frecuentes, aunque existen casos aislados que alcanzan montos cercanos a 1.800.000 COP. Esta distribución sesgada hacia la izquierda confirma que la mayoría de los menores que trabajan perciben remuneraciones reducidas.
# Crear grupos de edad
datos$grupo_edad <- cut(datos$P6040,
breaks = c(5, 8, 12, 15, 17),
labels = c("5-8", "9-12", "13-15", "16-17"))
# Boxplot
boxplot(P409 ~ grupo_edad, data = datos,
col = "lightgreen",
main = "Ingreso mensual por grupos de edad",
xlab = "Grupo de edad",
ylab = "Ingreso mensual antes de descuentos")
El diagrama muestra que los ingresos mensuales tienden a aumentar con la edad. En el grupo de 9 a 12 años, la mediana se ubica cerca de los 500.000 COP, con un rango relativamente estrecho. En los grupos de 13 a 15 y 16 a 17 años, los ingresos presentan una mayor dispersión, con medianas cercanas a 500.000–600.000 COP, pero con valores que llegan a superar el millón y medio de pesos en algunos casos. También se observan valores atípicos en el grupo de 13 a 15 años. Esto evidencia que, aunque los ingresos promedio no son altos, los adolescentes mayores tienen más probabilidad de acceder a pagos más elevados, lo que refleja una relación entre edad y mayor inserción en actividades laborales mejor remuneradas, aunque persiste una alta variabilidad y precariedad en la mayoría de los casos.
#meses trabajados
summary(datos$P414)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.000 3.000 10.000 7.867 12.000 12.000 38169
tabla <- table(datos['P414'])
barplot(tabla,
col = "skyblue",
main = "Meses trabajados en un año",
ylab = "Frecuencia",
xlab = "Meses")
#horas trabajadas
summary(datos$P415)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.00 16.00 30.00 30.42 42.00 112.00 38169
hist(datos$P415, breaks = 30,
main = "Distribución de horas trabajadas",
xlab = "Horas trabajadas por semana")
datos$P420 <- factor(datos$P420,
levels = c(1, 2, 3, 4, 5,6,7,8,9,10,11),
labels = c("En esta vivienda", "Otras viviendas", "caseta",
"vehículo", "puerta en puerta", "ambulante", "Local fijo, oficina, fábrica",
"area rural", "obra en construcción", "mina", "otro"))
mas_40 <- subset(datos, !is.na(P415) & P415 > 46)
summary(mas_40)
## P3271 P6040 P6050
## Masculino:109 Min. :13.00 hijo/hijastro :92
## Femenino : 53 1st Qu.:16.00 nieto :24
## Median :17.00 jefedehogar :12
## Mean :16.28 otro pariente :10
## 3rd Qu.:17.00 pareja/esposo : 7
## Max. :17.00 hermano/hermanastro: 6
## (Other) :11
## P6090 P6160 P6170 P3042
## Si :142 Min. :1.000 Sí: 35 Bsecundaria :83
## No : 20 1st Qu.:1.000 No:127 Bachillerato :43
## Nosabe/Noinforma: 0 Median :1.000 Bprimaria :28
## Mean :1.012 tecnica profesional: 4
## 3rd Qu.:1.000 universitaria : 2
## Max. :2.000 ninguno : 1
## (Other) : 1
## CLASE P400 P401
## cabecera:116 trabajando :143 Min. :1.000
## resto : 46 buscandotrabajo : 1 1st Qu.:1.000
## estudiando : 15 Median :1.000
## oficios del hogar : 3 Mean :1.304
## Incapacitado permanente para trabajar: 0 3rd Qu.:2.000
## otro : 0 Max. :2.000
## NA's :139
## P402 P403 P404
## Min. : NA Min. :1 Sí : 0
## 1st Qu.: NA 1st Qu.:1 No : 0
## Median : NA Median :1 NA's:162
## Mean :NaN Mean :1
## 3rd Qu.: NA 3rd Qu.:1
## Max. : NA Max. :1
## NA's :162 NA's :155
## P405
## costearse el estudio : 5
## ayudar con los gastos de la casa :38
## participar en la actividad económica de la familia:16
## trabajo lo forma y lo hace honrado : 6
## el trabajo lo aleja de los vicios : 4
## Le gusta trabajar para tener su propio dinero :88
## otro : 5
## P408 P409 P410
## Obrero o empleado particular :77 Min. : 0 Min. :1.000
## - : 0 1st Qu.: 600000 1st Qu.:2.000
## Empleado doméstico : 9 Median : 900000 Median :2.000
## Trabajador por cuenta propia :46 Mean : 889631 Mean :1.769
## Trabajador familiar sin remuneración: 8 3rd Qu.:1200000 3rd Qu.:2.000
## Jornalero o Peón :22 Max. :1800000 Max. :2.000
## otro : 0 NA's :54 NA's :54
## P411 P414 P415
## Min. :1.000 Min. : 1.000 Min. : 47.0
## 1st Qu.:2.000 1st Qu.: 3.000 1st Qu.: 48.0
## Median :2.000 Median : 9.000 Median : 50.0
## Mean :1.926 Mean : 7.667 Mean : 55.2
## 3rd Qu.:2.000 3rd Qu.:12.000 3rd Qu.: 60.0
## Max. :2.000 Max. :12.000 Max. :112.0
## NA's :54
## P420 P3131S1 P3131S2 P3131S3
## Local fijo, oficina, fábrica:74 Min. :1.000 Min. :2 Min. :2
## area rural :49 1st Qu.:1.000 1st Qu.:2 1st Qu.:2
## Otras viviendas :12 Median :2.000 Median :2 Median :2
## En esta vivienda : 9 Mean :1.623 Mean :2 Mean :2
## obra en construcción : 7 3rd Qu.:2.000 3rd Qu.:2 3rd Qu.:2
## ambulante : 5 Max. :2.000 Max. :2 Max. :2
## (Other) : 6
## P3132S1 P3132S2 P3132S3 P3133S1 P3133S2
## Min. :1.000 Min. :2 Min. :2 Min. :1.000 Min. :2
## 1st Qu.:1.000 1st Qu.:2 1st Qu.:2 1st Qu.:1.000 1st Qu.:2
## Median :2.000 Median :2 Median :2 Median :1.000 Median :2
## Mean :1.549 Mean :2 Mean :2 Mean :1.457 Mean :2
## 3rd Qu.:2.000 3rd Qu.:2 3rd Qu.:2 3rd Qu.:2.000 3rd Qu.:2
## Max. :2.000 Max. :2 Max. :2 Max. :2.000 Max. :2
##
## P3133S3 P3134S1 P3134S2 P3134S3 P3135S1
## Min. :1.000 Min. :1.000 Min. :2 Min. :2 Min. :2
## 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2 1st Qu.:2 1st Qu.:2
## Median :2.000 Median :2.000 Median :2 Median :2 Median :2
## Mean :1.994 Mean :1.951 Mean :2 Mean :2 Mean :2
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2 3rd Qu.:2 3rd Qu.:2
## Max. :2.000 Max. :2.000 Max. :2 Max. :2 Max. :2
##
## P3135S2 P3135S3 P3142 P3143 P3145
## Min. :2 Min. :2 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:2 1st Qu.:2 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:2.000
## Median :2 Median :2 Median :2.000 Median :2.000 Median :2.000
## Mean :2 Mean :2 Mean :1.981 Mean :1.988 Mean :1.826
## 3rd Qu.:2 3rd Qu.:2 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :2 Max. :2 Max. :2.000 Max. :2.000 Max. :2.000
## NA's :116
## P423 AREA grupo_edad
## Min. : NA Length:162 5-8 : 0
## 1st Qu.: NA Class :character 9-12 : 0
## Median : NA Mode :character 13-15: 32
## Mean :NaN 16-17:130
## 3rd Qu.: NA
## Max. : NA
## NA's :162
El diagrama Meses trabajados en un año muestra que los ingresos mensuales tienden a aumentar con la edad. En el grupo de 9 a 12 años, la mediana se ubica cerca de los 500.000 COP, con un rango relativamente estrecho. En los grupos de 13 a 15 y 16 a 17 años, los ingresos presentan una mayor dispersión, con medianas cercanas a 500.000–600.000 COP, pero con valores que llegan a superar el millón y medio de pesos en algunos casos. También se observan valores atípicos en el grupo de 13 a 15 años. Esto evidencia que, aunque los ingresos promedio no son altos, los adolescentes mayores tienen más probabilidad de acceder a pagos más elevados, lo que refleja una relación entre edad y mayor inserción en actividades laborales mejor remuneradas, aunque persiste una alta variabilidad y precariedad en la mayoría de los casos.
La distribución Distribucion de horas trabajadas revela que muchos niños y adolescentes trabajan entre 20 y 40 horas, es decir, jornadas comparables a un empleo de medio tiempo o incluso completo. Esto refleja que, para una parte significativa de esta población, el trabajo no es una actividad ocasional, sino que ocupa un tiempo considerable que probablemente interfiere con su asistencia escolar, su descanso y su desarrollo integralundefined
#donde realiza el trabajo
ggplot(datos %>% filter(!is.na(P420)), aes(x = P420, fill = P420)) +
geom_bar() +
labs(
title = "Lugar principal donde realiza su trabajo (P420)",
x = "Lugar de trabajo",
y = "Frecuencia"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
La distribución revela que muchos niños y adolescentes trabajan entre 20 y 40 horas, es decir, jornadas comparables a un empleo de medio tiempo o incluso completo. Esto refleja que, para una parte significativa de esta población, el trabajo no es una actividad ocasional, sino que ocupa un tiempo considerable que probablemente interfiere con su asistencia escolar, su descanso y su desarrollo integral
library(tidyr)
#Variables numericas
act_vars <- c("P3131S1","P3131S2","P3131S3", "P3132S1","P3132S2","P3132S3", "P3133S1",
"P3133S2", "P3133S3", "P3134S1","P3134S2", "P3134S3", "P3135S1", "P3135S2",
"P3135S3", "P3142", "P3143", "P3145")
df_acts <- datos %>% select(all_of(act_vars))
df_long <- df_acts %>%
pivot_longer(cols = everything(),
names_to = "Actividad",
values_to = "Respuesta")
conteo <- df_long %>%
group_by(Actividad, Respuesta) %>%
summarise(Frecuencia = n(), .groups = "drop")
#¿Por qué razón principal realiza o colabora en estos oficios?
datos$P423 <- factor(datos$P423,
levels = c(1, 2, 3, 4, 5,6),
labels = c("Sus padres tienen que trabajar", "No hay otra persona quien los haga",
"Tiene que colaborar en el hogar", "Debe aprender a hacerlos", "Por herencia o tradición",
"otro"))
ggplot(datos, aes(x = P423)) +
geom_bar(aes(y = (..count..)/sum(..count..)), fill = "darkorange") +
scale_y_continuous(labels = scales::percent) +
labs(title = "Razón principal para realizar oficios",
x = "Razón principal",
y = "Proporción") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
library(ggplot2)
datos %>%
filter(!is.na(P423)) %>%
ggplot(aes(x = P423)) +
geom_bar(aes(y = (..count..)/sum(..count..)), fill = "darkorange") +
scale_y_continuous(labels = scales::percent) +
labs(title = "Razón principal para realizar oficios",
x = "Razón principal",
y = "Proporción") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
En la primera gráfica se observa que la categoría con mayor peso corresponde a valores perdidos (NA), lo que indica que una parte importante de los encuestados no respondió esta pregunta, lo que limita el análisis.
Cuando se excluyen los NA, la principal razón reportada para realizar oficios domésticos es que los menores “deben aprender a hacerlos”, con cerca del 75% de las respuestas. En menor medida, aparece la categoría “tiene que colaborar en el hogar”, mientras que razones como “sus padres tienen que trabajar”, “no hay otra persona que los haga” o “por herencia o tradición” tienen una frecuencia baja.
Esto sugiere que, más que una obligación por ausencia de adultos responsables, los oficios domésticos en este grupo están ligados a procesos de aprendizaje y socialización en el hogar. Sin embargo, la alta proporción de no respuesta es un aspecto que debe tenerse en cuenta en la interpretación, ya que puede ocultar otras motivaciones no captadas adecuadamente.
El análisis descriptivo permite comprender la distribución de las variables seleccionadas, identificando sus tendencias centrales, dispersión y posición relativa. Se utilizarán medidas clásicas de estadística descriptiva:
Tendencia central: media, mediana y moda.
Variabilidad: varianza, desviación estándar y coeficiente de variación.
Posición relativa: cuartiles (Q1, Q2, Q3).
El software empleado es RStudio, ya que permite automatizar el análisis sobre un conjunto amplio de variables y generar resultados reproducibles.
# Función para análisis descriptivo
analisis_variable <- function(x){
x <- na.omit(x)
data.frame(
Media = mean(x),
Mediana = median(x),
Moda = mfv(x),
Varianza = var(x),
Desv_Estandar = sd(x),
Coef_Variacion = (sd(x)/mean(x))*100,
Q1 = quantile(x, 0.25),
Q2 = quantile(x, 0.50),
Q3 = quantile(x, 0.75)
)
}
# Aplicar solo a variables numéricas
vars_numericas <- datos %>% select_if(is.numeric)
# Resultados
resultados <- lapply(vars_numericas, analisis_variable)
resultados_df <- do.call(rbind, resultados)
rownames(resultados_df) <- names(vars_numericas)
resultados_df
Se crea la variable trabaja_any para separar por genero, se identifican 14 variables que podrían resolver la pregunta problema planteada, se calculan medidas de tendencia central, variabilidad y posición relativa.
- `trabaja_any` → Indicador binario (1 = trabaja, 0 = no trabaja)
- **P6040** → Edad - **P3271** → Sexo - **AREA** → Área de residencia
- **P6170** → Asistencia escolar - **P6090** → Afiliación a seguridad social en salud - **P6160** → Sabe leer y escribir
- **P3142** → Horas trabajadas
- **P3042** → Relación con jefe de hogar / nivel educativo en el hogar - **P400** → Ingresos laborales del hogar / actividad principal - **P401** → Gastos del hogar / actividad paga - **P420** → Condiciones de vivienda / lugar de trabajo
- **P3145** → Días trabajados (omitida).
# Paquete para moda
library(DescTools) # para la función Mode()
# Función para variables numéricas
analisis_variable_num <- function(x){
x <- na.omit(x)
data.frame(
Media = mean(x),
Mediana = median(x),
Moda = Mode(x),
Varianza = var(x),
Desv_Estandar = sd(x),
Coef_Variacion = (sd(x)/mean(x))*100,
Q1 = quantile(x, 0.25),
Q2 = quantile(x, 0.50),
Q3 = quantile(x, 0.75)
)
}
# Función para variables categóricas
analisis_variable_cat <- function(x){
x <- na.omit(x)
moda <- Mode(x)
tabla <- prop.table(table(x)) * 100
data.frame(
Moda = moda,
Frec_Moda = max(tabla),
stringsAsFactors = FALSE
)
}
# Variables numéricas a analizar
vars_num <- c("P6040", "P3142")
resultados_num <- lapply(datos[vars_num], analisis_variable_num)
resultados_num_df <- do.call(rbind, resultados_num)
rownames(resultados_num_df) <- vars_num
# Variables categóricas a analizar
vars_cat <- c("P3271","AREA","P6170","P6090","P6160","P3042","P400","P401","P420")
resultados_cat <- lapply(datos[vars_cat], analisis_variable_cat)
resultados_cat_df <- do.call(rbind, resultados_cat)
rownames(resultados_cat_df) <- vars_cat
# Resultados finales
resultados_num_df # estadísticas completas para numéricas
resultados_cat_df # moda y % de la moda para categóricas
Estadísticos básicos: Media ≈ 11.23 años; Mediana = 11; Moda = 16; Varianza ≈ 13.85; Desviación estándar ≈ 3.72; Coeficiente de variación ≈ 33.14%; Q1 = 8, Q2 = 11, Q3 = 14.
Interpretación: la población analizada se concentra en edades escolares (mayoría entre 8 y 14 años) con una edad promedio de ~11 años. La mediana y la media cercanas indican distribución relativamente simétrica en torno a la edad escolar; el coeficiente de variación (33%) muestra una dispersión moderada: hay heterogeneidad pero no extrema. La moda en 16 años sugiere que, aunque más frecuente es 11 en el centro de la distribución, hay un pico adicional en la adolescencia temprana —esto es relevante porque la probabilidad de involucrarse en trabajo infantil suele aumentar con la edad adolescente.
Implicaciones para el análisis: estratificar análisis por rangos de edad (p. ej. 5–8, 9–12, 13–15, 16–17) para ver cambios en prevalencia y perfiles; controlar la edad en modelos multivariados.
Estadísticos básicos: Media ≈ 1.997 (~2), Mediana = 2, Moda = 2; Varianza ≈ 0.0030; Desviación estándar ≈ 0.057; CV ≈ 2.88%; Q1=Q2=Q3=2.
Interpretación: la variable está extremadamente concentrada en el valor 2 (prácticamente todos reportan 2). La varianza y la DE son casi nulas. Esto indica poca o nula variabilidad en la codificación (probablemente la encuesta presenta categorías discretas y la mayoría respondió la misma categoría).
Limitación importante: cuando una variable está tan concentrada, no aporta poder explicativo en regresiones en forma continua y produce poco contraste en análisis descriptivos.
Implicaciones para el análisis: tratar P3142 como variable categórica y/o recodificar según el diccionario (si 2 significa “2 horas” o una categoría particular). Verificar codificación en el diccionario: ¿2 = “2 horas” o “≥X horas”? Si la variable no aporta variación útil, considerar usar otras variables (P401/P402) o crear indicadores compuestos.
Moda: Masculino; Frec_Moda ≈ 50.87%.
Interpretación: la muestra aparece casi equilibrada por sexo (masculino ligeramente predominante). Esto sugiere que, en términos de frecuencia simple, no hay una fuerte desproporción hombre/mujer en la población de estudio.
Implicaciones para el análisis: incluir sexo como variable de control en modelos y comparar perfiles por sexo (podrían aparecer diferencias en tipos de trabajo, lugar o razones para trabajar aunque la proporción global sea parecida)
Moda: código 99; Frec_Moda ≈ 36.26%.
Interpretación: el código modal es 99 y abarca más de un tercio de la muestra. Aviso: el código numérico por sí solo no indica urbano/rural — hay que revisar el diccionario para saber qué representa 99 (puede ser un departamento específico o “no informa”).
Implicaciones: antes de interpretar territorialidad, confirmar el significado de 99. Si 99 representa un tipo particular de área (ej. rural disperso o departamento X), hay una concentración territorial que condiciona la prevalencia del trabajo infantil. En todo caso, usar la variable CLASE (cabecera/resto) si lo que interesa es urbano vs rural.
Moda: Sí; Frec_Moda ≈ 91.75%.
Interpretación: la gran mayoría de la muestra declara asistir a una institución educativa. Esto indica alta cobertura escolar entre los observados. Sin embargo, aunque la proporción sea alta, el pequeño grupo que no asiste es crítico porque suele estar sobrerepresentado entre quienes trabajan.
Implicaciones: analizar la relación asistencia vs trabajo (cruces y modelos) y examinar el perfil sociodemográfico de los no-asistentes (edad, área, ingreso), ya que constituyen un subgrupo vulnerable.
Moda: aparece como N/A con Frec_Moda ≈ 87.80% (la tabla sugiere mucha falta de datos o una categoría mayoritaria etiquetada como N/A).
Interpretación & alerta: el resultado sugiere un problema de codificación o de valores faltantes (muchos registros en una categoría “N/A” o missing). Es extraño que “sabe leer y escribir” tenga tanta ausencia; es necesario revisar si la variable fue recodificada bien o si la moda real era “Sí”/“No” y durante el procesamiento quedaron NAs.
Acción recomendada: inspeccionar los códigos originales y recodificar correctamente; calcular frecuencias verdaderas excluyendo NAs; sin esa limpieza, no se puede confiar en esta variable para análisis.
Moda: Bprimaria (primaria baja/primaria) con Frec_Moda ≈ 42.00%.
Interpretación: el grado modal es primaria, lo que indica que una proporción importante de la población objetivo proviene de hogares con educación básica alcanzada (o corresponde al grado alcanzado por la persona). Esto puede ser consistente con la edad promedio (~11 años).
Implicaciones: el nivel educativo (propio o del hogar, según cómo esté codificada) es clave para perfilar vulnerabilidad; se recomienda cruzar P3042 con asistencia escolar y con empleo (P401/P402).
Moda: estudiando con Frec_Moda ≈ 86.15%.
Interpretación: la mayoría de la muestra tuvo como actividad principal estudiar, lo que concuerda con la alta asistencia escolar. Esto confirma que la mayor parte del universo es población escolar y no trabajadora habitual; sin embargo, los que declaran “trabajando” son el subgrupo relevante para el estudio sobre trabajo infantil.
Implicaciones: se recomienda aislar el subgrupo cuya actividad principal fue “trabajando” para análisis específicos del fenómeno laboral y comparar perfiles (edad, área, escolaridad).
Moda: Local fijo, oficina, fábrica… con Frec_Moda ≈ 32.27%.
Interpretación: entre quienes reportan un lugar de trabajo, el lugar más frecuente es un local fijo u oficina (o comercio/pequeña empresa). El 32% indica que no domina por completo (hay diversidad de lugares), pero es la categoría modal.
Implicaciones: analizar el lugar de trabajo por edad y por sexo y cruzarlo con condiciones laborales (P408, P410/P411) para caracterizar riesgos (p. ej. trabajo doméstico vs trabajo en la calle o en finca).
Situación: señalada como omitida por nulos.
Interpretación: si P3145 tiene muchos NAs la variable no es fiable a nivel de análisis poblacional, salvo que se recodifique NA = “no trabajó” — pero eso requiere confirmar el significado de NA en el cuestionario/diccionario.
Implicación: no usar P3145 directamente hasta verificar el significado de los faltantes; emplear en su lugar P400/P401/P402 o P3142 (con las precauciones ya señaladas).
Con el fin de profundizar en la comprensión del fenómeno y complementar el análisis descriptivo univariado, se incorpora un análisis bivariado mediante tablas cruzadas y visualizaciones.
library(dplyr)
library(ggplot2)
library(janitor)
# Crear variable binaria para identificar trabajo infantil
datos <- datos %>%
mutate(trabaja = ifelse(P401 == 1 | P402 == 1 | P403 == 1, 1, 0),
asiste = ifelse(P6170 == 1, 1, 0))
tabla1 <- datos %>%
tabyl(trabaja, asiste) %>%
adorn_percentages("row") %>%
adorn_pct_formatting() %>%
adorn_ns()
tabla1
Los resultados muestran que la asistencia escolar es significativamente menor entre los menores que trabajan (76.1%) en comparación con quienes no lo hacen (94.2%). Además, la proporción de inasistencia es casi cuatro veces mayor en quienes trabajan. Esto indica que el trabajo infantil interfiere con la permanencia educativa y aumenta el riesgo de rezago o abandono escolar.
tabla2 <- datos %>%
tabyl(AREA, trabaja) %>%
adorn_percentages("row") %>%
adorn_pct_formatting() %>%
adorn_ns()
tabla2
En todas las áreas, la proporción de menores que trabajan es baja pero sistemáticamente mayor en zonas con características rurales (por ejemplo, códigos 50, 52, 70, 76 y 99). Esto sugiere que el trabajo infantil es más común en contextos rurales, donde predominan dinámicas económicas familiares y menor supervisión institucional. La tendencia coincide con patrones nacionales de mayor vulnerabilidad laboral en áreas no urbanas.
ggplot(datos %>% filter(trabaja == 1 & !is.na(P415)),
aes(x = factor(AREA), y = P415)) +
geom_boxplot(fill = "#A6CEE3") +
labs(title = "Horas trabajadas por área",
x = "Área",
y = "Horas trabajadas por semana")
El boxplot evidencia que, entre los menores que trabajan, la intensidad laboral varía notablemente según el territorio. En muchas áreas rurales se observan medianas más altas y presencia de jornadas extremas superiores a 60 horas, lo que indica condiciones más exigentes y riesgosas. En contraste, las áreas urbanas presentan jornadas más moderadas. Esto confirma que el contexto territorial influye tanto en la probabilidad como en la intensidad del trabajo infantil.
tabla3 <- datos %>%
tabyl(P3271, trabaja) %>%
adorn_percentages("row") %>%
adorn_pct_formatting() %>%
adorn_ns()
tabla3
Los niños presentan una participación laboral ligeramente mayor (1.2%) que las niñas (0.8%). Esto refleja la persistencia de patrones de género: los varones tienden a involucrarse más en actividades remuneradas, mientras que las niñas suelen asumir tareas domésticas no remuneradas, lo que puede no registrarse como trabajo infantil. Aunque la diferencia es pequeña, indica desigualdades en la distribución de roles desde edades tempranas.
¿Cómo identificar y caracterizar perfiles socioeconómicos de niños, niñas y adolescentes (5–17 años) en situación de trabajo infantil en Colombia en 2024 empleando técnicas multivariadas (reducción de dimensionalidad y métodos de clasificación) y qué variables sociodemográficas y territoriales explican con mayor fuerza la prevalencia y la intensidad (horas) del trabajo infantil cuando se evalúan mediante modelos de regresión múltiple y logística?
Setup y carga de datos
# Librerias necesarias
library(dplyr)
library(tidyr)
library(factoextra)
library(cluster)
library(ggplot2)
library(stats)
# Seleccionar solo a la población objetivo (5-17 años)
datos <- BASE %>%
filter(P6040 >= 5 & P6040 <= 17)
Creación y recodificación de las variables
datos <- datos %>%
mutate(
# Crear la variable binaria 'trabaja'
trabaja = ifelse(P401 == 1 | P402 == 1 | P403 == 1, 1, 0),
# Asistencia Escolar (P6170: 1=Sí, 2=No)
asiste = ifelse(P6170 == 1, 1, 0),
# Recodificar variables categóricas (Factores)
Sexo = factor(P3271, levels = c(1, 2), labels = c("Hombre", "Mujer")),
Clase = factor(CLASE, levels = c(1, 2), labels = c("Cabecera", "Resto")),
# TRATAMIENTO DE CUANTITATIVAS (Reemplazar valores especiales con NA)
P415 = ifelse(P415 < 0, NA, P415),
P409 = ifelse(P409 < 0, NA, P409),
# Recodificación del Nivel Educativo en 3 grupos (para estabilidad en Logística)
# P3042: 1 a 6
Nivel_Educativo_Simple = case_when(
P3042 %in% c(1, 2, 3) ~ "Basica", # Ninguno, Preescolar, Primaria
P3042 %in% c(4, 5) ~ "Secundaria_Media", # Secundaria, Media
P3042 == 6 ~ "Superior", # Superior
TRUE ~ NA_character_
) %>% factor(levels = c("Basica", "Secundaria_Media", "Superior"))
)
Preparación para ACP / Clúster
# Filtrar a quienes trabajan y preparar variables cuantitativas
datos_trabajo_num <- datos %>%
filter(trabaja == 1) %>%
select(P6040, P415, P409) %>%
rename(
Edad = P6040,
Horas_Trabajo = P415,
Ingreso_Mensual = P409
) %>%
# Transformación Logarítmica del Ingreso para reducir sesgo
mutate(
Log_Ingreso = log(Ingreso_Mensual + 1) # Se suma 1 para manejar ingresos 0
) %>%
# Seleccionar las variables para el ACP
select(Edad, Horas_Trabajo, Log_Ingreso) %>%
na.omit()
# Escalar y centrar los datos para el ACP
datos_trabajo_scale <- scale(datos_trabajo_num)
El ACP se aplicó a las variables Edad (P6040), Horas_Trabajo (P415), y la variable corregida Log_Ingreso (P409+1) con el fin de disminuir la asimetría y la influencia de valores extremos. Los resultados evidencian una estructura factorial clara y estable
res.pca <- prcomp(datos_trabajo_scale, scale = FALSE)
# Varianza explicada (Scree plot)
fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))
#
# Contribución de las variables
fviz_pca_var(res.pca,
col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)
#
print(round(res.pca$rotation[, 1:2], 3))
## PC1 PC2
## Edad -0.386 -0.923
## Horas_Trabajo -0.651 0.279
## Log_Ingreso -0.653 0.267
El PC1 condensa el concepto de Intensidad Laboral y Retorno Económico, mientras que el PC2 separa a los individuos basándose en la Edad. Estos dos componentes son cruciales para entender y clasificar la heterogeneidad del trabajo infantil.
Se aplicó el algoritmo K-means con k = 3 sobre los componentes principales estandarizados, identificando tres perfiles homogéneos de menores trabajadores:
# Determinación del Número Óptimo de Clústeres (K)
fviz_nbclust(datos_trabajo_scale, kmeans, method = "wss")
#
# Aplicar K-means (k=3)
k <- 3
set.seed(123)
res.km <- kmeans(datos_trabajo_scale, centers = k, nstart = 25)
# Visualización de los clústeres
fviz_cluster(res.km, data = datos_trabajo_scale,
ellipse.type = "convex",
palette = "jco",
ggtheme = theme_minimal(),
main = "Clústeres de Perfiles Socioeconómicos")
#
# Caracterización de perfiles (Usando el Ingreso_Mensual original para las medias)
# Se adjunta el clúster al dataframe con las variables originales
datos_trabajo_completo <- datos %>%
filter(trabaja == 1) %>%
select(P6040, P415, P409, Sexo, Clase) %>%
rename(
Edad = P6040,
Horas_Trabajo = P415,
Ingreso_Mensual = P409
) %>%
na.omit() %>%
mutate(Cluster = res.km$cluster)
datos_trabajo_completo %>%
group_by(Cluster) %>%
summarise(
N = n(),
Edad_Media = mean(Edad, na.rm = TRUE),
Horas_Media = mean(Horas_Trabajo, na.rm = TRUE),
Ingreso_Medio = mean(Ingreso_Mensual, na.rm = TRUE)
)
La matriz de confusión se emplea para evaluar la coherencia entre los clústeres obtenidos mediante K-means y una clasificación externa relevante. Aunque el algoritmo es no supervisado, esta validación permite verificar si los perfiles generados a partir de Horas trabajadas, Ingreso y Log-Ingreso guardan relación estructural con una variable demográfica clave. Para ello se construyó la variable categórica Etapa_Edad, basada en la discretización de la edad (P6040) en tres etapas del desarrollo: Niñez Temprana, Adolescencia Intermedia y Adolescencia Mayor. Esta transformación proporcionó una clase de referencia con tres niveles, compatible con la estructura de la matriz de confusión.
library(dplyr)
# CREACIÓN DE LA VARIABLE CATEGÓRICA DE REFERENCIA
datos_cluster_base <- datos %>%
filter(trabaja == 1) %>%
select(P6040, P415, P409, Nivel_Educativo_Simple, Clase) %>%
rename(
Edad = P6040,
Horas_Trabajo = P415,
Ingreso_Mensual = P409
) %>%
mutate(
Log_Ingreso = log(Ingreso_Mensual + 1),
# Nueva variable categórica: Etapa de Edad
Etapa_Edad = case_when(
Edad >= 5 & Edad <= 11 ~ "1. Niñez Temprana (5-11)",
Edad >= 12 & Edad <= 14 ~ "2. Adolescencia Intermedia (12-14)",
Edad >= 15 & Edad <= 17 ~ "3. Adolescencia Mayor (15-17)",
TRUE ~ "Otro/NA" # Para manejar edades fuera del rango de interés o NAs
),
Etapa_Edad = factor(Etapa_Edad, levels = c(
"1. Niñez Temprana (5-11)",
"2. Adolescencia Intermedia (12-14)",
"3. Adolescencia Mayor (15-17)"
))
)
# CÓDIGO DE MATRIZ DE CONFUSIÓN (Usando ETAPA_EDAD)
library(clue)
library(caret)
library(tidyr)
# IDENTIFICAR LA MUESTRA EXACTA UTILIZADA POR K-MEANS
# Se asume que K-means se aplicó a datos_trabajo_scale,
# que se creó eliminando NA de las variables Edad, Horas_Trabajo, Log_Ingreso.
datos_alineados <- datos_cluster_base %>%
select(Edad, Horas_Trabajo, Log_Ingreso, Etapa_Edad) %>%
drop_na(Edad, Horas_Trabajo, Log_Ingreso)
# Definir la Clase Real y la Clase Predicha
clase_real <- datos_alineados$Etapa_Edad
clase_predicha_numerica <- res.km$cluster # Asignación de clústeres
k <- 3 # Número de clústeres
# Encontrar el mejor mapeo (Label Matching)
# Esto debería crear una matriz 3x3 si no hay NAs en Etapa_Edad.
tabla_contingencia <- table(Cluster_Predicho = clase_predicha_numerica, Clase_Real = clase_real)
matriz_contingencia <- as.matrix(tabla_contingencia)
# Encontrar la asignación óptima (Funciona con matrices cuadradas o más columnas que filas)
asignacion_optima <- solve_LSAP(matriz_contingencia, maximum = TRUE)
# Aplicar el mapeo óptimo a las predicciones del clúster
predicciones_mapeadas_numerica <- as.numeric(asignacion_optima)[clase_predicha_numerica]
# Convertir las predicciones mapeadas a un factor
niveles_clase_real <- levels(clase_real[!is.na(clase_real)])
predicciones_factor <- factor(predicciones_mapeadas_numerica,
levels = 1:k,
labels = niveles_clase_real)
# Obtener matriz de confusión y métricas de rendimiento
matriz_confusion_final <- confusionMatrix(predicciones_factor, clase_real)
print(matriz_confusion_final)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 1. Niñez Temprana (5-11)
## 1. Niñez Temprana (5-11) 0
## 2. Adolescencia Intermedia (12-14) 0
## 3. Adolescencia Mayor (15-17) 0
## Reference
## Prediction 2. Adolescencia Intermedia (12-14)
## 1. Niñez Temprana (5-11) 0
## 2. Adolescencia Intermedia (12-14) 19
## 3. Adolescencia Mayor (15-17) 0
## Reference
## Prediction 3. Adolescencia Mayor (15-17)
## 1. Niñez Temprana (5-11) 22
## 2. Adolescencia Intermedia (12-14) 11
## 3. Adolescencia Mayor (15-17) 50
##
## Overall Statistics
##
## Accuracy : 0.6765
## 95% CI : (0.5766, 0.7658)
## No Information Rate : 0.8137
## P-Value [Acc > NIR] : 0.9997
##
## Kappa : 0.4078
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 1. Niñez Temprana (5-11)
## Sensitivity NA
## Specificity 0.7843
## Pos Pred Value NA
## Neg Pred Value NA
## Prevalence 0.0000
## Detection Rate 0.0000
## Detection Prevalence 0.2157
## Balanced Accuracy NA
## Class: 2. Adolescencia Intermedia (12-14)
## Sensitivity 1.0000
## Specificity 0.8675
## Pos Pred Value 0.6333
## Neg Pred Value 1.0000
## Prevalence 0.1863
## Detection Rate 0.1863
## Detection Prevalence 0.2941
## Balanced Accuracy 0.9337
## Class: 3. Adolescencia Mayor (15-17)
## Sensitivity 0.6024
## Specificity 1.0000
## Pos Pred Value 1.0000
## Neg Pred Value 0.3654
## Prevalence 0.8137
## Detection Rate 0.4902
## Detection Prevalence 0.4902
## Balanced Accuracy 0.8012
Los resultados muestran una correspondencia limitada entre los clústeres y la variable de referencia. El indicador más relevante, P-Value [Acc > NIR] = 0.9997, evidencia que, pese a una precisión del 67.65 %, el agrupamiento no es estadísticamente superior a asignar a todos los individuos a la categoría más frecuente (Adolescencia Mayor). Esto sugiere que la estructura de los clústeres refleja principalmente diferencias asociadas a la edad, reduciendo el valor explicativo del modelo para identificar patrones socioeconómicos diferenciados.
El modelo predice la probabilidad de trabajar. Se confirma la inestabilidad de las categorías de Nivel_Educativo (incluso tras la simplificación), por lo que solo se interpretan los coeficientes significativos.
# Usando la variable simplificada Nivel_Educativo_Simple
modelo_logistico_corregido <- glm(trabaja ~ P6040 + Sexo + Clase + asiste + Nivel_Educativo_Simple,
data = datos,
family = binomial(link = "logit"))
summary(modelo_logistico_corregido)
##
## Call:
## glm(formula = trabaja ~ P6040 + Sexo + Clase + asiste + Nivel_Educativo_Simple,
## family = binomial(link = "logit"), data = datos)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -45.4247 8.7575 -5.187 2.14e-07
## P6040 3.9799 0.5268 7.554 4.21e-14
## SexoMujer 0.2111 0.4960 0.426 0.670
## ClaseResto 2.1786 0.5057 4.308 1.64e-05
## asiste 3.3918 6.7867 0.500 0.617
## Nivel_Educativo_SimpleSecundaria_Media 1.5890 1.0760 1.477 0.140
## Nivel_Educativo_SimpleSuperior -2.4988 1278.8667 -0.002 0.998
##
## (Intercept) ***
## P6040 ***
## SexoMujer
## ClaseResto ***
## asiste
## Nivel_Educativo_SimpleSecundaria_Media
## Nivel_Educativo_SimpleSuperior
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3497.58 on 14393 degrees of freedom
## Residual deviance: 181.26 on 14387 degrees of freedom
## (24562 observations deleted due to missingness)
## AIC: 195.26
##
## Number of Fisher Scoring iterations: 16
# Calcular Odds Ratio (OR)
exp(cbind(OR = coef(modelo_logistico_corregido), confint(modelo_logistico_corregido)))
## OR 2.5 % 97.5 %
## (Intercept) 1.871935e-20 1.425178e-27 1.233369e-15
## P6040 5.351033e+01 2.173304e+01 1.717917e+02
## SexoMujer 1.235041e+00 4.676667e-01 3.375849e+00
## ClaseResto 8.833923e+00 3.324169e+00 2.500848e+01
## asiste 2.971906e+01 1.636076e-01 4.325320e+04
## Nivel_Educativo_SimpleSecundaria_Media 4.899016e+00 3.559609e-01 2.902464e+01
## Nivel_Educativo_SimpleSuperior 8.218640e-02 2.767801e-27 2.329919e+172
La Edad establece el momento de vulnerabilidad, y el Contexto Rural establece el lugar donde esa vulnerabilidad se materializa con mayor probabilidad.
El modelo predice las Horas_Trabajo (Intensidad). El bajo R^2 (0.088) indica que la varianza de las horas trabajadas es pobremente explicada por estas variables, aunque los coeficientes significativos permiten extraer conclusiones robustas.
# Base solo de quienes trabajan
datos_reg_multiple <- datos %>%
filter(trabaja == 1) %>%
select(P415, P6040, Sexo, Clase) %>%
rename(Horas_Trabajo = P415, Edad = P6040) %>%
na.omit()
modelo_multiple <- lm(Horas_Trabajo ~ Edad + Sexo + Clase,
data = datos_reg_multiple)
summary(modelo_multiple)
##
## Call:
## lm(formula = Horas_Trabajo ~ Edad + Sexo + Clase, data = datos_reg_multiple)
##
## Residuals:
## Min 1Q Median 3Q Max
## -23.845 -9.176 -1.845 6.970 68.231
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.2993 5.1111 -0.059 0.9533
## Edad 1.5379 0.3209 4.792 2.34e-06 ***
## SexoMujer -3.2972 1.3351 -2.470 0.0139 *
## ClaseResto -1.2183 1.3793 -0.883 0.3776
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.91 on 394 degrees of freedom
## Multiple R-squared: 0.08847, Adjusted R-squared: 0.08153
## F-statistic: 12.75 on 3 and 394 DF, p-value: 5.754e-08
La Intensidad (horas trabajadas) es impulsada por la Edad y modulada por el Género. A diferencia de la prevalencia, una vez que el menor está trabajando, el entorno geográfico no determina la longitud de su jornada.
La integración de los análisis descriptivos, bivariados y multivariados permite concluir que el trabajo infantil en Colombia presenta perfiles diferenciados asociados a la edad, el territorio y la carga laboral. El fenómeno inicia principalmente en áreas rurales, donde la probabilidad de trabajar es mayor debido a condiciones socioeconómicas y productivas familiares. A su vez, la transición a la adolescencia constituye un punto crítico en el que aumenta tanto la probabilidad de trabajar como la intensidad de la jornada. Las técnicas multivariadas evidenciaron un perfil particularmente vulnerable compuesto por adolescentes que enfrentan jornadas laborales equivalentes a las de un adulto, lo que implica riesgos significativos para su desarrollo educativo, físico y emocional.
En síntesis, el trabajo infantil se explica por una combinación de determinantes demográficos (edad), estructurales (ruralidad) y culturales (roles de género), que no solo configuran quiénes trabajan, sino también cuánto trabajan y en qué condiciones. Estas conclusiones permiten comprender el fenómeno desde una perspectiva integral y constituyen un insumo clave para orientar políticas públicas focalizadas y estrategias de prevención.