Portada


Universidad Santo Tomás


Facultad de Estadística



Análisis del tiempo de desplazamiento hacia instituciones educativas en Colombia:
muestreo estratificado y diseño experimental basado en ANOVA




Diseño de Experimentos




Autoras:
Paula Martínez   •   Lina Sogamoso



Profesor: Javier Sierra




2026

Resumen ejecutivo

Este trabajo integra una fase de muestreo estadístico y una fase de análisis comparativo utilizando datos reales de la Encuesta Nacional de Calidad de Vida (ENCV) 2024 del DANE. En la primera fase se construyó un diseño de muestreo estratificado por sexo y grupo de edad con el objetivo de estimar la proporción de personas que actualmente estudian. Se calculó el tamaño de muestra bajo un nivel de confianza del 95% y un margen de error del 3%, se realizó asignación proporcional por estrato, selección aleatoria dentro de cada grupo y construcción de pesos muestrales. La inferencia se formalizó mediante el paquete survey, obteniendo estimaciones e intervalos de confianza consistentes con la estructura del diseño.

En la segunda fase se desarrolló un análisis observacional con estructura análoga de bloqueo, donde la variable respuesta fue el tiempo de desplazamiento a la institución educativa, el factor principal de comparación fue la jornada y los bloques se definieron con la combinación sexo–grupo de edad. El ANOVA mostró diferencias significativas entre jornadas y efecto de bloque, complementado con comparaciones múltiples de Tukey, verificación de supuestos y análisis aproximado de potencia. El principal aporte del estudio es la articulación coherente entre ambas fases, utilizando en la segunda fase la misma estructura de heterogeneidad identificada en la primera.

Hallazgos clave

Síntesis de hallazgos del estudio
Indicador Descripción
Base analítica ENCV 2024 integrada con módulos de educación, hogar, TIC y diseño muestral.
Fase I Muestreo estratificado con estratos construidos por sexo y grupo de edad.
Fase II ANOVA con bloqueo para comparar jornadas y controlar heterogeneidad.
Salida principal Resultados completamente reproducibles desde el código del informe.

Introducción y Objetivos

Introducción

En estadística aplicada, el muestreo y el análisis comparativo de grupos suelen enseñarse como temas separados, aunque en la práctica ambos responden a una misma lógica: comprender poblaciones heterogéneas con herramientas rigurosas de inferencia. Este informe propone una integración de ambas perspectivas utilizando datos reales de la Encuesta Nacional de Calidad de Vida (ENCV) 2024 del DANE. En una primera fase se implementa un diseño de muestreo estratificado para estimar la proporción de personas que actualmente estudian. En una segunda fase se desarrolla un análisis observacional con estructura análoga de bloqueo para estudiar diferencias en el tiempo de desplazamiento a la institución educativa según la jornada académica.

El documento está escrito de manera reproducible en R Markdown y busca no solo mostrar resultados, sino también justificar cada decisión metodológica. La idea central es que las variables que ayudan a controlar heterogeneidad en la fase de muestreo también pueden reaprovecharse en la fase comparativa, fortaleciendo la coherencia global del estudio.

Objetivos de aprendizaje del documento

Al finalizar este informe, la persona lectora debería poder:

  1. Justificar el uso de un diseño de muestreo estratificado en una base poblacional real.
  2. Calcular un tamaño de muestra para estimar una proporción con población finita.
  3. Construir pesos muestrales e implementar inferencia formal con el paquete survey.
  4. Plantear un análisis observacional con estructura análoga de bloqueo usando ANOVA.
  5. Interpretar resultados, supuestos, comparaciones múltiples y limitaciones de manera crítica.

Objetivos

Objetivo general

Evaluar la capacidad de articular los conceptos de muestreo estadístico y análisis comparativo en la solución de un problema real, empleando datos observacionales de la ENCV 2024 y evidenciando dominio técnico, pensamiento crítico y habilidades de comunicación científica.

Objetivos específicos

  1. Diseñar y justificar un plan de muestreo estratificado con base en variables demográficas relevantes.
  2. Calcular el tamaño de muestra y estimar la proporción de personas que actualmente estudian, incorporando pesos muestrales e inferencia con survey.
  3. Plantear un análisis observacional con estructura análoga de bloqueo, usando jornada como factor principal y sexo–grupo de edad como bloques.
  4. Realizar ANOVA, verificar supuestos del modelo, aplicar comparaciones múltiples y analizar de forma aproximada la potencia del diseño.
  5. Integrar ambas fases en un producto reproducible, bien estructurado y metodológicamente coherente.

Fundamentos teóricos

Fundamentos teóricos del diseño muestral

El análisis desarrollado en la Fase I se enmarca dentro del enfoque de inferencia estadística para poblaciones finitas, cuyo objetivo es estimar parámetros poblacionales a partir de una muestra seleccionada mediante un esquema probabilístico. En este contexto, la población de interés está conformada por los individuos incluidos en la Encuesta Nacional de Calidad de Vida (ENCV) 2024, lo que implica que el muestreo se realiza sin reemplazo.

Inferencia en poblaciones finitas

Sea \(N\) el tamaño de la población y \(n\) el tamaño de la muestra. Uno de los parámetros de interés es la proporción poblacional \(p\), definida como:

\[ p = \frac{1}{N} \sum_{i=1}^{N} y_i \]

donde \(y_i\) es una variable indicadora que toma el valor 1 si el individuo presenta la característica de interés, por ejemplo estar estudiando, y 0 en caso contrario.

El estimador muestral de esta proporción está dado por:

\[ \hat{p} = \frac{1}{n} \sum_{i=1}^{n} y_i \]

Bajo muestreo aleatorio simple sin reemplazo, la varianza del estimador es:

\[ \text{Var}(\hat{p}) = \frac{p(1-p)}{n} \left( \frac{N - n}{N - 1} \right) \]

donde el término:

\[ \left( \frac{N - n}{N - 1} \right) \]

corresponde a la corrección por población finita (CPF), la cual ajusta la varianza del estimador cuando la fracción de muestreo \(n/N\) no es despreciable.

A partir de esta varianza, se construyen intervalos de confianza para \(p\) mediante:

\[ \hat{p} \pm z_{\alpha/2} \sqrt{\text{Var}(\hat{p})} \]

Muestreo estratificado

Con el fin de mejorar la precisión de las estimaciones, se emplea un diseño de muestreo estratificado. En este esquema, la población se divide en \(H\) estratos mutuamente excluyentes, definidos en este estudio por la combinación de sexo y grupo de edad.

El estimador de la proporción bajo muestreo estratificado es:

\[ \hat{p}_{st} = \sum_{h=1}^{H} W_h \hat{p}_h \]

donde:

  • \(W_h = \frac{N_h}{N}\) es el peso del estrato \(h\),
  • \(\hat{p}_h\) es la proporción muestral dentro del estrato,
  • \(N_h\) es el tamaño poblacional del estrato.

La varianza de este estimador está dada por:

\[ \text{Var}(\hat{p}_{st}) = \sum_{h=1}^{H} W_h^2 \frac{p_h(1-p_h)}{n_h} \left( \frac{N_h - n_h}{N_h - 1} \right) \]

Este diseño reduce la varianza del estimador cuando existe heterogeneidad entre los estratos y homogeneidad dentro de ellos.

Pesos muestrales

En encuestas complejas como la ECV, cada observación de la muestra representa un número determinado de individuos en la población. Esto se logra mediante el uso de pesos muestrales o factores de expansión.

Si \(w_i\) es el peso asociado a la unidad \(i\), el estimador ponderado de la proporción es:

\[ \hat{p}_w = \frac{\sum_{i \in s} w_i y_i}{\sum_{i \in s} w_i} \]

donde \(s\) representa la muestra seleccionada.

El uso de estos pesos permite obtener estimaciones insesgadas y representativas, teniendo en cuenta el diseño muestral complejo.

En conjunto, estos fundamentos teóricos sustentan la elección del diseño muestral estratificado, así como los procedimientos de estimación e inferencia implementados en la Fase I del estudio.

Fundamentos teóricos del análisis de varianza

La Fase II del estudio se fundamenta en el análisis de varianza (ANOVA), una técnica estadística utilizada para comparar las medias de múltiples grupos y determinar si existen diferencias significativas entre ellos.

Modelo lineal

El modelo general del ANOVA con un factor y bloques puede expresarse como:

\[ Y_{ij} = \mu + \tau_i + \beta_j + \varepsilon_{ij} \]

donde:

  • \(Y_{ij}\): valor observado de la variable respuesta, tiempo de desplazamiento,
  • \(\mu\): media general,
  • \(\tau_i\): efecto del tratamiento, jornada académica,
  • \(\beta_j\): efecto del bloque, estratos de sexo y edad,
  • \(\varepsilon_{ij}\): error aleatorio.

Hipótesis

El ANOVA evalúa la hipótesis:

\[ H_0: \tau_1 = \tau_2 = \cdots = \tau_k \]

frente a la alternativa:

\[ H_1: \text{al menos una media es diferente} \]

Descomposición de la varianza

La variabilidad total se descompone como:

\[ \text{SST} = \text{SS}_{\text{tratamiento}} + \text{SS}_{\text{bloques}} + \text{SS}_{\text{error}} \]

donde cada componente representa la variabilidad explicada por los factores y la variabilidad residual.

El estadístico de prueba es:

\[ F = \frac{\text{MS}_{\text{tratamiento}}}{\text{MS}_{\text{error}}} \]

donde \(\text{MS}\) corresponde a las medias cuadráticas.

Supuestos del modelo

Para que el ANOVA sea válido, se deben cumplir los siguientes supuestos:

  • Normalidad de los errores:

\[ \varepsilon_{ij} \sim N(0, \sigma^2) \]

  • Homogeneidad de varianzas:

\[ \text{Var}(\varepsilon_{ij}) = \sigma^2 \]

  • Independencia de las observaciones.

Comparaciones múltiples

Cuando el ANOVA resulta significativo, se emplean métodos de comparaciones múltiples como el procedimiento de Tukey, que permite identificar qué pares de medias difieren entre sí, controlando el error tipo I.

Consideraciones en datos observacionales

En este estudio, los datos provienen de una encuesta y no de un experimento controlado. Por esta razón, el ANOVA se utiliza como una herramienta de análisis comparativo, y sus resultados deben interpretarse en términos de asociación y no de causalidad.

Estos fundamentos teóricos sustentan el análisis realizado en la Fase II, en el cual se comparan los tiempos de desplazamiento entre jornadas académicas, incorporando los estratos definidos en la Fase I como bloques para controlar la heterogeneidad.

Enfoque del análisis

Este informe se desarrolló con datos reales de la ENCV 2024. Primero se construyó una base analítica uniendo varios módulos: educación, características y composición del hogar, tecnologías de información y comunicación, y variables del diseño muestral. Luego se realizó un análisis exploratorio de datos para describir la estructura de la base y la distribución de las variables principales. A partir de allí se implementó el diseño muestral y, posteriormente, el análisis comparativo. Esta secuencia busca que cada decisión metodológica surja del conocimiento previo de los datos y no de una aplicación mecánica de técnicas estadísticas.

Fuente de datos y procedencia

La fuente de información utilizada fue la Encuesta Nacional de Calidad de Vida 2024 (ENCV 2024) del DANE, una fuente pública, verificable y adecuada para fines académicos. En el desarrollo del trabajo se emplearon los módulos de educación, características y composición del hogar, TIC y variables de diseño muestral. La base consolidada fue construida mediante unión por identificadores de directorio, secuencia de encuesta, secuencia de persona y orden.

Ficha rápida del estudio
elemento detalle
Fuente DANE – ENCV 2024
Unidad de análisis Individuo
Fase I Estimación de proporción
Fase II Comparación de medias

Carga, unión y preparación de datos

carpeta <- "C:/Users/paula/Downloads/Diseño de experimentos"
educacion <- read_delim(file.path(carpeta,"Educación.CSV"),delim=";",show_col_types=FALSE) %>% clean_names()
hogar <- read_delim(file.path(carpeta,"Características y composición del hogar.CSV"),delim=";",show_col_types=FALSE) %>% clean_names()
tic <- read_delim(file.path(carpeta,"Tecnologías de información y comunicación.CSV"),delim=";",show_col_types=FALSE) %>% clean_names()
diseno <- read_delim(file.path(carpeta,"Variables diseño muestral.CSV"),delim=";",show_col_types=FALSE) %>% clean_names()
educacion2 <- educacion %>% select(directorio,secuencia_encuesta,secuencia_p,orden,fex_c,p8586,p8587,p8587s1,p1101,p6167)
hogar2 <- hogar %>% select(directorio,secuencia_encuesta,secuencia_p,orden,p6020,p6040,p756s1)
tic2 <- tic %>% select(directorio,secuencia_encuesta,secuencia_p,orden,p1084)
diseno2 <- diseno %>% select(directorio,secuencia_p,orden,mpio,estrato2020,bloque,fex_c)
base <- educacion2 %>% left_join(hogar2,by=c("directorio","secuencia_encuesta","secuencia_p","orden")) %>% left_join(tic2,by=c("directorio","secuencia_encuesta","secuencia_p","orden")) %>% left_join(diseno2 %>% select(-fex_c),by=c("directorio","secuencia_p","orden")) %>% filter(!is.na(p8586),!is.na(p6020),!is.na(p6040)) %>% mutate(estudia=case_when(p8586==1~1,p8586==2~0,TRUE~NA_real_),sexo=case_when(p6020==1~"Hombre",p6020==2~"Mujer",TRUE~NA_character_),grupo_edad=case_when(p6040>=5 & p6040<=17~"5-17",p6040>=18 & p6040<=28~"18-28",p6040>=29 & p6040<=59~"29-59",p6040>=60~"60+",TRUE~NA_character_),estrato_f1=paste(sexo,grupo_edad,sep=" - "),usa_internet=case_when(p1084 %in% c(1,2,3,4)~1,is.na(p1084)~NA_real_,TRUE~0))
dim_base <- data.frame(filas=nrow(base),columnas=ncol(base))
tabla_bonita(dim_base,"Dimensión de la base consolidada",0)
Dimensión de la base consolidada
filas columnas
214607 22

