library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.1     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.2.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Cargar el dataset (ajusta el nombre del archivo)
datos <- read_csv("data/saber11.csv")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
## Rows: 546212 Columns: 25
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (8): ESTU_GENERO, ESTU_TIENEETNIA, ESTU_DEPTO_RESIDE, ESTU_COD_RESIDE_D...
## dbl (17): PERIODO, PUNT_LECTURA_CRITICA, PERCENTIL_LECTURA_CRITICA, DESEMP_L...
## 
## ℹ 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.
# Ver primeras filas
head(datos)
## # A tibble: 6 × 25
##   ESTU_GENERO PERIODO ESTU_TIENEETNIA ESTU_DEPTO_RESIDE ESTU_COD_RESIDE_DEPTO
##   <chr>         <dbl> <chr>           <chr>             <chr>                
## 1 M             20194 No              "MAGDALENA"       47                   
## 2 M             20194 No              "BOGOTÃ\u0081"    11                   
## 3 M             20194 No              "BOLIVAR"         13                   
## 4 M             20194 Si              "BOGOTÃ\u0081"    11                   
## 5 M             20194 No              "BOGOTÃ\u0081"    11                   
## 6 M             20194 No              "ATLANTICO"       8                    
## # ℹ 20 more variables: FAMI_ESTRATOVIVIENDA <chr>, COLE_NATURALEZA <chr>,
## #   COLE_CALENDARIO <chr>, PUNT_LECTURA_CRITICA <dbl>,
## #   PERCENTIL_LECTURA_CRITICA <dbl>, DESEMP_LECTURA_CRITICA <dbl>,
## #   PUNT_MATEMATICAS <dbl>, PERCENTIL_MATEMATICAS <dbl>,
## #   DESEMP_MATEMATICAS <dbl>, PUNT_C_NATURALES <dbl>,
## #   PERCENTIL_C_NATURALES <dbl>, DESEMP_C_NATURALES <dbl>,
## #   PUNT_SOCIALES_CIUDADANAS <dbl>, PERCENTIL_SOCIALES_CIUDADANAS <dbl>, …
# Estructura de las columnas
glimpse(datos)
## Rows: 546,212
## Columns: 25
## $ ESTU_GENERO                   <chr> "M", "M", "M", "M", "M", "M", "M", "M", …
## $ PERIODO                       <dbl> 20194, 20194, 20194, 20194, 20194, 20194…
## $ ESTU_TIENEETNIA               <chr> "No", "No", "No", "Si", "No", "No", "Si"…
## $ ESTU_DEPTO_RESIDE             <chr> "MAGDALENA", "BOGOTÃ\u0081", "BOLIVAR", …
## $ ESTU_COD_RESIDE_DEPTO         <chr> "47", "11", "13", "11", "11", "8", "76",…
## $ FAMI_ESTRATOVIVIENDA          <chr> "Estrato 3", "Estrato 3", "Estrato 1", "…
## $ COLE_NATURALEZA               <chr> "OFICIAL", "NO OFICIAL", "OFICIAL", "OFI…
## $ COLE_CALENDARIO               <chr> "A", "A", "A", "A", "A", "A", "A", "A", …
## $ PUNT_LECTURA_CRITICA          <dbl> 47, 60, 66, 62, 63, 49, 76, 57, 62, 68, …
## $ PERCENTIL_LECTURA_CRITICA     <dbl> 33, 76, 91, 81, 85, 37, 100, 67, 83, 94,…
## $ DESEMP_LECTURA_CRITICA        <dbl> 2, 3, 4, 3, 3, 2, 4, 3, 3, 4, 2, 2, 3, 3…
## $ PUNT_MATEMATICAS              <dbl> 48, 65, 57, 54, 57, 29, 70, 65, 62, 66, …
## $ PERCENTIL_MATEMATICAS         <dbl> 42, 88, 70, 60, 70, 4, 96, 88, 82, 91, 1…
## $ DESEMP_MATEMATICAS            <dbl> 2, 3, 3, 3, 3, 1, 3, 3, 3, 3, 2, 1, 3, 3…
## $ PUNT_C_NATURALES              <dbl> 37, 54, 41, 61, 55, 41, 70, 63, 66, 63, …
## $ PERCENTIL_C_NATURALES         <dbl> 15, 71, 29, 87, 74, 26, 98, 90, 95, 91, …
## $ DESEMP_C_NATURALES            <dbl> 1, 2, 2, 3, 2, 2, 3, 3, 3, 3, 1, 2, 3, 2…
## $ PUNT_SOCIALES_CIUDADANAS      <dbl> 30, 59, 74, 73, 57, 41, 68, 66, 39, 77, …
## $ PERCENTIL_SOCIALES_CIUDADANAS <dbl> 8, 83, 99, 99, 79, 39, 96, 95, 33, 100, …
## $ DESEMP_SOCIALES_CIUDADANAS    <dbl> 1, 3, 4, 4, 3, 2, 3, 3, 1, 4, 1, 1, 3, 2…
## $ PUNT_INGLES                   <dbl> 54, 63, 64, 53, 52, 35, 72, 60, 63, 51, …
## $ PERCENTIL_INGLES              <dbl> 67, 88, 89, 67, 63, 14, 96, 83, 88, 61, …
## $ DESEMP_INGLES                 <chr> "A1", "A2", "A2", "A1", "A1", "A-", "B1"…
## $ PUNT_GLOBAL                   <dbl> 208, 299, 299, 309, 288, 198, 355, 313, …
## $ PERCENTIL_GLOBAL              <dbl> 25, 83, 84, 88, 78, 19, 99, 89, 78, 95, …
# Seleccionar variables necesarias
datos2 <- datos %>%
  select(
    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
  )

