Introducción y Contexto

Este análisis tiene como objetivo construir un modelo de regresión múltiple para predecir el Puntaje Global en las pruebas Saber 11. Utilizaremos información proporcionada por el Ministerio de Educación, que incluye variables demográficas, socioeconómicas y de desempeño académico. El análisis se llevará a cabo en R Markdown y será publicado en RPubs.

Cargar Librerías y Datos

library(MASS)
library(corrplot)
## corrplot 0.95 loaded
library(readxl)
library(ggplot2)

# Leer los datos
Datos <- read_excel("Datos_Modelo_de_Regresion_Lineal_Multiple.xlsx", na = "-")

# Seleccionar columnas relevantes
Datos <- subset(Datos, select = c(
  ESTU_GENERO, ESTU_TIENEETNIA, ESTU_DEPTO_RESIDE,
  FAMI_ESTRATOVIVIENDA, COLE_NATURALEZA, COLE_CALENDARIO,
  PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, PUNT_C_NATURALES,
  PUNT_SOCIALES_CIUDADANAS, PUNT_INGLES, PUNT_GLOBAL
))

# Inspeccionar estructura de los datos
str(Datos)
## tibble [199 × 12] (S3: tbl_df/tbl/data.frame)
##  $ ESTU_GENERO             : chr [1:199] "M" "M" "M" "M" ...
##  $ ESTU_TIENEETNIA         : chr [1:199] "No" "No" "No" "Si" ...
##  $ ESTU_DEPTO_RESIDE       : chr [1:199] "MAGDALENA" "BOGOTÃ\u0081" "BOLIVAR" "BOGOTÃ\u0081" ...
##  $ FAMI_ESTRATOVIVIENDA    : chr [1:199] "Estrato 3" "Estrato 3" "Estrato 1" "Estrato 3" ...
##  $ COLE_NATURALEZA         : chr [1:199] "OFICIAL" "NO OFICIAL" "OFICIAL" "OFICIAL" ...
##  $ COLE_CALENDARIO         : chr [1:199] "A" "A" "A" "A" ...
##  $ PUNT_LECTURA_CRITICA    : num [1:199] 47 60 66 62 63 49 76 57 62 68 ...
##  $ PUNT_MATEMATICAS        : num [1:199] 48 65 57 54 57 29 70 65 62 66 ...
##  $ PUNT_C_NATURALES        : num [1:199] 37 54 41 61 55 41 70 63 66 63 ...
##  $ PUNT_SOCIALES_CIUDADANAS: num [1:199] 30 59 74 73 57 41 68 66 39 77 ...
##  $ PUNT_INGLES             : num [1:199] 54 63 64 53 52 35 72 60 63 51 ...
##  $ PUNT_GLOBAL             : num [1:199] 208 299 299 309 288 198 355 313 288 336 ...
summary(Datos)
##  ESTU_GENERO        ESTU_TIENEETNIA    ESTU_DEPTO_RESIDE  FAMI_ESTRATOVIVIENDA
##  Length:199         Length:199         Length:199         Length:199          
##  Class :character   Class :character   Class :character   Class :character    
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character    
##                                                                               
##                                                                               
##                                                                               
##  COLE_NATURALEZA    COLE_CALENDARIO    PUNT_LECTURA_CRITICA PUNT_MATEMATICAS
##  Length:199         Length:199         Min.   :26.00        Min.   :23.00   
##  Class :character   Class :character   1st Qu.:44.00        1st Qu.:42.00   
##  Mode  :character   Mode  :character   Median :54.00        Median :52.00   
##                                        Mean   :52.13        Mean   :51.03   
##                                        3rd Qu.:60.00        3rd Qu.:61.00   
##                                        Max.   :77.00        Max.   :77.00   
##  PUNT_C_NATURALES PUNT_SOCIALES_CIUDADANAS  PUNT_INGLES      PUNT_GLOBAL   
##  Min.   :23.0     Min.   :21.0             Min.   : 24.00   Min.   :132.0  
##  1st Qu.:40.5     1st Qu.:35.0             1st Qu.: 37.00   1st Qu.:204.5  
##  Median :49.0     Median :45.0             Median : 48.00   Median :243.0  
##  Mean   :48.9     Mean   :46.1             Mean   : 48.68   Mean   :247.4  
##  3rd Qu.:57.0     3rd Qu.:55.0             3rd Qu.: 59.00   3rd Qu.:292.0  
##  Max.   :74.0     Max.   :77.0             Max.   :100.00   Max.   :366.0