La base consolidada quedó conformada por 214,607 observaciones y 22 variables. Esta base representa el punto de partida tanto para la fase de muestreo como para la fase de análisis comparativo.

Análisis exploratorio de datos

Resumen descriptivo inicial

tabla_sexo <- as.data.frame(table(base$sexo)); names(tabla_sexo) <- c("sexo","frecuencia")
tabla_estudia <- as.data.frame(table(base$estudia)); names(tabla_estudia) <- c("estudia","frecuencia"); tabla_estudia$estudia <- c("No estudia","Estudia")
tabla_grupo_edad <- as.data.frame(table(base$grupo_edad)); names(tabla_grupo_edad) <- c("grupo_edad","frecuencia")
tabla_bonita(tabla_sexo,"Distribución por sexo",0)
Distribución por sexo
sexo frecuencia
Hombre 103344
Mujer 111263
tabla_bonita(tabla_estudia,"Distribución de la variable actualmente estudia",0)
Distribución de la variable actualmente estudia
estudia frecuencia
No estudia 162112
Estudia 52495
tabla_bonita(tabla_grupo_edad,"Distribución por grupo de edad",0)
Distribución por grupo de edad
grupo_edad frecuencia
18-28 35678
29-59 91407
5-17 47419
60+ 40103

Gráficos exploratorios interactivos

g_edad <- ggplot(base,aes(x=p6040))+geom_histogram(bins=30,fill=azul_4,color="white")+labs(title="Distribución de la edad",x="Edad",y="Frecuencia")+tema_informe()
g_sexo <- ggplot(base,aes(x=sexo,fill=sexo,text=paste("Sexo:",sexo)))+geom_bar()+scale_fill_manual(values=c("Hombre"=azul_4,"Mujer"=azul_6))+labs(title="Distribución por sexo",x="Sexo",y="Frecuencia")+tema_informe()+theme(legend.position="none")
g_estudia <- ggplot(base,aes(x=factor(estudia),fill=factor(estudia),text=paste("Condición:",factor(estudia))))+geom_bar()+scale_x_discrete(labels=c("No estudia","Estudia"))+scale_fill_manual(values=c(azul_3,azul_6))+labs(title="Distribución de la variable actualmente estudia",x="Condición",y="Frecuencia")+tema_informe()+theme(legend.position="none")
render_plotly(g_edad)
render_plotly(g_sexo,tooltip="text")
render_plotly(g_estudia,tooltip="text")

La distribución de la edad evidencia heterogeneidad importante en la población, lo que refuerza la decisión de utilizar grupos etarios como componente central del diseño muestral. Además, el desbalance entre personas que estudian y personas que no estudian justifica la necesidad de estimar la proporción mediante un diseño estadísticamente fundamentado.

Fase I — Diseño muestral

Objetivos de esta fase

  1. Definir la población, el marco muestral y la unidad de análisis.
  2. Justificar la selección de un diseño estratificado por sexo y grupo de edad.
  3. Calcular el tamaño de muestra para estimar la proporción de personas que estudian.
  4. Implementar asignación proporcional, selección aleatoria y pesos muestrales.
  5. Formalizar la inferencia con survey.

Población, marco muestral y unidad de análisis

La población objetivo se definió como el conjunto de personas incluidas en la ENCV 2024 con información disponible para las variables necesarias del análisis. El marco muestral correspondió a la base consolidada obtenida tras la unión de módulos. La unidad de análisis fue cada individuo registrado. Se verificó la ausencia de duplicados exactos por identificadores clave.

N <- nrow(base)
duplicados <- base %>% count(directorio,secuencia_encuesta,secuencia_p,orden) %>% filter(n>1)
tabla_dup <- data.frame(total_poblacion=N,duplicados_detectados=nrow(duplicados))
tabla_bonita(tabla_dup,"Verificación de población y duplicados",0)
Verificación de población y duplicados
total_poblacion duplicados_detectados
214607 0

Selección y justificación del diseño muestral

Se eligió un muestreo estratificado con base en la combinación de sexo y grupo de edad. Esta decisión se justifica tanto teórica como prácticamente. Desde el punto de vista teórico, la variable “actualmente estudia” puede diferir ampliamente entre grupos etarios y por sexo, por lo que el uso de estratos permite controlar heterogeneidad y mejorar precisión. Desde el punto de vista práctico, este diseño garantiza representación de subgrupos relevantes y evita que sectores importantes de la población queden insuficientemente representados en la muestra.

Nh_tabla <- base %>% count(estrato_f1,name="Nh")
tabla_bonita(Nh_tabla,"Tamaño poblacional por estrato",0)
Tamaño poblacional por estrato
estrato_f1 Nh
Hombre - 18-28 16873
Hombre - 29-59 42797
Hombre - 5-17 24457
Hombre - 60+ 19217
Mujer - 18-28 18805
Mujer - 29-59 48610
Mujer - 5-17 22962
Mujer - 60+ 20886

Cálculo del tamaño de muestra

El tamaño de muestra se determinó para estimar una proporción en población finita bajo un nivel de confianza del 95%, un margen de error del 3% y el valor conservador \(p = 0.5\), que maximiza la varianza.

z <- 1.96; p <- 0.5; q <- 1-p; E <- 0.03
n_calc <- (N*z^2*p*q)/(((N-1)*E^2)+(z^2*p*q))
n_final <- ceiling(n_calc)
tabla_n <- data.frame(N=N,z=z,p=p,q=q,error=E,n_calculado=n_calc,n_final=n_final)
tabla_bonita(tabla_n,"Cálculo del tamaño de muestra",3)
Cálculo del tamaño de muestra
N z p q error n_calculado n_final
214607 1.96 0.5 0.5 0.03 1061.836 1062

Asignación proporcional y selección de la muestra

nh_tabla <- Nh_tabla %>% mutate(nh=round(n_final*Nh/sum(Nh)))
dif_n <- n_final - sum(nh_tabla$nh)
if(dif_n != 0){idx <- which.max(nh_tabla$Nh); nh_tabla$nh[idx] <- nh_tabla$nh[idx]+dif_n}
muestra <- base %>% left_join(nh_tabla,by="estrato_f1") %>% group_by(estrato_f1) %>% group_modify(~ slice_sample(.x,n=.x$nh[1])) %>% ungroup()
verificacion_muestra <- muestra %>% count(estrato_f1,name="n_obtenido") %>% left_join(nh_tabla,by="estrato_f1")
tabla_bonita(nh_tabla,"Asignación proporcional por estrato",0)
Asignación proporcional por estrato
estrato_f1 Nh nh
Hombre - 18-28 16873 83
Hombre - 29-59 42797 212
Hombre - 5-17 24457 121
Hombre - 60+ 19217 95
Mujer - 18-28 18805 93
Mujer - 29-59 48610 241
Mujer - 5-17 22962 114
Mujer - 60+ 20886 103
tabla_bonita(verificacion_muestra,"Verificación de la muestra por estrato",0)
Verificación de la muestra por estrato
estrato_f1 n_obtenido Nh nh
Hombre - 18-28 83 16873 83
Hombre - 29-59 212 42797 212
Hombre - 5-17 121 24457 121
Hombre - 60+ 95 19217 95
Mujer - 18-28 93 18805 93
Mujer - 29-59 241 48610 241
Mujer - 5-17 114 22962 114
Mujer - 60+ 103 20886 103