# Convertir variables categóricas en factor
datos2 <- datos2 %>%
  mutate(
    ESTU_GENERO = as.factor(ESTU_GENERO),
    ESTU_TIENEETNIA = as.factor(ESTU_TIENEETNIA),
    ESTU_DEPTO_RESIDE = as.factor(ESTU_DEPTO_RESIDE),
    FAMI_ESTRATOVIVIENDA = as.factor(FAMI_ESTRATOVIVIENDA),
    COLE_NATURALEZA = as.factor(COLE_NATURALEZA),
    COLE_CALENDARIO = as.factor(COLE_CALENDARIO)
  )

# Ver estructura final
glimpse(datos2)
## Rows: 546,212
## Columns: 12
## $ ESTU_GENERO              <fct> M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, …
## $ ESTU_TIENEETNIA          <fct> No, No, No, Si, No, No, Si, No, No, No, No, N…
## $ ESTU_DEPTO_RESIDE        <fct> MAGDALENA, BOGOTÁ, BOLIVAR, BOGOTÁ, BOGOTÁ…
## $ FAMI_ESTRATOVIVIENDA     <fct> Estrato 3, Estrato 3, Estrato 1, Estrato 3, E…
## $ COLE_NATURALEZA          <fct> OFICIAL, NO OFICIAL, OFICIAL, OFICIAL, OFICIA…
## $ COLE_CALENDARIO          <fct> A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, …
## $ PUNT_LECTURA_CRITICA     <dbl> 47, 60, 66, 62, 63, 49, 76, 57, 62, 68, 42, 3…
## $ PUNT_MATEMATICAS         <dbl> 48, 65, 57, 54, 57, 29, 70, 65, 62, 66, 40, 3…
## $ PUNT_C_NATURALES         <dbl> 37, 54, 41, 61, 55, 41, 70, 63, 66, 63, 28, 4…
## $ PUNT_SOCIALES_CIUDADANAS <dbl> 30, 59, 74, 73, 57, 41, 68, 66, 39, 77, 39, 2…
## $ PUNT_INGLES              <dbl> 54, 63, 64, 53, 52, 35, 72, 60, 63, 51, 38, 2…
## $ PUNT_GLOBAL              <dbl> 208, 299, 299, 309, 288, 198, 355, 313, 288, …
colSums(is.na(datos2))
##              ESTU_GENERO          ESTU_TIENEETNIA        ESTU_DEPTO_RESIDE 
##                        0                        0                      377 
##     FAMI_ESTRATOVIVIENDA          COLE_NATURALEZA          COLE_CALENDARIO 
##                       26                        0                        0 
##     PUNT_LECTURA_CRITICA         PUNT_MATEMATICAS         PUNT_C_NATURALES 
##                        0                        0                        0 
## PUNT_SOCIALES_CIUDADANAS              PUNT_INGLES              PUNT_GLOBAL 
##                        0                       19                        0
datos2 <- na.omit(datos2)
nrow(datos2)
## [1] 545816
# Modelo de regresión múltiple
modelo <- lm(
  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,
  data = datos2
)

