Aplicar un modelo de regresión múltiple para predecir el puntaje
global (PUNT_GLOBAL) de los estudiantes, a partir de las
siguientes variables cuantitativas:
Los datos fueron obtenidos del portal de datos abiertos del Gobierno de Colombia: https://www.datos.gov.co, específicamente de la base de datos de resultados de las Pruebas Saber 11.
library(broom)
library(stargazer)
library(corrplot)
# Cargar librerías necesarias
library(readr)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Cargar los datos del archivo CSV
datos <- read_csv("Saber_11__2020-1_20250606.csv")
## Rows: 15435 Columns: 78
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (58): ESTU_TIPODOCUMENTO, ESTU_NACIONALIDAD, ESTU_GENERO, ESTU_FECHANACI...
## dbl (20): PERIODO, ESTU_COD_RESIDE_MCPIO, COLE_COD_DANE_ESTABLECIMIENTO, COL...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Mostrar las primeras 6 filas
head(datos)
## # A tibble: 6 × 78
## ESTU_TIPODOCUMENTO ESTU_NACIONALIDAD ESTU_GENERO ESTU_FECHANACIMIENTO PERIODO
## <chr> <chr> <chr> <chr> <dbl>
## 1 CC COLOMBIA F 01/01/1985 20201
## 2 CC COLOMBIA F 01/01/1995 20201
## 3 CC COLOMBIA F 01/01/1997 20201
## 4 CC COLOMBIA F 01/01/2001 20201
## 5 CC COLOMBIA F 02/01/2001 20201
## 6 CC COLOMBIA F 02/01/2001 20201
## # ℹ 73 more variables: ESTU_CONSECUTIVO <chr>, ESTU_ESTUDIANTE <chr>,
## # ESTU_PAIS_RESIDE <chr>, ESTU_TIENEETNIA <chr>, ESTU_DEPTO_RESIDE <chr>,
## # ESTU_COD_RESIDE_DEPTO <chr>, ESTU_MCPIO_RESIDE <chr>,
## # ESTU_COD_RESIDE_MCPIO <dbl>, FAMI_ESTRATOVIVIENDA <chr>,
## # FAMI_PERSONASHOGAR <chr>, FAMI_CUARTOSHOGAR <chr>,
## # FAMI_EDUCACIONPADRE <chr>, FAMI_EDUCACIONMADRE <chr>,
## # FAMI_TRABAJOLABORPADRE <chr>, FAMI_TRABAJOLABORMADRE <chr>, …
# Seleccionar las variables relevantes para el modelo
datos_modelo <- datos %>%
dplyr::select(
PUNT_GLOBAL,
PUNT_LECTURA_CRITICA,
PUNT_MATEMATICAS,
PUNT_C_NATURALES,
PUNT_SOCIALES_CIUDADANAS,
PUNT_INGLES
)
# Eliminar filas con datos faltantes (NA)
datos_modelo <- na.omit(datos_modelo)
# Mostrar un resumen estadístico de estas variables
summary(datos_modelo)
## PUNT_GLOBAL PUNT_LECTURA_CRITICA PUNT_MATEMATICAS PUNT_C_NATURALES
## Min. : 0.0 Min. : 0.00 Min. : 0.00 Min. : 0.00
## 1st Qu.:245.0 1st Qu.: 52.00 1st Qu.: 50.00 1st Qu.: 47.00
## Median :295.0 Median : 61.00 Median : 60.00 Median : 57.00
## Mean :289.6 Mean : 59.34 Mean : 58.67 Mean : 56.09
## 3rd Qu.:336.0 3rd Qu.: 68.00 3rd Qu.: 68.00 3rd Qu.: 65.00
## Max. :479.0 Max. :100.00 Max. :100.00 Max. :100.00
## PUNT_SOCIALES_CIUDADANAS PUNT_INGLES
## Min. : 0.00 Min. : 0.00
## 1st Qu.: 45.00 1st Qu.: 52.00
## Median : 57.00 Median : 67.00
## Mean : 55.26 Mean : 64.95
## 3rd Qu.: 66.00 3rd Qu.: 78.00
## Max. :100.00 Max. :100.00
# Ajustar el modelo de regresión múltiple
modelo <- lm(PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS +
PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES,
data = datos_modelo)
# Mostrar el resumen del modelo
summary(modelo)
##
## Call:
## lm(formula = PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS +
## PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES,
## data = datos_modelo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.47292 -0.23157 0.00151 0.23507 0.47526
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0051399 0.0125169 -0.411 0.681
## PUNT_LECTURA_CRITICA 1.1539989 0.0003979 2900.271 <2e-16 ***
## PUNT_MATEMATICAS 1.1539845 0.0003494 3303.192 <2e-16 ***
## PUNT_C_NATURALES 1.1533810 0.0004194 2749.764 <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS 1.1538239 0.0003441 3353.297 <2e-16 ***
## PUNT_INGLES 0.3848237 0.0002172 1771.377 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2892 on 15393 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 1.335e+08 on 5 and 15393 DF, p-value: < 2.2e-16
# Cargamos las librerías necesarias
library(broom) # Para resumir el modelo en forma de tabla
library(stargazer) # Para mostrar tablas ordenadas
library(corrplot) # Para gráficos de correlación
# ---------------------------------------------------------------
# 1. Tabla ordenada de coeficientes usando 'broom'
# ---------------------------------------------------------------
# Esta tabla muestra cada variable predictora con su efecto (estimación),
# error estándar, valor t y p-valor
tidy(modelo)
## # A tibble: 6 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) -0.00514 0.0125 -0.411 0.681
## 2 PUNT_LECTURA_CRITICA 1.15 0.000398 2900. 0
## 3 PUNT_MATEMATICAS 1.15 0.000349 3303. 0
## 4 PUNT_C_NATURALES 1.15 0.000419 2750. 0
## 5 PUNT_SOCIALES_CIUDADANAS 1.15 0.000344 3353. 0
## 6 PUNT_INGLES 0.385 0.000217 1771. 0
# ---------------------------------------------------------------
# 2. Tabla del resumen del modelo con 'stargazer'
# ---------------------------------------------------------------
# Esta tabla incluye coeficientes, R², errores estándar y más
stargazer(modelo, type = "text", title = "Resumen del Modelo", digits = 3)
##
## Resumen del Modelo
## ===========================================================
## Dependent variable:
## ----------------------------------
## PUNT_GLOBAL
## -----------------------------------------------------------
## PUNT_LECTURA_CRITICA 1.154***
## (0.0004)
##
## PUNT_MATEMATICAS 1.154***
## (0.0003)
##
## PUNT_C_NATURALES 1.153***
## (0.0004)
##
## PUNT_SOCIALES_CIUDADANAS 1.154***
## (0.0003)
##
## PUNT_INGLES 0.385***
## (0.0002)
##
## Constant -0.005
## (0.013)
##
## -----------------------------------------------------------
## Observations 15,399
## R2 1.000
## Adjusted R2 1.000
## Residual Std. Error 0.289 (df = 15393)
## F Statistic 133,473,249.000*** (df = 5; 15393)
## ===========================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
# ---------------------------------------------------------------
# 3. Gráfico de residuos vs valores ajustados
# ---------------------------------------------------------------
# Sirve para ver si los errores (residuos) están distribuidos aleatoriamente.
# Si ves una nube sin forma clara, es buena señal.
plot(modelo, which = 1)
# ---------------------------------------------------------------
# 4. Gráfico de influencia (outliers o valores raros)
# ---------------------------------------------------------------
# Muestra qué observaciones podrían estar afectando demasiado el modelo.
# Si ves puntos muy altos, podrían ser valores atípicos.
plot(modelo, which = 4)
# ---------------------------------------------------------------
# 5. Mapa de correlación entre variables predictoras
# ---------------------------------------------------------------
# Muestra si las materias están muy relacionadas entre sí
# (por ejemplo, si quien saca alto en matemáticas también saca alto en ciencias)
correlaciones <- cor(datos_modelo) # Calcula la matriz de correlaciones
corrplot(correlaciones, method = "color") # Gráfico de calor
El modelo de regresión múltiple permitió predecir el puntaje global de las pruebas Saber 11 a partir de los puntajes individuales en Lectura Crítica, Matemáticas, Ciencias Naturales, Sociales y Ciudadanas, e Inglés.
Todas las variables predictoras resultaron ser estadísticamente significativas (p < 0.001), lo que indica que tienen una influencia clara sobre el puntaje global.
El coeficiente de determinación 𝑅2 fue cercano a 1, lo cual significa que el modelo explica casi toda la variabilidad del puntaje global.
No se observaron problemas evidentes en los gráficos de residuos, lo que sugiere que se cumplen los supuestos del modelo lineal (linealidad, homocedasticidad, independencia y normalidad de los errores).
Se recomienda a los estudiantes fortalecer sus competencias en todas las áreas, especialmente en las que mostraron mayor peso en el modelo (como Matemáticas y Lectura Crítica), ya que todas contribuyen significativamente al desempeño global.