Pesos muestrales

muestra <- muestra %>% mutate(peso_muestral=Nh/nh)
resumen_pesos <- data.frame(minimo=min(muestra$peso_muestral,na.rm=TRUE),q1=quantile(muestra$peso_muestral,0.25,na.rm=TRUE),mediana=median(muestra$peso_muestral,na.rm=TRUE),media=mean(muestra$peso_muestral,na.rm=TRUE),q3=quantile(muestra$peso_muestral,0.75,na.rm=TRUE),maximo=max(muestra$peso_muestral,na.rm=TRUE))
tabla_bonita(resumen_pesos,"Resumen de pesos muestrales",3)
Resumen de pesos muestrales
minimo q1 mediana media q3 maximo
25% 201.421 201.701 201.873 202.078 202.284 203.289

Estimación manual e inferencia con survey

prop_simple <- mean(muestra$estudia,na.rm=TRUE)
prop_estrat_manual <- weighted.mean(muestra$estudia,w=muestra$peso_muestral,na.rm=TRUE)
n_muestra <- nrow(muestra)
se_prop_simple <- sqrt(prop_simple*(1-prop_simple)/n_muestra)
ic_simple_inf <- prop_simple - 1.96*se_prop_simple
ic_simple_sup <- prop_simple + 1.96*se_prop_simple
resumen_manual <- data.frame(medida=c("N poblacional","n muestral","Proporción simple","Proporción estratificada manual","IC simple inferior","IC simple superior"),valor=c(N,n_muestra,prop_simple,prop_estrat_manual,ic_simple_inf,ic_simple_sup))
diseno_muestral <- svydesign(ids=~1,strata=~estrato_f1,weights=~peso_muestral,data=muestra)
prop_svy <- svymean(~estudia,design=diseno_muestral,na.rm=TRUE)
ic_prop_svy <- confint(prop_svy)
resumen_survey <- data.frame(estimador="Proporción de personas que estudian",proporcion=coef(prop_svy)[1],error_estandar=SE(prop_svy)[1],ic_inf_95=ic_prop_svy[1,1],ic_sup_95=ic_prop_svy[1,2])
comparacion_estimadores <- data.frame(metodo=c("Simple","Estratificado manual","Survey"),estimacion=c(prop_simple,prop_estrat_manual,coef(prop_svy)[1]))
tabla_bonita(resumen_manual,"Estimación manual",4)
Estimación manual
medida valor
N poblacional 214607.0000
n muestral 1062.0000
Proporción simple 0.2561
Proporción estratificada manual 0.2559
IC simple inferior 0.2299
IC simple superior 0.2824
tabla_bonita(resumen_survey,"Estimación con survey",4)
Estimación con survey
estimador proporcion error_estandar ic_inf_95 ic_sup_95
estudia Proporción de personas que estudian 0.2559 0.0074 0.2414 0.2705
tabla_bonita(comparacion_estimadores,"Comparación de estimadores",4)
Comparación de estimadores
metodo estimacion
Simple 0.2561
Estratificado manual 0.2559
Survey 0.2559
Resumen ejecutivo de la Fase I
indicador valor
Tamaño poblacional 214,607
Tamaño de muestra 1,062
Proporción estimada 25.59%
IC 95% [24.14%, 27.05%]

Además de la estimación estratificada formal, se calcularon estimaciones simples como referencia descriptiva. Sin embargo, la inferencia principal se basa en el objeto de diseño construido con survey, ya que este incorpora explícitamente la estratificación y los pesos muestrales. En consecuencia, el intervalo de confianza reportado con survey se toma como la referencia metodológica principal del estudio.

Evaluación de variable auxiliar

aux_edad <- muestra %>% filter(!is.na(p6040),!is.na(estudia))
cor_edad_estudia <- cor(aux_edad$p6040,aux_edad$estudia,use="complete.obs")
tabla_aux <- data.frame(variable_auxiliar="Edad",correlacion_con_estudia=cor_edad_estudia)
tabla_bonita(tabla_aux,"Evaluación exploratoria de variable auxiliar",4)
Evaluación exploratoria de variable auxiliar
variable_auxiliar correlacion_con_estudia
Edad -0.6585

Dado que la correlación entre la variable auxiliar edad y la variable de interés es baja, no se justifica el uso de estimadores de razón o regresión, ya que estos no aportarían mejoras sustanciales en la precisión respecto al estimador estratificado.

Fase II — Análisis comparativo con estructura de bloqueo

Objetivos de esta fase

  1. Construir una base analítica para estudiar el tiempo de desplazamiento a la institución educativa.
  2. Comparar jornadas académicas mediante ANOVA con una estructura análoga a bloques.
  3. Evaluar el efecto de la heterogeneidad asociada a sexo y grupo de edad.
  4. Verificar supuestos del modelo e interpretar comparaciones múltiples.
  5. Discutir el alcance inferencial del análisis en un contexto observacional.

Planteamiento del análisis comparativo

En esta fase no se trabajó con un experimento controlado, sino con un análisis observacional apoyado en herramientas del diseño experimental. La variable respuesta fue el tiempo de desplazamiento a la institución educativa, medido en minutos. El factor principal de comparación fue la jornada académica, mientras que los bloques se definieron a partir de la combinación de sexo y grupo de edad, las mismas variables utilizadas para estratificar en la Fase I.

Dado que los datos provienen de una encuesta observacional y no de una asignación aleatoria de tratamientos, el análisis no corresponde estrictamente a un diseño en bloques completos aleatorizados en sentido experimental. Sin embargo, se adopta una estructura análoga de bloqueo con el fin de controlar heterogeneidad preexistente en la población y mejorar la interpretación de las diferencias entre jornadas.

Construcción de la base de la Fase II

base_f2 <- base %>% filter(p8586==1,!is.na(p1101),!is.na(p6167),!is.na(sexo),!is.na(grupo_edad)) %>% mutate(minutos=p6167,jornada=dplyr::recode(as.character(p1101),!!!etiquetas_jornada) |> factor(levels=names(pal_jornadas)),bloque=as.factor(estrato_f1)) %>% filter(minutos>0,minutos<=180)
dim_f2 <- data.frame(filas=nrow(base_f2),columnas=ncol(base_f2))
tabla_jornadas <- base_f2 %>% count(jornada,name="frecuencia")
tabla_bonita(dim_f2,"Dimensión de la base analítica de Fase II",0)
Dimensión de la base analítica de Fase II
filas columnas
44355 24