summary(modelo)
## 
## Call:
## lm(formula = 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, data = datos2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.47461 -0.23210  0.00011  0.23238  0.50090 
## 
## Coefficients:
##                                    Estimate Std. Error   t value Pr(>|t|)    
## (Intercept)                      -4.789e-02  2.842e-02    -1.685   0.0920 .  
## ESTU_GENEROF                      3.626e-02  2.650e-02     1.369   0.1712    
## ESTU_GENEROM                      3.599e-02  2.650e-02     1.358   0.1744    
## ESTU_TIENEETNIASi                -2.315e-03  1.691e-03    -1.369   0.1709    
## ESTU_DEPTO_RESIDEANTIOQUIA        1.428e-02  1.010e-02     1.413   0.1575    
## ESTU_DEPTO_RESIDEARAUCA           1.214e-02  1.121e-02     1.083   0.2786    
## ESTU_DEPTO_RESIDEATLANTICO        1.580e-02  1.017e-02     1.553   0.1203    
## ESTU_DEPTO_RESIDEBOGOTÃ\u0081     1.589e-02  1.011e-02     1.572   0.1159    
## ESTU_DEPTO_RESIDEBOLIVAR          1.352e-02  1.020e-02     1.326   0.1849    
## ESTU_DEPTO_RESIDEBOYACA           1.852e-02  1.030e-02     1.799   0.0721 .  
## ESTU_DEPTO_RESIDECALDAS           1.494e-02  1.043e-02     1.432   0.1522    
## ESTU_DEPTO_RESIDECAQUETA          1.206e-02  1.090e-02     1.106   0.2686    
## ESTU_DEPTO_RESIDECASANARE         1.572e-02  1.071e-02     1.467   0.1424    
## ESTU_DEPTO_RESIDECAUCA            1.291e-02  1.032e-02     1.252   0.2106    
## ESTU_DEPTO_RESIDECESAR            1.186e-02  1.035e-02     1.146   0.2517    
## ESTU_DEPTO_RESIDECHOCO            1.170e-02  1.085e-02     1.078   0.2809    
## ESTU_DEPTO_RESIDECORDOBA          1.322e-02  1.024e-02     1.291   0.1966    
## ESTU_DEPTO_RESIDECUNDINAMARCA     1.644e-02  1.017e-02     1.617   0.1059    
## ESTU_DEPTO_RESIDEEXTRANJERO       2.208e-03  2.683e-02     0.082   0.9344    
## ESTU_DEPTO_RESIDEGUAINIA          1.385e-02  2.024e-02     0.684   0.4938    
## ESTU_DEPTO_RESIDEGUAVIARE         2.217e-02  1.350e-02     1.642   0.1005    
## ESTU_DEPTO_RESIDEHUILA            1.920e-02  1.034e-02     1.857   0.0633 .  
## ESTU_DEPTO_RESIDELA GUAJIRA       1.601e-02  1.048e-02     1.528   0.1265    
## ESTU_DEPTO_RESIDEMAGDALENA        1.322e-02  1.029e-02     1.286   0.1986    
## ESTU_DEPTO_RESIDEMETA             1.564e-02  1.037e-02     1.507   0.1318    
## ESTU_DEPTO_RESIDENARIÑO          1.601e-02  1.027e-02     1.558   0.1191    
## ESTU_DEPTO_RESIDENORTE SANTANDER  1.404e-02  1.031e-02     1.362   0.1733    
## ESTU_DEPTO_RESIDEPUTUMAYO         1.484e-02  1.101e-02     1.348   0.1775    
## ESTU_DEPTO_RESIDEQUINDIO          1.718e-02  1.067e-02     1.609   0.1076    
## ESTU_DEPTO_RESIDERISARALDA        1.483e-02  1.043e-02     1.423   0.1548    
## ESTU_DEPTO_RESIDESAN ANDRES       9.202e-03  1.526e-02     0.603   0.5465    
## ESTU_DEPTO_RESIDESANTANDER        1.851e-02  1.021e-02     1.812   0.0699 .  
## ESTU_DEPTO_RESIDESUCRE            1.724e-02  1.040e-02     1.657   0.0974 .  
## ESTU_DEPTO_RESIDETOLIMA           1.550e-02  1.029e-02     1.506   0.1321    
## ESTU_DEPTO_RESIDEVALLE            1.568e-02  1.015e-02     1.545   0.1224    
## ESTU_DEPTO_RESIDEVAUPES          -1.655e-02  1.832e-02    -0.903   0.3663    
## ESTU_DEPTO_RESIDEVICHADA          3.195e-04  1.632e-02     0.020   0.9844    
## FAMI_ESTRATOVIVIENDAEstrato 1    -1.142e-03  1.729e-03    -0.660   0.5091    
## FAMI_ESTRATOVIVIENDAEstrato 2     1.797e-04  1.715e-03     0.105   0.9166    
## FAMI_ESTRATOVIVIENDAEstrato 3    -2.550e-04  1.831e-03    -0.139   0.8892    
## FAMI_ESTRATOVIVIENDAEstrato 4     3.422e-04  2.438e-03     0.140   0.8884    
## FAMI_ESTRATOVIVIENDAEstrato 5    -3.264e-03  3.614e-03    -0.903   0.3664    
## FAMI_ESTRATOVIVIENDAEstrato 6     6.143e-03  4.994e-03     1.230   0.2187    
## FAMI_ESTRATOVIVIENDASin Estrato  -2.280e-03  2.722e-03    -0.838   0.4023    
## COLE_NATURALEZAOFICIAL            5.067e-04  1.018e-03     0.498   0.6188    
## COLE_CALENDARIOB                 -3.827e-03  8.661e-03    -0.442   0.6586    
## COLE_CALENDARIOOTRO               1.135e-03  5.212e-03     0.218   0.8277    
## PUNT_LECTURA_CRITICA              1.154e+00  6.866e-05 16807.059   <2e-16 ***
## PUNT_MATEMATICAS                  1.154e+00  6.003e-05 19222.021   <2e-16 ***
## PUNT_C_NATURALES                  1.154e+00  7.202e-05 16019.809   <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS          1.154e+00  6.097e-05 18925.465   <2e-16 ***
## PUNT_INGLES                       3.846e-01  5.107e-05  7530.840   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2878 on 545764 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 3.412e+08 on 51 and 545764 DF,  p-value: < 2.2e-16
summary(modelo)          # Ver R², R² ajustado y significancia
## 
## Call:
## lm(formula = 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, data = datos2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.47461 -0.23210  0.00011  0.23238  0.50090 
## 
## Coefficients:
##                                    Estimate Std. Error   t value Pr(>|t|)    
## (Intercept)                      -4.789e-02  2.842e-02    -1.685   0.0920 .  
## ESTU_GENEROF                      3.626e-02  2.650e-02     1.369   0.1712    
## ESTU_GENEROM                      3.599e-02  2.650e-02     1.358   0.1744    
## ESTU_TIENEETNIASi                -2.315e-03  1.691e-03    -1.369   0.1709    
## ESTU_DEPTO_RESIDEANTIOQUIA        1.428e-02  1.010e-02     1.413   0.1575    
## ESTU_DEPTO_RESIDEARAUCA           1.214e-02  1.121e-02     1.083   0.2786    
## ESTU_DEPTO_RESIDEATLANTICO        1.580e-02  1.017e-02     1.553   0.1203    
## ESTU_DEPTO_RESIDEBOGOTÃ\u0081     1.589e-02  1.011e-02     1.572   0.1159    
## ESTU_DEPTO_RESIDEBOLIVAR          1.352e-02  1.020e-02     1.326   0.1849    
## ESTU_DEPTO_RESIDEBOYACA           1.852e-02  1.030e-02     1.799   0.0721 .  
## ESTU_DEPTO_RESIDECALDAS           1.494e-02  1.043e-02     1.432   0.1522    
## ESTU_DEPTO_RESIDECAQUETA          1.206e-02  1.090e-02     1.106   0.2686    
## ESTU_DEPTO_RESIDECASANARE         1.572e-02  1.071e-02     1.467   0.1424    
## ESTU_DEPTO_RESIDECAUCA            1.291e-02  1.032e-02     1.252   0.2106    
## ESTU_DEPTO_RESIDECESAR            1.186e-02  1.035e-02     1.146   0.2517    
## ESTU_DEPTO_RESIDECHOCO            1.170e-02  1.085e-02     1.078   0.2809    
## ESTU_DEPTO_RESIDECORDOBA          1.322e-02  1.024e-02     1.291   0.1966    
## ESTU_DEPTO_RESIDECUNDINAMARCA     1.644e-02  1.017e-02     1.617   0.1059    
## ESTU_DEPTO_RESIDEEXTRANJERO       2.208e-03  2.683e-02     0.082   0.9344    
## ESTU_DEPTO_RESIDEGUAINIA          1.385e-02  2.024e-02     0.684   0.4938    
## ESTU_DEPTO_RESIDEGUAVIARE         2.217e-02  1.350e-02     1.642   0.1005    
## ESTU_DEPTO_RESIDEHUILA            1.920e-02  1.034e-02     1.857   0.0633 .  
## ESTU_DEPTO_RESIDELA GUAJIRA       1.601e-02  1.048e-02     1.528   0.1265    
## ESTU_DEPTO_RESIDEMAGDALENA        1.322e-02  1.029e-02     1.286   0.1986    
## ESTU_DEPTO_RESIDEMETA             1.564e-02  1.037e-02     1.507   0.1318    
## ESTU_DEPTO_RESIDENARIÑO          1.601e-02  1.027e-02     1.558   0.1191    
## ESTU_DEPTO_RESIDENORTE SANTANDER  1.404e-02  1.031e-02     1.362   0.1733    
## ESTU_DEPTO_RESIDEPUTUMAYO         1.484e-02  1.101e-02     1.348   0.1775    
## ESTU_DEPTO_RESIDEQUINDIO          1.718e-02  1.067e-02     1.609   0.1076    
## ESTU_DEPTO_RESIDERISARALDA        1.483e-02  1.043e-02     1.423   0.1548    
## ESTU_DEPTO_RESIDESAN ANDRES       9.202e-03  1.526e-02     0.603   0.5465    
## ESTU_DEPTO_RESIDESANTANDER        1.851e-02  1.021e-02     1.812   0.0699 .  
## ESTU_DEPTO_RESIDESUCRE            1.724e-02  1.040e-02     1.657   0.0974 .  
## ESTU_DEPTO_RESIDETOLIMA           1.550e-02  1.029e-02     1.506   0.1321    
## ESTU_DEPTO_RESIDEVALLE            1.568e-02  1.015e-02     1.545   0.1224    
## ESTU_DEPTO_RESIDEVAUPES          -1.655e-02  1.832e-02    -0.903   0.3663    
## ESTU_DEPTO_RESIDEVICHADA          3.195e-04  1.632e-02     0.020   0.9844    
## FAMI_ESTRATOVIVIENDAEstrato 1    -1.142e-03  1.729e-03    -0.660   0.5091    
## FAMI_ESTRATOVIVIENDAEstrato 2     1.797e-04  1.715e-03     0.105   0.9166    
## FAMI_ESTRATOVIVIENDAEstrato 3    -2.550e-04  1.831e-03    -0.139   0.8892    
## FAMI_ESTRATOVIVIENDAEstrato 4     3.422e-04  2.438e-03     0.140   0.8884    
## FAMI_ESTRATOVIVIENDAEstrato 5    -3.264e-03  3.614e-03    -0.903   0.3664    
## FAMI_ESTRATOVIVIENDAEstrato 6     6.143e-03  4.994e-03     1.230   0.2187    
## FAMI_ESTRATOVIVIENDASin Estrato  -2.280e-03  2.722e-03    -0.838   0.4023    
## COLE_NATURALEZAOFICIAL            5.067e-04  1.018e-03     0.498   0.6188    
## COLE_CALENDARIOB                 -3.827e-03  8.661e-03    -0.442   0.6586    
## COLE_CALENDARIOOTRO               1.135e-03  5.212e-03     0.218   0.8277    
## PUNT_LECTURA_CRITICA              1.154e+00  6.866e-05 16807.059   <2e-16 ***
## PUNT_MATEMATICAS                  1.154e+00  6.003e-05 19222.021   <2e-16 ***
## PUNT_C_NATURALES                  1.154e+00  7.202e-05 16019.809   <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS          1.154e+00  6.097e-05 18925.465   <2e-16 ***
## PUNT_INGLES                       3.846e-01  5.107e-05  7530.840   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2878 on 545764 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 3.412e+08 on 51 and 545764 DF,  p-value: < 2.2e-16
anova(modelo)            # Tabla ANOVA
## Analysis of Variance Table
## 
## Response: PUNT_GLOBAL
##                              Df    Sum Sq   Mean Sq    F value    Pr(>F)    
## ESTU_GENERO                   2  10299697   5149849 6.2185e+07 < 2.2e-16 ***
## ESTU_TIENEETNIA               1  38191268  38191268 4.6117e+08 < 2.2e-16 ***
## ESTU_DEPTO_RESIDE            33  78167018   2368698 2.8602e+07 < 2.2e-16 ***
## FAMI_ESTRATOVIVIENDA          7  66329980   9475711 1.1442e+08 < 2.2e-16 ***
## COLE_NATURALEZA               1  12045943  12045943 1.4546e+08 < 2.2e-16 ***
## COLE_CALENDARIO               2   5793190   2896595 3.4977e+07 < 2.2e-16 ***
## PUNT_LECTURA_CRITICA          1 970852112 970852112 1.1723e+10 < 2.2e-16 ***
## PUNT_MATEMATICAS              1 163350217 163350217 1.9725e+09 < 2.2e-16 ***
## PUNT_C_NATURALES              1  57465677  57465677 6.9391e+08 < 2.2e-16 ***
## PUNT_SOCIALES_CIUDADANAS      1  33950016  33950016 4.0995e+08 < 2.2e-16 ***
## PUNT_INGLES                   1   4696707   4696707 5.6714e+07 < 2.2e-16 ***
## Residuals                545764     45197         0                         
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretación del modelo de regresión múltiple