Preprocesamiento de los Datos

# Convertir variables categóricas a factores
Datos$ESTU_GENERO <- as.factor(Datos$ESTU_GENERO)
Datos$ESTU_TIENEETNIA <- as.factor(Datos$ESTU_TIENEETNIA)
Datos$ESTU_DEPTO_RESIDE <- as.factor(Datos$ESTU_DEPTO_RESIDE)
Datos$FAMI_ESTRATOVIVIENDA <- as.factor(Datos$FAMI_ESTRATOVIVIENDA)
Datos$COLE_NATURALEZA <- as.factor(Datos$COLE_NATURALEZA)
Datos$COLE_CALENDARIO <- as.factor(Datos$COLE_CALENDARIO)

# Eliminar filas con valores faltantes
Datos_clean <- na.omit(Datos)

Análisis Exploratorio de Datos

# Gráfico de barras para variables categóricas
categoricas <- c("ESTU_GENERO", "ESTU_TIENEETNIA", "FAMI_ESTRATOVIVIENDA", "COLE_NATURALEZA", "COLE_CALENDARIO")
for (var in categoricas) {
  print(ggplot(Datos_clean, aes_string(var)) + 
          geom_bar(fill = "steelblue") + 
          theme_minimal() + 
          labs(title = paste("Distribución de", var), x = var, y = "Frecuencia"))
}
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# Gráficos de dispersión para variables numéricas
numeric_vars <- c("PUNT_LECTURA_CRITICA", "PUNT_MATEMATICAS", "PUNT_C_NATURALES", 
                  "PUNT_SOCIALES_CIUDADANAS", "PUNT_INGLES", "PUNT_GLOBAL")
for (var in numeric_vars[-length(numeric_vars)]) {
  print(ggplot(Datos_clean, aes_string(x = var, y = "PUNT_GLOBAL")) + 
          geom_point(alpha = 0.5, color = "darkred") + 
          theme_minimal() + 
          labs(title = paste("Relación entre", var, "y Puntaje Global"), 
               x = var, y = "Puntaje Global"))
}

Exploración de Correlaciones

# Seleccionar solo variables numéricas
numeric_data <- subset(Datos_clean, select = c(
  PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, 
  PUNT_C_NATURALES, PUNT_SOCIALES_CIUDADANAS, 
  PUNT_INGLES, PUNT_GLOBAL
))

# Matriz de correlación
cor_matrix <- cor(numeric_data, method = "pearson")
corrplot(round(cor_matrix, 3), type = "lower")

Construcción del Modelo de Regresión Múltiple