La base analítica de la Fase II quedó conformada por 44,355 observaciones y 24 variables. Para esta fase se conservaron únicamente las personas que actualmente estudian, que tenían información válida sobre jornada académica y tiempo de desplazamiento a la institución. Además, se filtraron tiempos positivos y menores o iguales a 180 minutos para evitar valores extremos poco plausibles.

tabla_bonita(tabla_jornadas,"Distribución de jornadas",0)
Distribución de jornadas
jornada frecuencia
Mañana 35675
Tarde 4271
Noche 298
Única/Completa 3552
Fin de semana 559

La mayoría de los estudiantes se concentra en la jornada de la mañana, con 35,675 observaciones. En contraste, las jornadas de noche y fin de semana tienen frecuencias mucho menores. Esta diferencia en tamaños debe tenerse en cuenta al interpretar el ANOVA, ya que el diseño no está balanceado.

Frecuencias por bloque y jornada

tabla_bloques_f2 <- base_f2 %>% count(bloque,jornada) %>% tidyr::pivot_wider(names_from=jornada,values_from=n,values_fill=0)
tabla_bonita(tabla_bloques_f2,"Frecuencias por bloque y jornada en la Fase II",0)
Frecuencias por bloque y jornada en la Fase II
bloque Mañana Tarde Noche Única/Completa Fin de semana
Hombre - 18-28 563 50 70 62 110
Hombre - 29-59 6 2 16 1 24
Hombre - 5-17 17772 2154 74 1710 112
Hombre - 60+ 0 0 1 0 0
Mujer - 18-28 457 73 67 58 155
Mujer - 29-59 13 9 28 1 43
Mujer - 5-17 16862 1983 40 1720 112
Mujer - 60+ 2 0 2 0 3

La tabla por bloque y jornada muestra que la mayor concentración de estudiantes se encuentra en los grupos de 5 a 17 años, tanto en hombres como en mujeres. Algunos bloques, especialmente los de 60 años o más, presentan frecuencias muy bajas, lo cual refleja la baja participación educativa en edades avanzadas. Esta distribución confirma que sexo y grupo de edad capturan heterogeneidad relevante y justifican su uso como bloques.

Descriptivos por jornada

desc_jornada <- base_f2 %>% group_by(jornada) %>% summarise(n=n(),media=mean(minutos,na.rm=TRUE),sd=sd(minutos,na.rm=TRUE),mediana=median(minutos,na.rm=TRUE),min=min(minutos,na.rm=TRUE),max=max(minutos,na.rm=TRUE),.groups="drop")
tabla_bonita(desc_jornada,"Descriptivos del tiempo de desplazamiento por jornada",2)
Descriptivos del tiempo de desplazamiento por jornada
jornada n media sd mediana min max
Mañana 35675 15.42 13.01 10 5 180
Tarde 4271 13.92 11.53 10 5 168
Noche 298 16.67 12.59 15 5 90
Única/Completa 3552 19.72 17.55 15 5 180
Fin de semana 559 24.71 23.17 20 5 180

Los descriptivos muestran diferencias en el tiempo promedio de desplazamiento entre jornadas. La jornada de fin de semana presenta el mayor promedio, con 24.71 minutos, mientras que la jornada de tarde presenta el menor promedio, con 13.92 minutos. También se observa mayor dispersión en la jornada de fin de semana, lo que indica mayor variabilidad en los tiempos de desplazamiento de ese grupo.

Gráfico interactivo por jornada

g_jornada <- ggplot(base_f2,aes(x=jornada,y=minutos,fill=jornada,text=paste("Jornada:",jornada,"<br>Minutos:",minutos)))+geom_boxplot(alpha=0.85)+scale_fill_manual(values=pal_jornadas)+labs(title="Tiempo de desplazamiento según jornada",x="Jornada",y="Minutos")+tema_informe()
render_plotly(g_jornada,tooltip="text")

El gráfico de cajas confirma visualmente las diferencias entre jornadas. La jornada de fin de semana y la jornada única/completa presentan valores centrales más altos y mayor dispersión. También se observan valores extremos en varias jornadas, lo cual es esperable en variables de tiempo de desplazamiento.

Exploración previa: relación entre edad y minutos

cor_edad_minutos <- cor.test(base_f2$p6040,base_f2$minutos,method="pearson",use="complete.obs")
tabla_cor <- data.frame(metodo="Pearson",correlacion=unname(cor_edad_minutos$estimate),p_valor=formatear_p(cor_edad_minutos$p.value),li_95=cor_edad_minutos$conf.int[1],ls_95=cor_edad_minutos$conf.int[2],r_cuadrado=unname(cor_edad_minutos$estimate)^2)
tabla_bonita(tabla_cor,"Correlación exploratoria entre edad y tiempo de desplazamiento",4)
Correlación exploratoria entre edad y tiempo de desplazamiento
metodo correlacion p_valor li_95 ls_95 r_cuadrado
Pearson 0.1286 < 0.0001 0.1194 0.1377 0.0165

La correlación entre edad y tiempo de desplazamiento fue positiva pero débil, con un valor de 0.1286. Aunque el valor p es significativo, el \(R^2\) de 0.0165 indica que la edad explica solo una pequeña proporción de la variabilidad en los minutos de desplazamiento. Por tanto, la edad se considera útil como variable de control dentro de los bloques, pero no como explicación principal del tiempo de desplazamiento.

g_cor <- ggplot(base_f2,aes(x=p6040,y=minutos,text=paste("Edad:",p6040,"<br>Minutos:",minutos)))+geom_point(alpha=0.20,color=azul_5)+geom_smooth(method="lm",se=TRUE,color=azul_oscuro)+labs(title="Relación exploratoria entre edad y tiempo de desplazamiento",x="Edad",y="Minutos")+tema_informe()
render_plotly(g_cor,tooltip="text")

El gráfico muestra una tendencia positiva leve entre edad y tiempo de desplazamiento, pero con alta dispersión de los puntos. Esto confirma que la relación lineal existe, aunque es débil. Por esta razón, el análisis principal se enfoca en comparar jornadas mediante ANOVA, controlando la heterogeneidad con bloques.

Modelo ANOVA con bloques

\[ Y_{ij} = \mu + \tau_i + \beta_j + \varepsilon_{ij} \]

modelo <- aov(minutos ~ jornada + bloque,data=base_f2)
anova_f2 <- broom::tidy(modelo) %>% mutate(p_valor=formatear_p(p.value)) %>% transmute(fuente=term,suma_cuadrados=sumsq,gl=df,media_cuadratica=meansq,estadistico_F=statistic,p_valor=p_valor)
tabla_bonita(anova_f2,"Tabla ANOVA del modelo con estructura de bloqueo",4)
Tabla ANOVA del modelo con estructura de bloqueo
fuente suma_cuadrados gl media_cuadratica estadistico_F p_valor
jornada 119331.8 4 29832.9602 164.7337 < 0.0001
bloque 11952.8 7 1707.5424 9.4288 < 0.0001
Residuals 8030431.2 44343 181.0981 NA NA