1. Interpretación general del modelo

El modelo de regresión múltiple construido para predecir el Puntaje Global (PUNT_GLOBAL) presenta un ajuste extremadamente alto. Tanto el R² como el R² ajustado son prácticamente iguales a 1, lo cual indica que el modelo explica casi el 100% de la variabilidad del puntaje global.

Aunque este resultado sugiere una capacidad predictiva muy elevada, también puede ser indicio de multicolinealidad extrema o relaciones lineales perfectas entre variables, especialmente porque los puntajes por áreas (lectura, matemáticas, naturales, sociales e inglés) están altamente correlacionados con el puntaje global.

El estadístico F del modelo (3.41e+08, p < 2.2e-16) indica que, en conjunto, todas las variables predictoras aportan información significativa para explicar el puntaje global.

2. Interpretación de coeficientes

Al analizar los coeficientes del modelo, se observa lo siguiente:

Variables sociodemográficas

Variables como:

  • Género
  • Etnia
  • Departamento de residencia
  • Estrato socioeconómico
  • Naturaleza del colegio
  • Calendario escolar

presentan coeficientes muy pequeños y no son estadísticamente significativas (p > 0.05 en la mayoría de los casos).

Esto indica que su aporte directo al puntaje global es mínimo cuando en el modelo ya están incluidos los puntajes por áreas. Es decir, estas variables no explican variación adicional una vez que ya se han considerado los puntajes específicos.

