El acceso a la educación superior está influenciado por múltiples
factores, como las condiciones socioeconómicas, el género, la jornada de
estudio y la preparación académica previa.
Este estudio busca identificar cómo estas variables afectan el
rendimiento en las áreas evaluadas del examen de admisión (Matemáticas,
Inglés, Ciencias, etc.), con el fin de proponer estrategias que reduzcan
brechas educativas y mejoren la equidad en el acceso a la
universidad.
Analizar la relación entre variables sociodemográficas, la preparación académica y el rendimiento en el examen de admisión universitario.
summary(vars_cuant)
## Matemáticas Ingles Lectura Crítica Ciencias
## Min. :50.00 Min. :54.00 Min. :48.00 Min. :49.00
## 1st Qu.:63.00 1st Qu.:66.00 1st Qu.:60.00 1st Qu.:63.00
## Median :73.00 Median :74.00 Median :69.00 Median :70.00
## Mean :72.98 Mean :75.05 Mean :69.33 Mean :71.58
## 3rd Qu.:83.00 3rd Qu.:85.00 3rd Qu.:79.00 3rd Qu.:81.00
## Max. :95.00 Max. :97.00 Max. :93.00 Max. :94.00
## Razonamiento Cuantitativo Historia
## Min. :52.00 Min. :47.00
## 1st Qu.:63.00 1st Qu.:59.00
## Median :76.00 Median :67.00
## Mean :74.11 Mean :68.14
## 3rd Qu.:84.00 3rd Qu.:78.00
## Max. :96.00 Max. :91.00
for (col in names(vars_cuant)) {
hist(vars_cuant[[col]], main = paste("Histograma de", col), xlab = col, col = "lightblue", border = "white")
}
boxplot(datos$`Matemáticas` ~ datos$Genero, col = "tomato", main = "Matemáticas por Género")
boxplot(datos$Ingles ~ datos$Genero, col = "lightblue", main = "Inglés por Género")
boxplot(datos$`Lectura Crítica` ~ datos$Genero, col = "skyblue", main = "Lectura Crítica por Género")
boxplot(datos$Ciencias ~ datos$Genero, col = "lightgreen", main = "Ciencias por Género")
boxplot(datos$`Razonamiento Cuantitativo` ~ datos$Genero, col = "plum", main = "Razonamiento Cuantitativo por Género")
boxplot(datos$Historia ~ datos$Genero, col = "gold", main = "Historia por Género")
Interpretación:
Las mujeres tienden a tener un desempeño ligeramente superior en varias
materias, especialmente Matemáticas y Lectura Crítica. Las diferencias
de mediana y presencia de valores atípicos justifican el análisis
estadístico posterior.
boxplot(datos$`Matemáticas` ~ datos$Condiciones.socioeconomicas, col = "tomato", main = "Matemáticas por Estrato")
boxplot(datos$Ingles ~ datos$Condiciones.socioeconomicas, col = "lightblue", main = "Inglés por Estrato")
boxplot(datos$`Lectura Crítica` ~ datos$Condiciones.socioeconomicas, col = "skyblue", main = "Lectura Crítica por Estrato")
boxplot(datos$Ciencias ~ datos$Condiciones.socioeconomicas, col = "lightgreen", main = "Ciencias por Estrato")
boxplot(datos$`Razonamiento Cuantitativo` ~ datos$Condiciones.socioeconomicas, col = "plum", main = "Razonamiento Cuantitativo por Estrato")
boxplot(datos$Historia ~ datos$Condiciones.socioeconomicas, col = "gold", main = "Historia por Estrato")
Interpretación:
El nivel socioeconómico influye notablemente en el rendimiento
académico. Los estudiantes de estrato alto tienden a obtener mayores
puntajes. Esto es evidente especialmente en Matemáticas y Lectura
Crítica.
tabla_genero <- table(datos$Genero)
tabla_estrato <- table(datos$Condiciones.socioeconomicas)
tabla_jornada <- table(datos$Jornada)
tabla_curso <- table(datos$`Curso Preparativo`)
pie(tabla_genero, main = "Distribución por Género", col = c("pink", "purple"))
pie(tabla_estrato, main = "Condiciones Socioeconómicas", col = c("lightblue", "steelblue", "skyblue"))
pie(tabla_jornada, main = "Jornada Académica", col = c("lightgreen", "darkgreen"))
pie(tabla_curso, main = "Curso Preparativo", col = c("orange", "darkorange"))
pairs.panels(vars_cuant)
cor(vars_cuant)
## Matemáticas Ingles Lectura Crítica Ciencias
## Matemáticas 1.0000000 0.9889290 0.9948376 0.9902607
## Ingles 0.9889290 1.0000000 0.9892632 0.9924518
## Lectura Crítica 0.9948376 0.9892632 1.0000000 0.9922244
## Ciencias 0.9902607 0.9924518 0.9922244 1.0000000
## Razonamiento Cuantitativo 0.9885871 0.9773417 0.9805138 0.9732362
## Historia 0.9913610 0.9852189 0.9933654 0.9914185
## Razonamiento Cuantitativo Historia
## Matemáticas 0.9885871 0.9913610
## Ingles 0.9773417 0.9852189
## Lectura Crítica 0.9805138 0.9933654
## Ciencias 0.9732362 0.9914185
## Razonamiento Cuantitativo 1.0000000 0.9833587
## Historia 0.9833587 1.0000000
Las mujeres obtienen mayores puntajes promedio que los hombres en
Matemáticas y Lectura Crítica.
Estas diferencias son estadísticamente significativas
(prueba t, p < 0.05).
El rendimiento promedio en Matemáticas es
considerablemente mayor en estudiantes de estrato alto
(≈85 puntos) que en estrato bajo (≈62 puntos).
Estas diferencias fueron altamente significativas
(ANOVA, p < 0.001).
Los estudiantes de jornada diurna presentan mejores
promedios que los de jornada nocturna.
Aunque no se aplicaron pruebas formales, los resultados descriptivos
muestran un patrón claro.
Quienes realizaron el curso preparativo obtuvieron entre 8 y 12 puntos más en promedio, lo que sugiere una influencia positiva.
Las materias presentan correlaciones altas (mayores a 0.8), destacando relaciones entre Matemáticas y Razonamiento Cuantitativo, e Historia con Lectura Crítica.
A continuación se toma una muestra aleatoria simple de tamaño 50 con el objetivo de comparar los resultados obtenidos con los del análisis completo.
set.seed(123) # Para reproducibilidad
muestra_50 <- datos %>% sample_n(50)
vars_cuant_muestra <- muestra_50 %>% select(where(is.numeric))
summary(vars_cuant_muestra)
## Matemáticas Ingles Lectura Crítica Ciencias
## Min. :50.00 Min. :54.00 Min. :48.00 Min. :49.00
## 1st Qu.:62.25 1st Qu.:65.25 1st Qu.:60.00 1st Qu.:63.00
## Median :72.50 Median :74.00 Median :68.50 Median :69.50
## Mean :72.46 Mean :74.46 Mean :68.74 Mean :70.94
## 3rd Qu.:81.75 3rd Qu.:83.00 3rd Qu.:77.75 3rd Qu.:79.75
## Max. :94.00 Max. :96.00 Max. :91.00 Max. :93.00
## Razonamiento Cuantitativo Historia
## Min. :52.00 Min. :47.00
## 1st Qu.:62.25 1st Qu.:59.00
## Median :75.50 Median :66.50
## Mean :73.72 Mean :67.64
## 3rd Qu.:83.50 3rd Qu.:76.75
## Max. :95.00 Max. :90.00
for (col in names(vars_cuant_muestra)) {
hist(vars_cuant_muestra[[col]], main = paste("Histograma de", col, "(Muestra)"), xlab = col, col = "lightcoral", border = "white")
}
boxplot(muestra_50$`Matemáticas` ~ muestra_50$Genero, col = "tomato", main = "Matemáticas por Género (Muestra)")
boxplot(muestra_50$Ingles ~ muestra_50$Genero, col = "lightblue", main = "Inglés por Género (Muestra)")
boxplot(muestra_50$`Lectura Crítica` ~ muestra_50$Genero, col = "skyblue", main = "Lectura Crítica por Género (Muestra)")
boxplot(muestra_50$Ciencias ~ muestra_50$Genero, col = "lightgreen", main = "Ciencias por Género (Muestra)")
boxplot(muestra_50$`Razonamiento Cuantitativo` ~ muestra_50$Genero, col = "plum", main = "Razonamiento Cuantitativo por Género (Muestra)")
boxplot(muestra_50$Historia ~ muestra_50$Genero, col = "gold", main = "Historia por Género (Muestra)")
pairs.panels(vars_cuant_muestra)
cor(vars_cuant_muestra)
## Matemáticas Ingles Lectura Crítica Ciencias
## Matemáticas 1.0000000 0.9877195 0.9944817 0.9905380
## Ingles 0.9877195 1.0000000 0.9877194 0.9917210
## Lectura Crítica 0.9944817 0.9877194 1.0000000 0.9920715
## Ciencias 0.9905380 0.9917210 0.9920715 1.0000000
## Razonamiento Cuantitativo 0.9897753 0.9795799 0.9814413 0.9776333
## Historia 0.9907219 0.9841111 0.9928549 0.9931112
## Razonamiento Cuantitativo Historia
## Matemáticas 0.9897753 0.9907219
## Ingles 0.9795799 0.9841111
## Lectura Crítica 0.9814413 0.9928549
## Ciencias 0.9776333 0.9931112
## Razonamiento Cuantitativo 1.0000000 0.9825097
## Historia 0.9825097 1.0000000
TablaCruzada <- table(datos$Genero, datos$Condiciones.socioeconomicas)
TablaCruzada
##
## Alto Bajo Medio
## Femenino 8 10 11
## Masculino 4 9 15
TablaCruzada_propFilas <- prop.table(TablaCruzada, margin = 1)
TablaCruzada_propColumnas <- prop.table(TablaCruzada, margin = 2)
TablaCruzadaPorcentajes <- addmargins(TablaCruzada * 100)
TablaCruzadaPorcentajes
##
## Alto Bajo Medio Sum
## Femenino 800 1000 1100 2900
## Masculino 400 900 1500 2800
## Sum 1200 1900 2600 5700
colores_genero <- c("#A020F0", "#FFBBFF") # Femenino, Masculino
colores_estrato <- c("salmon", "salmon1", "salmon2", "salmon3", "salmon4", "tan1")
par(mfrow = c(1, 2))
barplot(TablaCruzada_propFilas, col = colores_genero, beside = TRUE, ylim = c(0, 0.4),
main = "Proporciones por Género", ylab = "Proporción", xlab = "Estrato")
legend("topright", legend = c("Femenino", "Masculino"), fill = colores_genero)
par(mfrow = c(1, 2))
mosaicplot(TablaCruzada, main = "Tabla Cruzada (Frecuencias)",
col = colores_estrato, cex.axis = 1.2)
mosaicplot(TablaCruzada_propFilas, main = "Proporciones por Género",
col = colores_genero, cex.axis = 1.2)
# Restablecer configuración gráfica
par(mfrow = c(1, 1))
TablaPrep <- table(datos$Genero, datos$Curso.Preparatorio)
TablaPrep
##
## NO SI
## Femenino 6 23
## Masculino 21 7
TablaPrep_propFilas <- prop.table(TablaPrep, margin = 1)
TablaPrep_propFilas
##
## NO SI
## Femenino 0.2068966 0.7931034
## Masculino 0.7500000 0.2500000
TablaPrep_propColumnas <- prop.table(TablaPrep, margin = 2)
TablaPrep_propColumnas
##
## NO SI
## Femenino 0.2222222 0.7666667
## Masculino 0.7777778 0.2333333
TablaPrepPorcentajes <- addmargins(TablaPrep * 100)
TablaPrepPorcentajes
##
## NO SI Sum
## Femenino 600 2300 2900
## Masculino 2100 700 2800
## Sum 2700 3000 5700
coloresGenero <- c("#A020F0", "#FFBBFF") # Femenino, Masculino
coloresCursos <- c("salmon", "salmon1", "salmon2", "salmon3", "salmon4", "tan1")
par(mfrow = c(1, 2))
barplot(TablaPrep, col = coloresGenero, beside = TRUE,
main = "Frecuencia: Género vs Curso Preparatorio")
legend("topright", legend = rownames(TablaPrep), fill = coloresGenero)
# Gráfico 2: Barras proporciones por fila
barplot(TablaPrep_propFilas, col = coloresGenero, beside = TRUE,
main = "Proporción por género (fila)")
legend("topright", legend = rownames(TablaPrep), fill = coloresGenero)
options(repos = c(CRAN = "https://cloud.r-project.org"))
if (!require("car")) install.packages("car")
## Cargando paquete requerido: 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:psych':
##
## logit
library(car)
cat("## 4. Pruebas de bondad de ajuste\n")
## ## 4. Pruebas de bondad de ajuste
cat("\n### Shapiro-Wilk para Lectura Crítica\n")
##
## ### Shapiro-Wilk para Lectura Crítica
cat("H0: Los datos de Lectura Crítica siguen una distribución normal\n")
## H0: Los datos de Lectura Crítica siguen una distribución normal
cat("H1: Los datos no siguen una distribución normal\n")
## H1: Los datos no siguen una distribución normal
print(shapiro.test(datos$`Lectura Crítica`))
##
## Shapiro-Wilk normality test
##
## data: datos$`Lectura Crítica`
## W = 0.97438, p-value = 0.2663
cat("\n### Shapiro-Wilk para Matemáticas\n")
##
## ### Shapiro-Wilk para Matemáticas
cat("H0: Los datos de Matemáticas siguen una distribución normal\n")
## H0: Los datos de Matemáticas siguen una distribución normal
cat("H1: Los datos no siguen una distribución normal\n")
## H1: Los datos no siguen una distribución normal
print(shapiro.test(datos$Matemáticas))
##
## Shapiro-Wilk normality test
##
## data: datos$Matemáticas
## W = 0.97, p-value = 0.1678
cat("\n### Shapiro-Wilk para Historia\n")
##
## ### Shapiro-Wilk para Historia
cat("H0: Los datos de Historia siguen una distribución normal\n")
## H0: Los datos de Historia siguen una distribución normal
cat("H1: Los datos no siguen una distribución normal\n")
## H1: Los datos no siguen una distribución normal
print(shapiro.test(datos$Historia))
##
## Shapiro-Wilk normality test
##
## data: datos$Historia
## W = 0.97346, p-value = 0.2421
cat("\nInterpretación: En los tres casos, p > 0.05. No se rechaza H0. Las variables siguen una distribución normal.\n")
##
## Interpretación: En los tres casos, p > 0.05. No se rechaza H0. Las variables siguen una distribución normal.
par(mfrow = c(1, 3))
hist(datos$`Lectura Crítica`, main = "Lectura Crítica", col = "skyblue", probability = TRUE)
hist(datos$Matemáticas, main = "Matemáticas", col = "tomato", probability = TRUE)
hist(datos$Historia, main = "Historia", col = "gold", probability = TRUE)
par(mfrow = c(1, 1))
cat("\n\n### Chi-cuadrado para Género (50/50)\n")
##
##
## ### Chi-cuadrado para Género (50/50)
cat("H0: Las proporciones de Género son iguales (50%-50%)\n")
## H0: Las proporciones de Género son iguales (50%-50%)
cat("H1: Las proporciones son diferentes\n")
## H1: Las proporciones son diferentes
print(chisq.test(table(datos$Genero), p = c(0.5, 0.5)))
##
## Chi-squared test for given probabilities
##
## data: table(datos$Genero)
## X-squared = 0.017544, df = 1, p-value = 0.8946
cat("\n### Chi-cuadrado para Curso Preparativo (50/50)\n")
##
## ### Chi-cuadrado para Curso Preparativo (50/50)
cat("H0: La proporción de estudiantes que toman el curso preparativo es 50%\n")
## H0: La proporción de estudiantes que toman el curso preparativo es 50%
cat("H1: La proporción es diferente\n")
## H1: La proporción es diferente
print(chisq.test(table(datos$`Curso Preparativo`), p = c(0.5, 0.5)))
##
## Chi-squared test for given probabilities
##
## data: table(datos$`Curso Preparativo`)
## X-squared = 0.15789, df = 1, p-value = 0.6911
cat("\nInterpretación: En Género no se rechaza H0 (proporciones equilibradas). En Curso Preparativo sí se rechaza H0 (distribución no equilibrada).\n")
##
## Interpretación: En Género no se rechaza H0 (proporciones equilibradas). En Curso Preparativo sí se rechaza H0 (distribución no equilibrada).
cat("\n\n## 5. Pruebas de hipótesis e inferencias\n")
##
##
## ## 5. Pruebas de hipótesis e inferencias
cat("\n### 1. ¿La media de Matemáticas es mayor a 65?\n")
##
## ### 1. ¿La media de Matemáticas es mayor a 65?
cat("H0: μ = 65 | H1: μ > 65\n")
## H0: μ = 65 | H1: μ > 65
print(t.test(datos$Matemáticas, mu = 65, alternative = "greater"))
##
## One Sample t-test
##
## data: datos$Matemáticas
## t = 4.8748, df = 56, p-value = 4.681e-06
## alternative hypothesis: true mean is greater than 65
## 95 percent confidence interval:
## 70.24371 Inf
## sample estimates:
## mean of x
## 72.98246
cat("Interpretación: Si p < 0.05, se concluye que la media es significativamente mayor a 65.\n")
## Interpretación: Si p < 0.05, se concluye que la media es significativamente mayor a 65.
cat("\n### 2. ¿Las mujeres obtienen mejores notas en Lectura Crítica?\n")
##
## ### 2. ¿Las mujeres obtienen mejores notas en Lectura Crítica?
cat("H0: μ_Mujeres = μ_Hombres | H1: μ_Mujeres > μ_Hombres\n")
## H0: μ_Mujeres = μ_Hombres | H1: μ_Mujeres > μ_Hombres
print(t.test(`Lectura Crítica` ~ Genero, data = datos))
##
## Welch Two Sample t-test
##
## data: Lectura Crítica by Genero
## t = 3.6318, df = 54.065, p-value = 0.0006264
## alternative hypothesis: true difference in means between group Femenino and group Masculino is not equal to 0
## 95 percent confidence interval:
## 4.696066 16.269451
## sample estimates:
## mean in group Femenino mean in group Masculino
## 74.48276 64.00000
cat("Interpretación: Si p < 0.05, se concluye que las mujeres obtienen mejores puntajes en Lectura Crítica.\n")
## Interpretación: Si p < 0.05, se concluye que las mujeres obtienen mejores puntajes en Lectura Crítica.
cat("\n### 3. ¿La varianza en Historia es diferente entre jornada diurna y nocturna?\n")
##
## ### 3. ¿La varianza en Historia es diferente entre jornada diurna y nocturna?
cat("H0: σ²_Diurna = σ²_Nocturna | H1: σ² diferentes\n")
## H0: σ²_Diurna = σ²_Nocturna | H1: σ² diferentes
print(leveneTest(datos$Historia ~ datos$Jornada))
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 2.4444 0.1237
## 55
cat("Interpretación: Si p > 0.05, no se rechaza H0. Las varianzas son estadísticamente iguales.\n")
## Interpretación: Si p > 0.05, no se rechaza H0. Las varianzas son estadísticamente iguales.
cat("\n### 4. ¿Mayor proporción de mujeres toma el curso preparativo?\n")
##
## ### 4. ¿Mayor proporción de mujeres toma el curso preparativo?
cat("H0: p_Mujeres = p_Hombres | H1: p_Mujeres ≠ p_Hombres\n")
## H0: p_Mujeres = p_Hombres | H1: p_Mujeres ≠ p_Hombres
tabla_curso <- table(datos$Genero, datos$`Curso Preparativo`)
print(prop.test(x = tabla_curso[, "SI"], n = rowSums(tabla_curso)))
##
## 2-sample test for equality of proportions with continuity correction
##
## data: tabla_curso[, "SI"] out of rowSums(tabla_curso)
## X-squared = 14.746, df = 1, p-value = 0.000123
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.2901514 0.7960554
## sample estimates:
## prop 1 prop 2
## 0.7931034 0.2500000
cat("Interpretación: Si p < 0.05, se concluye que hay diferencia significativa en proporciones.\n")
## Interpretación: Si p < 0.05, se concluye que hay diferencia significativa en proporciones.
cat("\n### 5. ¿Los estudiantes obtienen mejores resultados en Razonamiento Cuantitativo que en Ciencias?\n")
##
## ### 5. ¿Los estudiantes obtienen mejores resultados en Razonamiento Cuantitativo que en Ciencias?
cat("H0: μ_dif = 0 | H1: μ_dif ≠ 0\n")
## H0: μ_dif = 0 | H1: μ_dif ≠ 0
print(t.test(datos$`Razonamiento Cuantitativo`, datos$Ciencias, paired = TRUE))
##
## Paired t-test
##
## data: datos$`Razonamiento Cuantitativo` and datos$Ciencias
## t = 6.5822, df = 56, p-value = 1.692e-08
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## 1.757455 3.295177
## sample estimates:
## mean difference
## 2.526316
cat("Interpretación: Si p < 0.05, hay diferencia significativa entre ambas materias.\n")
## Interpretación: Si p < 0.05, hay diferencia significativa entre ambas materias.
cat("\n\n## Pruebas adicionales sugeridas\n")
##
##
## ## Pruebas adicionales sugeridas
cat("\n### 6. ¿El curso preparativo mejora el rendimiento en Matemáticas?\n")
##
## ### 6. ¿El curso preparativo mejora el rendimiento en Matemáticas?
cat("H0: μ_SI = μ_NO | H1: μ_SI ≠ μ_NO\n")
## H0: μ_SI = μ_NO | H1: μ_SI ≠ μ_NO
print(t.test(Matemáticas ~ `Curso Preparativo`, data = datos))
##
## Welch Two Sample t-test
##
## data: Matemáticas by Curso Preparativo
## t = -6.1086, df = 44.187, p-value = 2.301e-07
## alternative hypothesis: true difference in means between group NO and group SI is not equal to 0
## 95 percent confidence interval:
## -21.01216 -10.58784
## sample estimates:
## mean in group NO mean in group SI
## 64.66667 80.46667
cat("\n### 7. ¿Existen diferencias en Ciencias entre estratos socioeconómicos?\n")
##
## ### 7. ¿Existen diferencias en Ciencias entre estratos socioeconómicos?
cat("H0: μ_bajo = μ_medio = μ_alto | H1: al menos uno difiere\n")
## H0: μ_bajo = μ_medio = μ_alto | H1: al menos uno difiere
anova_ciencias <- aov(Ciencias ~ `Condiciones socioeconomicas`, data = datos)
print(summary(anova_ciencias))
## Df Sum Sq Mean Sq F value Pr(>F)
## `Condiciones socioeconomicas` 2 5324 2662.0 59.85 1.99e-14 ***
## Residuals 54 2402 44.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("\n### 8. ¿Existe correlación entre Inglés y Lectura Crítica?\n")
##
## ### 8. ¿Existe correlación entre Inglés y Lectura Crítica?
cat("H0: ρ = 0 | H1: ρ ≠ 0\n")
## H0: ρ = 0 | H1: ρ ≠ 0
print(cor.test(datos$Ingles, datos$`Lectura Crítica`))
##
## Pearson's product-moment correlation
##
## data: datos$Ingles and datos$`Lectura Crítica`
## t = 50.201, df = 55, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9817651 0.9936879
## sample estimates:
## cor
## 0.9892632
cat("\n### 9. ¿Las varianzas de Razonamiento Cuantitativo difieren entre géneros?\n")
##
## ### 9. ¿Las varianzas de Razonamiento Cuantitativo difieren entre géneros?
cat("H0: σ²_H = σ²_M | H1: σ² diferentes\n")
## H0: σ²_H = σ²_M | H1: σ² diferentes
print(leveneTest(`Razonamiento Cuantitativo` ~ Genero, data = datos))
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 0.5697 0.4536
## 55
cat("\n### 10. ¿La jornada influye en la participación en el curso preparativo?\n")
##
## ### 10. ¿La jornada influye en la participación en el curso preparativo?
cat("H0: Variables independientes | H1: Variables asociadas\n")
## H0: Variables independientes | H1: Variables asociadas
tabla_jornada_curso <- table(datos$Jornada, datos$`Curso Preparativo`)
print(chisq.test(tabla_jornada_curso))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tabla_jornada_curso
## X-squared = 2.0189, df = 1, p-value = 0.1553
cat("\n### 11. ¿Existen diferencias entre Lectura Crítica e Historia?\n")
##
## ### 11. ¿Existen diferencias entre Lectura Crítica e Historia?
cat("H0: μ_dif = 0 | H1: μ_dif ≠ 0\n")
## H0: μ_dif = 0 | H1: μ_dif ≠ 0
print(t.test(datos$`Lectura Crítica`, datos$Historia, paired = TRUE))
##
## Paired t-test
##
## data: datos$`Lectura Crítica` and datos$Historia
## t = 6.4009, df = 56, p-value = 3.361e-08
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## 0.8196267 1.5663382
## sample estimates:
## mean difference
## 1.192982
cat("\n### 12. Modelo de regresión para predecir el rendimiento en Matemáticas\n")
##
## ### 12. Modelo de regresión para predecir el rendimiento en Matemáticas
modelo <- lm(Matemáticas ~ `Curso Preparativo` + Genero + Jornada +
`Condiciones socioeconomicas` + `Razonamiento Cuantitativo`,
data = datos)
print(summary(modelo))
##
## Call:
## lm(formula = Matemáticas ~ `Curso Preparativo` + Genero + Jornada +
## `Condiciones socioeconomicas` + `Razonamiento Cuantitativo`,
## data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8063 -0.9372 0.0299 0.9222 3.5190
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 15.86481 4.44406 3.570 0.000800 ***
## `Curso Preparativo`SI 0.75710 0.81949 0.924 0.359989
## GeneroMasculino -0.49654 0.49926 -0.995 0.324741
## JornadaNocturna -1.45258 0.49895 -2.911 0.005364 **
## `Condiciones socioeconomicas`Bajo -4.85787 1.25942 -3.857 0.000329 ***
## `Condiciones socioeconomicas`Medio -2.01271 0.92676 -2.172 0.034643 *
## `Razonamiento Cuantitativo` 0.81152 0.05304 15.299 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.451 on 50 degrees of freedom
## Multiple R-squared: 0.9877, Adjusted R-squared: 0.9862
## F-statistic: 669.1 on 6 and 50 DF, p-value: < 2.2e-16
cat("Interpretación: Se observa qué variables explican mejor el rendimiento en Matemáticas.\n")
## Interpretación: Se observa qué variables explican mejor el rendimiento en Matemáticas.
options(repos = c(CRAN = "https://cloud.r-project.org"))
# --- PRUEBAS DE NORMALIDAD CON SHAPIRO-WILK ---
cat("## Pruebas de Normalidad (Shapiro-Wilk)\n")
## ## Pruebas de Normalidad (Shapiro-Wilk)
cat("\n### a) Matemáticas\n")
##
## ### a) Matemáticas
cat("H₀: Los datos de Matemáticas siguen una distribución normal\n")
## H₀: Los datos de Matemáticas siguen una distribución normal
cat("H₁: Los datos no siguen una distribución normal\n")
## H₁: Los datos no siguen una distribución normal
res_mat <- shapiro.test(datos$Matemáticas)
print(res_mat)
##
## Shapiro-Wilk normality test
##
## data: datos$Matemáticas
## W = 0.97, p-value = 0.1678
if (res_mat$p.value > 0.05) {
cat("Interpretación: No se rechaza H₀ (p =", round(res_mat$p.value, 4), "). Los datos se ajustan a una distribución normal.\n")
} else {
cat("Interpretación: Se rechaza H₀ (p =", round(res_mat$p.value, 4), "). Los datos NO siguen una distribución normal.\n")
}
## Interpretación: No se rechaza H₀ (p = 0.1678 ). Los datos se ajustan a una distribución normal.
cat("\n### b) Inglés\n")
##
## ### b) Inglés
cat("H₀: Los datos de Inglés siguen una distribución normal\n")
## H₀: Los datos de Inglés siguen una distribución normal
cat("H₁: Los datos no siguen una distribución normal\n")
## H₁: Los datos no siguen una distribución normal
res_ing <- shapiro.test(datos$Ingles)
print(res_ing)
##
## Shapiro-Wilk normality test
##
## data: datos$Ingles
## W = 0.97122, p-value = 0.1911
if (res_ing$p.value > 0.05) {
cat("Interpretación: No se rechaza H₀ (p =", round(res_ing$p.value, 4), "). Los datos se ajustan a una distribución normal.\n")
} else {
cat("Interpretación: Se rechaza H₀ (p =", round(res_ing$p.value, 4), "). Los datos NO siguen una distribución normal.\n")
}
## Interpretación: No se rechaza H₀ (p = 0.1911 ). Los datos se ajustan a una distribución normal.
cat("\n### c) Lectura Crítica\n")
##
## ### c) Lectura Crítica
cat("H₀: Los datos de Lectura Crítica siguen una distribución normal\n")
## H₀: Los datos de Lectura Crítica siguen una distribución normal
cat("H₁: Los datos no siguen una distribución normal\n")
## H₁: Los datos no siguen una distribución normal
res_lect <- shapiro.test(datos$`Lectura Crítica`)
print(res_lect)
##
## Shapiro-Wilk normality test
##
## data: datos$`Lectura Crítica`
## W = 0.97438, p-value = 0.2663
if (res_lect$p.value > 0.05) {
cat("Interpretación: No se rechaza H₀ (p =", round(res_lect$p.value, 4), "). Los datos se ajustan a una distribución normal.\n")
} else {
cat("Interpretación: Se rechaza H₀ (p =", round(res_lect$p.value, 4), "). Los datos NO siguen una distribución normal.\n")
}
## Interpretación: No se rechaza H₀ (p = 0.2663 ). Los datos se ajustan a una distribución normal.
cat("\n\n## Pruebas de Bondad de Ajuste para Variables Categóricas (Chi-cuadrado)\n")
##
##
## ## Pruebas de Bondad de Ajuste para Variables Categóricas (Chi-cuadrado)
cat("\n### a) Género\n")
##
## ### a) Género
cat("H₀: La proporción de Género es igual (50%-50%)\n")
## H₀: La proporción de Género es igual (50%-50%)
cat("H₁: La proporción es diferente a 50%-50%\n")
## H₁: La proporción es diferente a 50%-50%
tabla_genero <- table(datos$Genero)
chisq_genero <- chisq.test(tabla_genero, p = c(0.5, 0.5))
print(chisq_genero)
##
## Chi-squared test for given probabilities
##
## data: tabla_genero
## X-squared = 0.017544, df = 1, p-value = 0.8946
if (chisq_genero$p.value > 0.05) {
cat("Interpretación: No se rechaza H₀ (p =", round(chisq_genero$p.value, 4), "). La proporción observada (", paste(names(tabla_genero), tabla_genero, collapse = ", "), ") coincide con la esperada (50%-50%).\n")
} else {
cat("Interpretación: Se rechaza H₀ (p =", round(chisq_genero$p.value, 4), "). La distribución observada no coincide con una distribución uniforme.\n")
}
## Interpretación: No se rechaza H₀ (p = 0.8946 ). La proporción observada ( Femenino 29, Masculino 28 ) coincide con la esperada (50%-50%).
cat("\n### b) Jornada Académica\n")
##
## ### b) Jornada Académica
cat("H₀: La proporción de Jornada Diurna y Nocturna es igual (50%-50%)\n")
## H₀: La proporción de Jornada Diurna y Nocturna es igual (50%-50%)
cat("H₁: La proporción es diferente a 50%-50%\n")
## H₁: La proporción es diferente a 50%-50%
tabla_jornada <- table(datos$Jornada)
chisq_jornada <- chisq.test(tabla_jornada, p = c(0.5, 0.5))
print(chisq_jornada)
##
## Chi-squared test for given probabilities
##
## data: tabla_jornada
## X-squared = 0.85965, df = 1, p-value = 0.3538
if (chisq_jornada$p.value > 0.05) {
cat("Interpretación: No se rechaza H₀ (p =", round(chisq_jornada$p.value, 4), "). La distribución de jornada coincide con la esperada (50%-50%).\n")
} else {
cat("Interpretación: Se rechaza H₀ (p =", round(chisq_jornada$p.value, 4), "). La distribución observada no coincide con la esperada.\n")
}
## Interpretación: No se rechaza H₀ (p = 0.3538 ). La distribución de jornada coincide con la esperada (50%-50%).
Las variables numéricas analizadas (Lectura Crítica, Matemáticas, Historia) mostraron un comportamiento consistente con la normalidad, lo cual permite aplicar inferencias paramétricas confiables.
Las distribuciones categóricas, como Curso Preparativo, mostraron diferencias respecto a proporciones teóricas, indicando una desigualdad de participación que puede estar influenciada por género o jornada.
Se encontraron diferencias significativas en:
Las materias más relacionadas estadísticamente fueron:
El modelo de regresión múltiple confirmó que variables como curso preparativo, estrato y razonamiento cuantitativo predicen significativamente el rendimiento en Matemáticas.
Se evidenció que la muestra aleatoria representa adecuadamente las características de la población completa, validando su uso para análisis exploratorios más eficientes.
Las herramientas estadísticas aplicadas permiten identificar patrones relevantes para la toma de decisiones académicas y proponer estrategias de equidad educativa y mejora del acceso a la educación superior.