La tabla ANOVA muestra que la jornada tiene un efecto estadísticamente significativo sobre el tiempo de desplazamiento (\(p < 0.0001\)). Esto indica que existen diferencias en el tiempo promedio de desplazamiento entre al menos dos jornadas. Además, el efecto del bloque también fue significativo (\(p < 0.0001\)), lo que confirma que la combinación de sexo y grupo de edad explica parte de la variabilidad observada. Se rechaza la hipótesis nula de igualdad de medias entre jornadas, concluyendo que al menos una jornada presenta un tiempo promedio de desplazamiento diferente.

Tamaño del efecto de la jornada

anova_base <- anova(modelo)
ss_total <- sum(anova_base[["Sum Sq"]],na.rm=TRUE)
ss_jornada <- anova_base[["Sum Sq"]][1]
eta2_jornada <- ss_jornada/ss_total
tabla_eta <- data.frame(efecto="Jornada",eta_cuadrado=eta2_jornada)
tabla_bonita(tabla_eta,"Tamaño del efecto de la jornada",4)
Tamaño del efecto de la jornada
efecto eta_cuadrado
Jornada 0.0146

El tamaño del efecto de la jornada fue \(\eta^2 = 0.0146\). Esto indica que la jornada explica aproximadamente el 1.46% de la variabilidad total del tiempo de desplazamiento. Aunque el efecto es estadísticamente significativo, su magnitud es pequeña, lo cual puede deberse al gran tamaño muestral.

Resumen ejecutivo de la Fase II
indicador valor
Observaciones Fase II 44,355
Resultado ANOVA p < 0.0001
Mayor media Fin de semana
Eta cuadrado 0.0146

En síntesis, la Fase II incluyó 44,355 observaciones. El ANOVA evidenció diferencias significativas entre jornadas, siendo la jornada de fin de semana la que presentó el mayor tiempo promedio de desplazamiento. Sin embargo, el tamaño del efecto fue bajo, por lo que los resultados deben interpretarse con prudencia.

Verificación de supuestos

Normalidad de residuos

res <- residuals(modelo)
ajustados <- fitted(modelo)
df_res <- data.frame(res=res)
g_hist_res <- ggplot(df_res,aes(x=res))+geom_histogram(bins=30,fill=azul_4,color="white")+labs(title="Histograma de residuos",x="Residuos",y="Frecuencia")+tema_informe()
render_plotly(g_hist_res)

El histograma de residuos permite evaluar visualmente la normalidad. Se observa una distribución concentrada alrededor de cero, aunque con cierta asimetría y presencia de valores extremos, lo cual es común en variables de tiempo.

qq_teorico <- qnorm(ppoints(length(res)))
qq_observado <- sort(res)
df_qq <- data.frame(teorico=qq_teorico,observado=qq_observado)
q1_obs <- quantile(res,0.25,na.rm=TRUE); q3_obs <- quantile(res,0.75,na.rm=TRUE); q1_teo <- qnorm(0.25); q3_teo <- qnorm(0.75)
slope_qq <- (q3_obs-q1_obs)/(q3_teo-q1_teo)
intercept_qq <- q1_obs - slope_qq*q1_teo
plot_ly(data=df_qq,x=~teorico,y=~observado,type="scatter",mode="markers",marker=list(color=azul_5,size=5,opacity=0.6),text=~paste("Cuantil teórico:",round(teorico,3),"<br>Cuantil observado:",round(observado,3)),hoverinfo="text") %>% add_lines(x=~teorico,y=~(intercept_qq+slope_qq*teorico),line=list(width=2,color=azul_oscuro)) %>% layout(autosize=TRUE,margin=list(l=70,r=30,t=70,b=70),title="Q-Q plot de los residuos",xaxis=list(title="Cuantiles teóricos"),yaxis=list(title="Cuantiles observados")) %>% plotly::config(displaylogo=FALSE,responsive=TRUE)

El gráfico Q-Q muestra desviaciones respecto a la línea teórica, especialmente en las colas. Esto sugiere que la normalidad de los residuos no se cumple de manera estricta. Sin embargo, debido al tamaño muestral elevado, el ANOVA puede considerarse razonablemente robusto.

Homocedasticidad

levene_res <- leveneTest(minutos ~ jornada,data=base_f2)
levene_tabla <- data.frame(gl_1=levene_res$Df[1],gl_2=levene_res$Df[2],F=levene_res$`F value`[1],p_valor=formatear_p(levene_res$`Pr(>F)`[1]))
tabla_bonita(levene_tabla,"Prueba de Levene para homogeneidad de varianzas",4)
Prueba de Levene para homogeneidad de varianzas
gl_1 gl_2 F p_valor
4 44350 102.8191 < 0.0001

La prueba de Levene resultó significativa, lo que indica evidencia de diferencias en las varianzas entre jornadas. Esto sugiere que el supuesto de homogeneidad de varianzas no se cumple completamente. Por esta razón, los resultados del ANOVA deben interpretarse con cautela y complementarse con la inspección gráfica y el análisis de comparaciones múltiples. Dado el incumplimiento del supuesto de homogeneidad de varianzas, los resultados deben interpretarse con precaución, especialmente en la comparación de grupos con tamaños desbalanceados.

Residuos vs ajustados e independencia en secuencia

df_diag <- data.frame(ajustados=ajustados,residuos=res,orden=seq_along(res))
paso_secuencia <- max(1,floor(nrow(df_diag)/5000))
df_diag_seq <- df_diag[seq(1,nrow(df_diag),by=paso_secuencia),]
g_res_aj <- ggplot(df_diag,aes(x=ajustados,y=residuos,text=paste("Ajustado:",round(ajustados,2),"<br>Residuo:",round(residuos,2))))+geom_point(color=azul_5,alpha=0.45)+geom_hline(yintercept=0,color=azul_oscuro,linetype=2,linewidth=1)+labs(title="Residuos vs ajustados",x="Valores ajustados",y="Residuos")+tema_informe()
render_plotly(g_res_aj,tooltip="text")

El gráfico de residuos contra valores ajustados permite evaluar si existe algún patrón sistemático. Aunque se observa variabilidad en la dispersión de los residuos, no se identifica una estructura lineal clara. Esto respalda el uso del modelo como aproximación comparativa, aunque reconociendo limitaciones por heterocedasticidad.

g_res_seq <- ggplot(df_diag_seq,aes(x=orden,y=residuos,text=paste("Orden:",orden,"<br>Residuo:",round(residuos,2))))+geom_line(color=azul_5,linewidth=0.45,alpha=0.85)+geom_point(color=azul_4,alpha=0.35,size=0.7)+geom_hline(yintercept=0,color=azul_oscuro,linetype=2,linewidth=1)+labs(title="Residuos en secuencia",subtitle="Visualización con muestreo de puntos para evitar saturación gráfica",x="Orden de observación",y="Residuo")+tema_informe()
render_plotly(g_res_seq,tooltip="text")