Variables académicas (las más importantes)

Las variables:

  • PUNT_LECTURA_CRITICA
  • PUNT_MATEMATICAS
  • PUNT_C_NATURALES
  • PUNT_SOCIALES_CIUDADANAS
  • PUNT_INGLES

son altamente significativas (p < 2e-16) y presentan coeficientes alrededor de 1.154, excepto inglés, que presenta un coeficiente de 0.3846.

Esto significa:

  • Por cada aumento de 1 punto en cualquiera de los puntajes principales (lectura, matemáticas, naturales, sociales), el puntaje global aumenta aproximadamente 1.154 puntos, manteniendo las demás variables constantes.
  • En el caso de inglés, cada punto adicional aumenta el puntaje global en 0.385 puntos.

Estos resultados son lógicos porque el puntaje global es una combinación lineal de los puntajes individuales, y por eso estas variables tienen el mayor peso en la predicción.

3. Interpretación de la tabla ANOVA

La tabla ANOVA confirma que las variables con mayor contribución al modelo son:

  • PUNT_LECTURA_CRITICA
  • PUNT_MATEMATICAS
  • PUNT_C_NATURALES
  • PUNT_SOCIALES_CIUDADANAS
  • PUNT_INGLES

Cada una de estas variables presenta un valor F extremadamente alto (entre 5.67×10⁷ y 1.17×10¹⁰), lo que indica que aportan una cantidad enorme de variabilidad explicada al modelo.