# Modelo inicial
modelo.lineal <- lm(PUNT_GLOBAL ~ ., data = Datos_clean)
summary(modelo.lineal)
## 
## Call:
## lm(formula = PUNT_GLOBAL ~ ., data = Datos_clean)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.61117 -0.17823 -0.00135  0.20946  0.59566 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       0.126591   0.192322   0.658  0.51143    
## ESTU_GENEROM                      0.109047   0.072370   1.507  0.13402    
## ESTU_TIENEETNIASi                 0.014411   0.077313   0.186  0.85239    
## ESTU_DEPTO_RESIDEARAUCA           0.065001   0.203870   0.319  0.75031    
## ESTU_DEPTO_RESIDEATLANTICO       -0.196208   0.129286  -1.518  0.13127    
## ESTU_DEPTO_RESIDEBOGOTÃ\u0081    -0.076761   0.131868  -0.582  0.56140    
## ESTU_DEPTO_RESIDEBOLIVAR         -0.156297   0.135507  -1.153  0.25062    
## ESTU_DEPTO_RESIDEBOYACA           0.070826   0.227565   0.311  0.75607    
## ESTU_DEPTO_RESIDECASANARE        -0.282042   0.229299  -1.230  0.22067    
## ESTU_DEPTO_RESIDECAUCA           -0.308032   0.183148  -1.682  0.09473 .  
## ESTU_DEPTO_RESIDECESAR           -0.058768   0.143419  -0.410  0.68258    
## ESTU_DEPTO_RESIDECHOCO           -0.103888   0.201470  -0.516  0.60688    
## ESTU_DEPTO_RESIDECORDOBA         -0.136741   0.136943  -0.999  0.31967    
## ESTU_DEPTO_RESIDECUNDINAMARCA    -0.299649   0.143181  -2.093  0.03810 *  
## ESTU_DEPTO_RESIDEHUILA           -0.336642   0.186266  -1.807  0.07277 .  
## ESTU_DEPTO_RESIDELA GUAJIRA      -0.413004   0.157937  -2.615  0.00986 ** 
## ESTU_DEPTO_RESIDEMAGDALENA       -0.159045   0.144253  -1.103  0.27204    
## ESTU_DEPTO_RESIDEMETA            -0.082537   0.178834  -0.462  0.64511    
## ESTU_DEPTO_RESIDENORTE SANTANDER -0.100329   0.170591  -0.588  0.55736    
## ESTU_DEPTO_RESIDEQUINDIO          0.095260   0.301105   0.316  0.75218    
## ESTU_DEPTO_RESIDESAN ANDRES      -0.395191   0.325178  -1.215  0.22621    
## ESTU_DEPTO_RESIDESANTANDER       -0.146427   0.144357  -1.014  0.31210    
## ESTU_DEPTO_RESIDESUCRE           -0.101082   0.146086  -0.692  0.49008    
## ESTU_DEPTO_RESIDEVALLE           -0.220915   0.158203  -1.396  0.16471    
## FAMI_ESTRATOVIVIENDAEstrato 2     0.046162   0.061683   0.748  0.45544    
## FAMI_ESTRATOVIVIENDAEstrato 3     0.077922   0.071443   1.091  0.27721    
## FAMI_ESTRATOVIVIENDAEstrato 4    -0.045525   0.083214  -0.547  0.58516    
## FAMI_ESTRATOVIVIENDAEstrato 5     0.087011   0.138977   0.626  0.53224    
## FAMI_ESTRATOVIVIENDASin Estrato   0.116818   0.099185   1.178  0.24080    
## COLE_NATURALEZAOFICIAL            0.028854   0.058738   0.491  0.62399    
## COLE_CALENDARIOOTRO               0.013259   0.308584   0.043  0.96579    
## PUNT_LECTURA_CRITICA              1.147945   0.003632 316.065  < 2e-16 ***
## PUNT_MATEMATICAS                  1.156401   0.003372 342.900  < 2e-16 ***
## PUNT_C_NATURALES                  1.148460   0.003710 309.546  < 2e-16 ***
## PUNT_SOCIALES_CIUDADANAS          1.158027   0.002726 424.817  < 2e-16 ***
## PUNT_INGLES                       0.386877   0.002784 138.981  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2705 on 146 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 1.994e+05 on 35 and 146 DF,  p-value: < 2.2e-16
# Selección de variables con Stepwise
modelo.step <- stepAIC(modelo.lineal, direction = "both")
## Start:  AIC=-444.04
## PUNT_GLOBAL ~ ESTU_GENERO + ESTU_TIENEETNIA + ESTU_DEPTO_RESIDE + 
##     FAMI_ESTRATOVIVIENDA + COLE_NATURALEZA + COLE_CALENDARIO + 
##     PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + 
##     PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## - ESTU_DEPTO_RESIDE        21       1.7    12.4 -459.42
## - FAMI_ESTRATOVIVIENDA      5       0.3    11.0 -449.40
## - COLE_CALENDARIO           1       0.0    10.7 -446.04
## - ESTU_TIENEETNIA           1       0.0    10.7 -446.00
## - COLE_NATURALEZA           1       0.0    10.7 -445.74
## <none>                                     10.7 -444.04
## - ESTU_GENERO               1       0.2    10.8 -443.23
## - PUNT_INGLES               1    1413.3  1424.0  444.41
## - PUNT_C_NATURALES          1    7010.9  7021.6  734.80
## - PUNT_LECTURA_CRITICA      1    7309.3  7320.0  742.37
## - PUNT_MATEMATICAS          1    8603.1  8613.8  772.00
## - PUNT_SOCIALES_CIUDADANAS  1   13204.6 13215.3  849.89
## 
## Step:  AIC=-459.42
## PUNT_GLOBAL ~ ESTU_GENERO + ESTU_TIENEETNIA + FAMI_ESTRATOVIVIENDA + 
##     COLE_NATURALEZA + COLE_CALENDARIO + PUNT_LECTURA_CRITICA + 
##     PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + 
##     PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## - FAMI_ESTRATOVIVIENDA      5       0.2    12.6 -466.01
## - ESTU_TIENEETNIA           1       0.0    12.4 -461.42
## - COLE_NATURALEZA           1       0.0    12.4 -461.13
## - COLE_CALENDARIO           1       0.0    12.4 -460.83
## <none>                                     12.4 -459.42
## - ESTU_GENERO               1       0.2    12.6 -458.33
## + ESTU_DEPTO_RESIDE        21       1.7    10.7 -444.04
## - PUNT_INGLES               1    1656.9  1669.2  431.33
## - PUNT_C_NATURALES          1    7577.3  7589.6  706.96
## - PUNT_LECTURA_CRITICA      1    8150.5  8162.9  720.21
## - PUNT_MATEMATICAS          1    9710.1  9722.5  752.03
## - PUNT_SOCIALES_CIUDADANAS  1   14192.5 14204.9  821.03
## 
## Step:  AIC=-466.01
## PUNT_GLOBAL ~ ESTU_GENERO + ESTU_TIENEETNIA + COLE_NATURALEZA + 
##     COLE_CALENDARIO + PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + 
##     PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## - ESTU_TIENEETNIA           1       0.0    12.6 -467.94
## - COLE_NATURALEZA           1       0.0    12.6 -467.65
## - COLE_CALENDARIO           1       0.0    12.6 -467.41
## <none>                                     12.6 -466.01
## - ESTU_GENERO               1       0.3    12.9 -463.75
## + FAMI_ESTRATOVIVIENDA      5       0.2    12.4 -459.42
## + ESTU_DEPTO_RESIDE        21       1.6    11.0 -449.40
## - PUNT_INGLES               1    1732.2  1744.8  429.39
## - PUNT_C_NATURALES          1    7758.8  7771.4  701.26
## - PUNT_LECTURA_CRITICA      1    8260.1  8272.7  712.64
## - PUNT_MATEMATICAS          1   10573.4 10586.0  757.52
## - PUNT_SOCIALES_CIUDADANAS  1   14541.6 14554.2  815.46
## 
## Step:  AIC=-467.94
## PUNT_GLOBAL ~ ESTU_GENERO + COLE_NATURALEZA + COLE_CALENDARIO + 
##     PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + 
##     PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## - COLE_NATURALEZA           1       0.0    12.6 -469.63
## - COLE_CALENDARIO           1       0.0    12.6 -469.32
## <none>                                     12.6 -467.94
## + ESTU_TIENEETNIA           1       0.0    12.6 -466.01
## - ESTU_GENERO               1       0.3    12.9 -465.75
## + FAMI_ESTRATOVIVIENDA      5       0.2    12.4 -461.42
## + ESTU_DEPTO_RESIDE        21       1.6    11.0 -451.37
## - PUNT_INGLES               1    1733.3  1745.9  427.50
## - PUNT_C_NATURALES          1    7758.8  7771.4  699.27
## - PUNT_LECTURA_CRITICA      1    8295.1  8307.7  711.41
## - PUNT_MATEMATICAS          1   10820.2 10832.8  759.71
## - PUNT_SOCIALES_CIUDADANAS  1   14836.4 14849.0  817.11
## 
## Step:  AIC=-469.63
## PUNT_GLOBAL ~ ESTU_GENERO + COLE_CALENDARIO + PUNT_LECTURA_CRITICA + 
##     PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + 
##     PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## - COLE_CALENDARIO           1       0.0    12.7 -471.13
## <none>                                     12.6 -469.63
## + COLE_NATURALEZA           1       0.0    12.6 -467.94
## + ESTU_TIENEETNIA           1       0.0    12.6 -467.65
## - ESTU_GENERO               1       0.3    12.9 -467.60
## + FAMI_ESTRATOVIVIENDA      5       0.2    12.4 -463.13
## + ESTU_DEPTO_RESIDE        21       1.6    11.0 -453.03
## - PUNT_INGLES               1    1840.6  1853.3  436.37
## - PUNT_C_NATURALES          1    7837.7  7850.3  699.10
## - PUNT_LECTURA_CRITICA      1    8327.0  8339.7  710.11
## - PUNT_MATEMATICAS          1   10820.1 10832.8  757.71
## - PUNT_SOCIALES_CIUDADANAS  1   14893.8 14906.4  815.81
## 
## Step:  AIC=-471.13
## PUNT_GLOBAL ~ ESTU_GENERO + PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + 
##     PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## <none>                                     12.7 -471.13
## + COLE_CALENDARIO           1       0.0    12.6 -469.63
## + COLE_NATURALEZA           1       0.0    12.6 -469.32
## + ESTU_TIENEETNIA           1       0.0    12.7 -469.17
## - ESTU_GENERO               1       0.3    13.0 -468.98
## + FAMI_ESTRATOVIVIENDA      5       0.2    12.4 -464.67
## + ESTU_DEPTO_RESIDE        21       1.7    11.0 -455.03
## - PUNT_INGLES               1    1840.6  1853.3  434.37
## - PUNT_C_NATURALES          1    7840.6  7853.3  697.17
## - PUNT_LECTURA_CRITICA      1    8328.1  8340.8  708.13
## - PUNT_MATEMATICAS          1   11031.7 11044.4  759.23
## - PUNT_SOCIALES_CIUDADANAS  1   14921.0 14933.7  814.14
summary(modelo.step)
## 
## Call:
## lm(formula = PUNT_GLOBAL ~ ESTU_GENERO + PUNT_LECTURA_CRITICA + 
##     PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + 
##     PUNT_INGLES, data = Datos_clean)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.52395 -0.19009  0.00755  0.20073  0.54314 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              -0.057527   0.117209  -0.491   0.6242    
## ESTU_GENEROM              0.132128   0.065790   2.008   0.0461 *  
## PUNT_LECTURA_CRITICA      1.147868   0.003383 339.288   <2e-16 ***
## PUNT_MATEMATICAS          1.157342   0.002964 390.497   <2e-16 ***
## PUNT_C_NATURALES          1.148964   0.003490 329.209   <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS  1.158049   0.002550 454.146   <2e-16 ***
## PUNT_INGLES               0.386784   0.002425 159.507   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.269 on 175 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 1.177e+06 on 6 and 175 DF,  p-value: < 2.2e-16

Evaluación del Modelo

# Análisis de residuos
par(mfrow = c(2, 2))
plot(modelo.step)

# Coeficientes del modelo final
coef(modelo.step)
##              (Intercept)             ESTU_GENEROM     PUNT_LECTURA_CRITICA 
##              -0.05752675               0.13212847               1.14786825 
##         PUNT_MATEMATICAS         PUNT_C_NATURALES PUNT_SOCIALES_CIUDADANAS 
##               1.15734231               1.14896380               1.15804947 
##              PUNT_INGLES 
##               0.38678408

Conclusiones

  1. Variables Significativas: Identificamos que las siguientes variables son relevantes para predecir el puntaje global:
    • Variables seleccionadas mediante el procedimiento Stepwise.
  2. Evaluación del Modelo: El modelo final tiene un \(R^2\) de [insertar valor] y un AIC de [insertar valor], lo que indica [calidad del modelo].
  3. Límites del Modelo: La variabilidad explicada por el modelo puede estar influenciada por factores no incluidos en los datos.