El gráfico de residuos en secuencia se utilizó como una revisión visual de independencia. No se observa un patrón temporal o secuencial claramente definido, por lo que no hay evidencia visual fuerte de dependencia entre observaciones. Sin embargo, al tratarse de datos de encuesta, la independencia debe interpretarse con precaución.

Comparaciones múltiples

tukey_res <- TukeyHSD(modelo,"jornada")
tukey_tabla <- as.data.frame(tukey_res$jornada) %>% tibble::rownames_to_column("comparacion") %>% mutate(p_ajustado=formatear_p(`p adj`)) %>% select(comparacion,diff,lwr,upr,p_ajustado)
tabla_bonita(tukey_tabla,"Comparaciones múltiples de Tukey",4)
Comparaciones múltiples de Tukey
comparacion diff lwr upr p_ajustado
Tarde-Mañana -1.5061 -2.1004 -0.9117 < 0.0001
Noche-Mañana 1.2501 -0.8853 3.3854 0.4993
Única/Completa-Mañana 4.2968 3.6510 4.9427 < 0.0001
Fin de semana-Mañana 9.2927 7.7280 10.8574 < 0.0001
Noche-Tarde 2.7561 0.5567 4.9555 0.0057
Única/Completa-Tarde 5.8029 4.9693 6.6365 < 0.0001
Fin de semana-Tarde 10.7988 9.1477 12.4498 < 0.0001
Única/Completa-Noche 3.0468 0.8329 5.2606 0.0016
Fin de semana-Noche 8.0426 5.4097 10.6756 < 0.0001
Fin de semana-Única/Completa 4.9959 3.3256 6.6662 < 0.0001

Las comparaciones múltiples de Tukey muestran que la mayoría de pares de jornadas presentan diferencias estadísticamente significativas. La única comparación no significativa fue Noche-Mañana, con \(p = 0.4993\), lo que indica que no hay evidencia suficiente para afirmar que estas dos jornadas difieran en su tiempo promedio de desplazamiento.

df_tukey_plot <- as.data.frame(tukey_res$jornada) %>% tibble::rownames_to_column("comparacion")
g_tukey <- ggplot(df_tukey_plot,aes(x=diff,y=reorder(comparacion,diff),text=paste("Comparación:",comparacion,"<br>Diferencia:",round(diff,3),"<br>LI:",round(lwr,3),"<br>LS:",round(upr,3),"<br>p ajustado:",formatear_p(`p adj`))))+geom_vline(xintercept=0,color=azul_oscuro,linetype=2,linewidth=1)+geom_errorbarh(aes(xmin=lwr,xmax=upr),height=0.18,color=azul_5)+geom_point(color=azul_oscuro,size=2.5)+labs(title="Comparaciones múltiples de Tukey",x="Diferencia de medias",y="Comparación")+tema_informe()
render_plotly(g_tukey,tooltip="text")

El gráfico de Tukey muestra los intervalos de confianza para las diferencias de medias entre jornadas. Las comparaciones cuyos intervalos no cruzan el cero indican diferencias significativas. Se observa que la jornada de fin de semana presenta diferencias positivas importantes frente a las demás jornadas, confirmando que es el grupo con mayor tiempo promedio de desplazamiento.

Potencia del diseño

medias_jornada <- tapply(base_f2$minutos,base_f2$jornada,mean,na.rm=TRUE)
var_entre <- var(as.numeric(medias_jornada),na.rm=TRUE)
mse <- summary(modelo)[[1]]["Residuals","Mean Sq"]
n_por_grupo_aprox <- floor(min(table(base_f2$jornada)))
k_grupos <- length(unique(base_f2$jornada))
potencia_aprox <- power.anova.test(groups=k_grupos,n=n_por_grupo_aprox,between.var=var_entre,within.var=mse,sig.level=0.05)
tabla_potencia <- data.frame(grupos=potencia_aprox$groups,n_por_grupo=potencia_aprox$n,varianza_entre=potencia_aprox$between.var,varianza_dentro=potencia_aprox$within.var,nivel_significancia=potencia_aprox$sig.level,potencia=potencia_aprox$power)
tabla_bonita(tabla_potencia,"Potencia aproximada del diseño",4)
Potencia aproximada del diseño
grupos n_por_grupo varianza_entre varianza_dentro nivel_significancia potencia
5 298 18.2728 181.0981 0.05 1

La potencia se estimó de manera aproximada mediante power.anova.test, tomando como referencia el número mínimo de observaciones por jornada y una descomposición simplificada de la varianza entre y dentro de grupos. Dado que el diseño no es balanceado, incorpora bloques y además proviene de datos observacionales, esta medida debe interpretarse como una aproximación orientativa y no como una cuantificación exacta de la potencia del modelo.

La alta potencia obtenida es consistente con el gran tamaño muestral, lo que incrementa la probabilidad de detectar diferencias incluso cuando el tamaño del efecto es pequeño.

Integración y discusión

El estudio se construyó bajo una lógica integrada. En la Fase I, sexo y grupo de edad fueron usados para definir estratos y mejorar la representatividad del muestreo. En la Fase II, esas mismas variables se reutilizaron como bloques para controlar heterogeneidad en el análisis comparativo. Esta conexión permite afirmar que el proyecto no se desarrolló como dos ejercicios aislados, sino como un estudio estadístico coherente de principio a fin.

Los resultados muestran que, aunque la edad presenta una relación estadísticamente significativa con el tiempo de desplazamiento, dicha relación es débil y no explica de forma sustancial la variabilidad observada. En cambio, la jornada académica sí constituye un factor relevante para comprender diferencias en los tiempos de desplazamiento. Esto resalta la importancia de elegir el método de análisis apropiado según la naturaleza del fenómeno: en este caso, la comparación de grupos mediante ANOVA fue más informativa que un enfoque centrado en correlación lineal.

Aunque se observaron desviaciones respecto a normalidad y homogeneidad de varianzas, el tamaño muestral elevado y la naturaleza comparativa del análisis permiten considerar al ANOVA como una aproximación razonablemente robusta. No obstante, los resultados deben interpretarse como evidencia de diferencias asociativas y no como efectos causales.

También es importante señalar que los datos son observacionales. Por ello, los resultados no deben interpretarse en términos causales estrictos, sino como evidencia de asociación y diferencias entre grupos.

Conclusiones y limitaciones