Por otro lado, las variables sociodemográficas sí contribuyen, pero en una proporción muy pequeña comparada con los puntajes por áreas.

4. Conclusión general

  • El modelo predice el puntaje global casi perfectamente debido a que los puntajes por áreas son sus componentes directos.
  • Las variables sociodemográficas y del colegio aportan muy poca explicación adicional.
  • El modelo es estadísticamente significativo en su conjunto (p < 2.2e-16).
  • El R² ≈ 1 debe interpretarse con precaución, ya que indica casi perfección matemática, posiblemente debido a que el puntaje global es un promedio o combinación lineal de los mismos puntajes incluidos en el modelo.
# pega aquí el código anterior

# Histograma de residuos
hist(residuals(modelo), 
     main = "Histograma de residuos", 
     xlab = "Residuos", 
     col = "lightblue")

# Q-Q plot
qqnorm(residuals(modelo))
qqline(residuals(modelo), col = "red")

# Gráfico de residuos vs valores ajustados
plot(fitted(modelo), residuals(modelo),
     xlab = "Valores ajustados", 
     ylab = "Residuos", 
     main = "Residuos vs valores ajustados")
abline(h = 0, col = "red")

# Multicolinealidad
library(car)
## Cargando paquete requerido: carData
## 
## Adjuntando el paquete: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
## The following object is masked from 'package:purrr':
## 
##     some
vif(modelo)
##                              GVIF Df GVIF^(1/(2*Df))
## ESTU_GENERO              1.050281  2        1.012340
## ESTU_TIENEETNIA          1.271679  1        1.127688
## ESTU_DEPTO_RESIDE        1.650540 33        1.007621
## FAMI_ESTRATOVIVIENDA     1.415928  7        1.025153
## COLE_NATURALEZA          1.240646  1        1.113843
## COLE_CALENDARIO          1.060890  2        1.014887
## PUNT_LECTURA_CRITICA     3.449775  1        1.857357
## PUNT_MATEMATICAS         3.418095  1        1.848809
## PUNT_C_NATURALES         3.960267  1        1.990042
## PUNT_SOCIALES_CIUDADANAS 3.610970  1        1.900255
## PUNT_INGLES              2.711197  1        1.646571
# Durbin-Watson test
library(lmtest)
## Cargando paquete requerido: zoo
## 
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.9998, p-value = 0.4745
## alternative hypothesis: true autocorrelation is greater than 0

