SE REALIZÓ UN ANÁLISIS SOBRE LOS RESULTADOS OBTENIDOS EN LA PRUEBA SABER 11 DEL 2019, EN LA ISLA SAN ANDRÉS, COLOMBIA, PARA UNA MUESTRA DE 200 DATOS, SE TUVIERON EN CUENTA LAS VARIABLES, GÉNERO, SI TIENE ETNIA, DEPARTAMENTO DE RESIDENCIA, ESTRATO DE LA VIVIENDA, TIPO DE COLEGIO, CALENDARIO, PUNTAJE EN LECTURA CRÍTICA, PUNTAJE EN MATEMÁTICAS, PUNTAJE EN CIENCIAS NATURALES, PUNTAJE EN SOCIALES Y CIUDADANAS, PUNTAJE EN INGLÉS.
#CÓDIGO PARA LLAMAR LA BASE DE DATOS DESDE EXCEL
knitr::opts_chunk$set(echo = TRUE)
library(readxl)
excel_estadistica <- read_excel("excel estadistica.xlsx",
col_types = c("text", "date", "text",
"text", "numeric", "text", "text",
"text", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "text", "numeric",
"numeric"))
MODELO DE REGRESIÓN
En este trabajo usamos como variable dependiente el puntaje global de los estudiantes PUNT_GLOBAL y como variables independientes los puntajes de las áreas de lectura crítica PUNT_LECTURA_CRITICA, matemáticas PUNT_MATEMATICAS, ciencias naturales PUNT_C_NATURALES, ciencias sociales y ciudadanas PUNT_SOCIALES_CIUDADANAS e inglés PUNT_INGLES. A continuación, mostramos el código en R que se utilizó para ajustar un modelo de regresión lineal múltiple y analizar su desempeño.
library(dplyr)
library(corrplot)
Datos<- excel_estadistica %>% select_if(is.numeric)
matriz_correlacion= cor(Datos, use="complete.obs")
corrplot(matriz_correlacion, method = "circle", type = "full",
col = colorRampPalette(c("purple", "white", "pink"))(100),
tl.col = "black", tl.cex = 0.5,
addCoef.col = "black", # Agregar coeficientes de correlación
number.cex = 0.2) # Ajustar el tamaño de los coeficientes
regresion <- lm(PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES, data =Datos)
summary(regresion)
##
## Call:
## lm(formula = PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS +
## PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES,
## data = Datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.56136 -0.24748 0.02379 0.23898 0.53612
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.016527 0.117039 -0.141 0.888
## PUNT_LECTURA_CRITICA 1.149714 0.003462 332.098 <2e-16 ***
## PUNT_MATEMATICAS 1.158359 0.002961 391.188 <2e-16 ***
## PUNT_C_NATURALES 1.158426 0.003487 332.175 <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS 1.148553 0.002757 416.581 <2e-16 ***
## PUNT_INGLES 0.385777 0.001969 195.948 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2918 on 193 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 1.177e+06 on 5 and 193 DF, p-value: < 2.2e-16
Análisis del Step
En esta sección llevamos a cabo el análisis de significancia de las variables independientes utilizando un test de hipótesis. La hipótesis nula establece que el coeficiente de la variable independiente es igual a cero, mientras que la hipótesis alternativa plantea que el coeficiente es diferente de cero. A continuación, se muestra el código en R utilizado para realizar el test de hipótesis y evaluar la significancia de las variables independientes.
datos_numericos=step(regresion, direction="both", trace=2)
## Start: AIC=-484.24
## PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES +
## PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
##
## Df Sum of Sq RSS AIC
## <none> 16.4 -484.24
## - PUNT_INGLES 1 3270.3 3286.7 568.06
## - PUNT_LECTURA_CRITICA 1 9393.7 9410.2 777.39
## - PUNT_C_NATURALES 1 9398.1 9414.5 777.48
## - PUNT_MATEMATICAS 1 13034.0 13050.4 842.47
## - PUNT_SOCIALES_CIUDADANAS 1 14781.1 14797.5 867.47
plot(regresion$fitted.values, datos_numericos$PUNT_GLOBAL,
main = "Gráfico de dispersión: Predicciones vs Valores Reales",
xlab = "Predicciones del Modelo",
ylab = "Valores Reales de PUNT_GLOBAL",
col = "blue", pch = 19)
abline(0, 1, col = "lightgreen", lwd = 2) # Línea de igualdad
El gráfico evidencia que el modelo de regresión lineal no predice adecuadamente PUNT_GLOBAL, ya que las predicciones están dispersas y no se ajustan bien a los valores reales. Esto sugiere que el modelo tiene un bajo rendimiento y que las variables incluidas no explican completamente la variabilidad de la variable dependiente, por lo que es necesario ajustar o reconsiderar el enfoque del análisis.
qqnorm(resid(regresion),
main = "QQ-Plot: Residuos del Modelo",
col = "lightblue", pch = 19)
qqline(resid(regresion), col = "purple", lwd = 2)
El gráfico QQ-Plot muestra que los residuos del modelo parecen seguir una distribución normal, ya que la mayoría de los puntos están alineados con la línea diagonal. Sin embargo, en los extremos (colas) hay algunas desviaciones, lo que podría indicar que hay valores atípicos o una ligera falta de normalidad en esos datos. En general, parece que el modelo cumple con el supuesto de normalidad de los residuos, aunque sería bueno hacer un análisis extra para ver si esas desviaciones afectan mucho.