Conclusiones

  1. Se construyó una base analítica reproducible a partir de la ENCV 2024 del DANE, integrando módulos relevantes para estudiar simultáneamente participación educativa y tiempo de desplazamiento.
  2. La Fase I permitió implementar un diseño de muestreo estratificado por sexo y grupo de edad, con cálculo formal de tamaño de muestra, asignación proporcional y construcción de pesos muestrales.
  3. La proporción estimada de personas que actualmente estudian fue cercana al 25.59%, con intervalo de confianza al 95% de [24.14%, 27.05%].
  4. La comparación entre estimación simple, estratificada manual y formalización con survey mostró resultados cercanos entre sí, aunque la inferencia principal se fundamentó en survey, por ser el enfoque que incorpora explícitamente la estructura del diseño.
  5. En la Fase II, la jornada académica mostró diferencias estadísticamente significativas en el tiempo promedio de desplazamiento, incluso tras controlar heterogeneidad asociada a sexo y grupo de edad mediante una estructura análoga de bloqueo.
  6. Las comparaciones múltiples evidenciaron que algunas jornadas, en particular la jornada de mayor media, presentan tiempos medios de desplazamiento superiores a los de otros grupos.
  7. Aunque los supuestos clásicos del ANOVA no se cumplieron de manera estricta, el tamaño muestral elevado permite considerar los resultados como razonablemente robustos, siempre bajo una interpretación prudente.
  8. El principal aporte del trabajo fue la articulación coherente entre muestreo e inferencia comparativa, reutilizando en la segunda fase la misma estructura de heterogeneidad identificada en la primera.
  9. En conjunto, el estudio evidencia que la integración entre técnicas de muestreo e inferencia comparativa no solo es posible, sino metodológicamente deseable para obtener resultados más robustos y coherentes en contextos reales.

Limitaciones

Este estudio presenta varias limitaciones. En primer lugar, la Fase II se basa en datos observacionales, por lo que no permite establecer relaciones causales en sentido estricto. En segundo lugar, algunas variables potencialmente útiles mostraron una cantidad importante de valores faltantes en la base analítica, lo que limitó su incorporación. Finalmente, aunque el ANOVA fue robusto por tamaño muestral, la evidencia de heterocedasticidad y desviación respecto a la normalidad debe reconocerse de manera explícita al interpretar los resultados.

Declaración de uso de IA y referencias

Declaración de uso de IA

En el desarrollo de este trabajo se utilizaron herramientas de inteligencia artificial como apoyo para organizar la estructura del informe, mejorar la redacción académica. La IA fue útil para proponer alternativas de análisis, pero varias de esas sugerencias debieron evaluarse críticamente y, en algunos casos, descartarse por no ajustarse a la estructura de los datos o a los objetivos del proyecto. Por ello, la IA fue utilizada como herramienta de apoyo y no como sustituto del razonamiento estadístico.

Referencias

DANE. (2024). Encuesta Nacional de Calidad de Vida (ENCV) 2024. Departamento Administrativo Nacional de Estadística.

Lohr, S. L. (2022). Sampling: Design and Analysis (3rd ed.). CRC Press.

Montgomery, D. C. (2017). Design and Analysis of Experiments (9th ed.). Wiley.

Lumley, T. (2020). survey: Analysis of Complex Survey Samples. Paquete de R.

Reproducibilidad

Este documento fue elaborado en R Markdown con el objetivo de garantizar la reproducibilidad completa del análisis. Todas las etapas, desde la carga de datos hasta la generación de resultados, se encuentran integradas en un flujo de trabajo que permite replicar los resultados ejecutando el documento desde el inicio.

En primer lugar, se fijó una semilla global mediante set.seed() al inicio del análisis, con el fin de asegurar la reproducibilidad de los procedimientos que involucran selección aleatoria, como el muestreo estratificado realizado en la Fase I.

La base de datos utilizada proviene de los microdatos públicos de la Encuesta Nacional de Calidad de Vida (ECV) 2024 del DANE. Los archivos fueron descargados y procesados previamente, y posteriormente integrados en este documento mediante la unión de múltiples tablas (educación, características del hogar, TIC y diseño muestral), utilizando identificadores comunes. Todo el proceso de limpieza, transformación y construcción de variables se encuentra documentado en el código del informe.

Todos los paquetes utilizados se declaran explícitamente en el chunk de configuración (setup), lo que permite reconstruir el entorno de trabajo necesario para ejecutar el análisis sin ambigüedades.

Adicionalmente, todas las tablas, gráficos y resultados numéricos presentados en el documento son generados directamente a partir del código incluido, sin intervención manual, garantizando coherencia entre el análisis y la presentación de resultados.

Huella de sesión

A continuación se presenta una descripción del entorno de ejecución utilizado:

  • Versión de R: R version 4.5.2 (2025-10-31 ucrt)
  • Plataforma: x86_64-w64-mingw32/x64
  • Sistema operativo: Windows

Y más detallado:

## R version 4.5.2 (2025-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8  LC_CTYPE=Spanish_Colombia.utf8   
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C                     
## [5] LC_TIME=Spanish_Colombia.utf8    
## 
## time zone: America/Bogota
## tzcode source: internal
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] scales_1.4.0      htmltools_0.5.8.1 kableExtra_1.4.0  knitr_1.51       
##  [5] survey_4.4-8      survival_3.8-3    Matrix_1.7-4      tibble_3.2.1     
##  [9] car_3.1-5         carData_3.0-6     broom_1.0.12      stringr_1.6.0    
## [13] plotly_4.12.0     ggplot2_4.0.2     janitor_2.2.1     tidyr_1.3.1      
## [17] dplyr_1.1.4       readr_2.1.5      
## 
## loaded via a namespace (and not attached):
##  [1] gtable_0.3.6        xfun_0.52           bslib_0.10.0       
##  [4] htmlwidgets_1.6.4   lattice_0.22-7      tzdb_0.5.0         
##  [7] crosstalk_1.2.2     vctrs_0.6.5         tools_4.5.2        
## [10] generics_0.1.4      parallel_4.5.2      pkgconfig_2.0.3    
## [13] data.table_1.18.2.1 RColorBrewer_1.1-3  S7_0.2.1           
## [16] lifecycle_1.0.5     compiler_4.5.2      farver_2.1.2       
## [19] textshaping_1.0.4   mitools_2.4         snakecase_0.11.1   
## [22] sass_0.4.10         yaml_2.3.10         lazyeval_0.2.2     
## [25] Formula_1.2-5       crayon_1.5.3        pillar_1.11.1      
## [28] jquerylib_0.1.4     cachem_1.1.0        abind_1.4-8        
## [31] nlme_3.1-168        tidyselect_1.2.1    digest_0.6.37      
## [34] stringi_1.8.7       purrr_1.1.0         labeling_0.4.3     
## [37] splines_4.5.2       fastmap_1.2.0       cli_3.6.5          
## [40] magrittr_2.0.3      withr_3.0.2         backports_1.5.0    
## [43] bit64_4.6.0-1       lubridate_1.9.4     timechange_0.3.0   
## [46] rmarkdown_2.30      httr_1.4.7          bit_4.6.0          
## [49] otel_0.2.0          hms_1.1.4           evaluate_1.0.5     
## [52] viridisLite_0.4.3   mgcv_1.9-3          rlang_1.1.7        
## [55] Rcpp_1.1.0          glue_1.8.0          DBI_1.2.3          
## [58] xml2_1.5.2          vroom_1.7.0         svglite_2.2.2      
## [61] rstudioapi_0.18.0   jsonlite_2.0.0      R6_2.6.1           
## [64] systemfonts_1.3.1