1. Análisis de los residuos

a) Histograma de residuos

  • Qué evalúa: Forma de la distribución de los residuos.
  • Observación: El histograma se ve simétrico alrededor de cero.
  • Interpretación: La suposición de normalidad de los errores se cumple aproximadamente, aunque la discreción en los intervalos puede deberse a la gran cantidad de datos y a variables categóricas que generan agrupaciones de residuos.

b) Q-Q plot

  • Qué evalúa: Comparación de los cuantiles de los residuos con los cuantiles de una distribución normal.
  • Observación: Los puntos se alinean aproximadamente con la línea roja central, con ligeras desviaciones en los extremos.
  • Interpretación: Los residuos son aproximadamente normales, suficiente para la mayoría de inferencias en regresión lineal múltiple.

c) Residuos vs valores ajustados

  • Qué evalúa: Linealidad y homocedasticidad.
  • Observación: Las “líneas de burbujas” son causadas por variables categóricas; no se observa un patrón sistemático.
  • Interpretación: La suposición de homocedasticidad y linealidad se cumple de manera aceptable.

d) Durbin-Watson

  • Valor: DW = 1.9998
  • Interpretación: Valor cercano a 2 indica residuos independientes, sin autocorrelación. Esto valida otra suposición importante del modelo.

2. Multicolinealidad (VIF)

  • Todos los GVIF^(1/(2*Df)) < 2, incluso las variables altamente correlacionadas como los puntajes académicos.
  • Interpretación: No hay multicolinealidad preocupante. Se pueden mantener todas las variables candidatas en el modelo.

3. Análisis general de los residuos

Supuesto Evaluación Comentario
Normalidad Histograma y Q-Q plot Aproximadamente normal. Desviaciones leves en extremos, aceptable.
Linealidad Residuos vs valores ajustados No hay patrón sistemático. Cumple.
Homocedasticidad Residuos vs valores ajustados Varianza constante aparente. Cumple.
Independencia Durbin-Watson DW ~ 2, residuos independientes. Cumple.
Multicolinealidad VIF Valores < 2, no preocupante.

4. Conclusión de los residuos

  • El modelo cumple con las principales suposiciones de regresión múltiple.
  • Las “líneas de burbujas” no indican problemas graves, sino la naturaleza categórica de algunas variables.
  • Por tanto, los resultados del modelo (coeficientes, significancia, predicciones) son confiables y se puede avanzar a la interpretación de los coeficientes y su impacto en el Puntaje Global.
# Selección del mejor modelo usando stepwise (AIC)
modelo_step <- step(modelo, direction = "both", trace = FALSE)

# Resumen del modelo final
summary(modelo_step)
## 
## Call:
## lm(formula = PUNT_GLOBAL ~ ESTU_TIENEETNIA + PUNT_LECTURA_CRITICA + 
##     PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + 
##     PUNT_INGLES, data = datos2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.46735 -0.23141  0.00014  0.23169  0.46933 
## 
## Coefficients:
##                            Estimate Std. Error   t value Pr(>|t|)    
## (Intercept)               2.210e-03  2.098e-03     1.053    0.292    
## ESTU_TIENEETNIASi        -3.665e-03  1.521e-03    -2.410    0.016 *  
## PUNT_LECTURA_CRITICA      1.154e+00  6.832e-05 16889.507   <2e-16 ***
## PUNT_MATEMATICAS          1.154e+00  5.888e-05 19597.791   <2e-16 ***
## PUNT_C_NATURALES          1.154e+00  7.137e-05 16163.752   <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS  1.154e+00  6.075e-05 18993.922   <2e-16 ***
## PUNT_INGLES               3.846e-01  4.891e-05  7864.846   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2878 on 545809 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 2.9e+09 on 6 and 545809 DF,  p-value: < 2.2e-16
# Comparar AIC del modelo completo vs final
AIC(modelo, modelo_step)
##             df      AIC
## modelo      53 189302.3
## modelo_step  8 189247.7

Interpretación:

  • El modelo final (modelo_step) elimina las variables que no aportan significativamente a la predicción del Puntaje Global.

  • Generalmente, las variables sociodemográficas y del colegio que no eran significativas (p > 0.05) quedan fuera del modelo.

  • Las variables académicas (PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, PUNT_C_NATURALES, PUNT_SOCIALES_CIUDADANAS, PUNT_INGLES) permanecen, ya que son las que realmente explican la variación del puntaje global.

  • Comparando métricas:

    • R² y R² ajustado se mantienen muy altos, indicando que la capacidad explicativa del modelo sigue siendo excelente.
    • AIC del modelo final suele ser menor que el del modelo completo, lo que indica un modelo más parsimonioso y eficiente.
  • Esta interpretación permite identificar cuáles variables son realmente útiles para predecir el Puntaje Global y cuáles aportan información redundante.

Conclusiones Finales:

  1. El Puntaje Global está fuertemente determinado por los puntajes individuales en las diferentes áreas académicas.
  2. Las variables sociodemográficas y del colegio tienen impacto mínimo cuando se incluyen los puntajes por áreas en el modelo.
  3. El modelo final cumple con los supuestos de regresión múltiple: normalidad de residuos, homocedasticidad, independencia y ausencia de multicolinealidad preocupante.
  4. La selección del modelo optimizado mediante stepwise asegura un modelo parsimonioso, evitando variables que no aportan información significativa.