INTRODUCIÓN

El siguiente trabajo se centra en analizar un conjunto de datos que recopila información sobre estudiantes matriculados en cursos de matemáticas y portugués en dos escuelas diferentes. Los datos comprenden una amplia gama de variables, incluidas características demográficas, familiares, académicas y de comportamiento de los estudiantes. Explorar las relaciones entre estas variables y las calificaciones finales de los estudiantes en ambas materias. Para lograr esto, se realizará un análisis estadístico que incluirá métodos de regresión para determinar qué factores influyen significativamente en el rendimiento académico de los estudiantes.


OBJETIVOS DE ESTUDIO

1. Análisis Exploratorio de Datos:

Durante este análisis, se examinarán las características de las variables proporcionadas, su distribución y posibles relaciones entre ellas. Se utilizarán gráficos descriptivos, como histogramas, diagramas de dispersión y boxplots, para visualizar la distribución de los datos y detectar posibles patrones o anomalías y se realizarán interpretaciones detalladas de los hallazgos obtenidos.

2. Normalidad de los Datos:

Se llevará a cabo un análisis de normalidad de las variables G1, G2 y G3 para determinar si siguen una distribución normal. Esto se realizará mediante pruebas estadísticas como la prueba de normalidad de Shapiro-Wilk o la prueba de Kolmogorov-Smirnov. La normalidad de los datos es fundamental para aplicar ciertos métodos estadísticos y modelos predictivos.

3. Comportamiento del Rendimiento Académico:

Se examinará el rendimiento académico de los estudiantes a lo largo de los tres períodos (G1, G2 y G3) y se evaluará estadísticamente si existen factores influyentes en el rendimiento académico. Para ello, se emplearán técnicas de análisis de regresión y correlación para identificar las variables que tienen una relación significativa con las calificaciones finales. Se justificará estadísticamente si estos factores influyen en el rendimiento académico.

4. Estimación del Comportamiento de la Variable en Estudio:

Finalmente, se realizará una estimación del comportamiento futuro de la variable en estudio (calificación final, G3) utilizando métodos de pronóstico como modelos de regresión. Se justificará la elección del método de pronóstico utilizado y se proporcionarán conclusiones sobre las posibles tendencias del rendimiento académico a corto plazo.


DESCRPCIÓN DE VARIABLES

Presentamos el conjunto de datos correspondiente a los estudiantes inscritos en el curso de matemáticas. A continuación, detallaremos las variables que componen este conjunto, proporcionando una descripción clara de cada una.

1. Escuela: Indica la escuela del estudiante, siendo “GP” para Gabriel Pereira y “MS” para Mousinho da Silveira.

2. Sexo: Describe el sexo del estudiante, utilizando “F” para femenino y “M” para masculino.

3. Edad: Representa la edad del estudiante, con valores numéricos entre 15 y 22 años.

4. Dirección: Define el tipo de dirección del estudiante, siendo “U” para urbana y “R” para rural.

5. Tamaño de la Familia: Indica el tamaño de la familia del estudiante, clasificado como “LE3” para menor o igual a 3 y “GT3” para mayor que 3.

6. Estado de Convivencia de los Padres: Refleja el estado de convivencia de los padres del estudiante, siendo “T” para viviendo juntos y “A” para separados.

7. Educación de la Madre (Medu): Representa el nivel educativo de la madre del estudiante, con valores numéricos del 0 al 4.

8. Educación del Padre (Fedu): Indica el nivel educativo del padre del estudiante, con valores numéricos del 0 al 4.

9. Trabajo de la Madre (Mjob): Describe el trabajo de la madre del estudiante, con categorías como “maestra”, “salud”, “servicios”, “en casa” u “otros”.

10. Trabajo del Padre (Fjob): Representa el trabajo del padre del estudiante, con categorías como “maestro”, “salud”, “servicios”, “en casa” u “otros”.

11. Motivo de Elección de la Escuela: Indica el motivo por el cual se eligió la escuela, con opciones como “casa”, “reputación”, “curso” u “otro”.

12. Tutor: Describe quién es el tutor del estudiante, con opciones como “madre”, “padre” u “otro”.

13. Tiempo de Viaje: Representa el tiempo de viaje de casa a la escuela, con valores numéricos del 1 al 4, indicando diferentes intervalos de tiempo.

14. Tiempo de Estudio: Indica el tiempo de estudio semanal del estudiante, con valores numéricos del 1 al 4, representando diferentes intervalos de tiempo.

15. Reprobados: Número de clases anteriores en las que el estudiante ha reprobado, con valores numéricos del 1 al 4.

16. Apoyo Educativo Adicional (schoolsup): Indica si el estudiante recibe apoyo educativo adicional, con opciones binarias de “sí” o “no”.

17. Apoyo Educativo Familiar (famsup): Describe si el estudiante recibe apoyo educativo familiar, con opciones binarias de “sí” o “no”.

18. Clases Pagadas: Indica si el estudiante recibe clases extra pagadas dentro del curso de Matemáticas o Portugués, con opciones binarias de “sí” o “no”.

19. Actividades Extraescolares: Refleja si el estudiante participa en actividades extraescolares, con opciones binarias de “sí” o “no”.

20. Asistencia: Indica si el estudiante asistió, con opciones binarias de “sí” o “no”.

21. Deseo de Cursar Estudios Superiores: Describe si el estudiante tiene el deseo de cursar estudios superiores, con opciones binarias de “sí” o “no”.

22. Acceso a Internet en Casa: Indica si el estudiante tiene acceso a Internet en casa, con opciones binarias de “sí” o “no”.

23. Relación Romántica: Refleja si el estudiante está en una relación romántica, con opciones binarias de “sí” o “no”.

24. Calidad de las Relaciones Familiares (famrel): Describe la calidad de las relaciones familiares del estudiante, con valores numéricos del 1 al 5, representando desde “muy malo” hasta “excelente”.

25. Tiempo Libre: Indica el tiempo libre después de la escuela del estudiante, con valores numéricos del 1 al 5, representando desde “muy bajo” hasta “muy alto”.

26. Salir con Amigos (goout): Describe la frecuencia con la que el estudiante sale con amigos, con valores numéricos del 1 al 5, representando desde “muy bajo” hasta “muy alto”.

27. Consumo de Alcohol en Jornada Laboral (Dalc): Indica el nivel de consumo de alcohol durante la jornada laboral del estudiante, con valores numéricos del 1 al 5, representando desde “muy bajo” hasta “muy alto”.

28. Consumo de Alcohol en Fin de Semana (Walc): Describe el nivel de consumo de alcohol durante el fin de semana del estudiante, con valores numéricos del 1 al 5, representando desde “muy bajo” hasta “muy alto”.

29. Estado de Salud: Representa el estado de salud actual del estudiante, con valores numéricos del 1 al 5, representando desde “muy malo” hasta “muy bueno”.

30. Ausencias: Indica el número de ausencias escolares del estudiante, con valores numéricos de 0 a 93.

31. Calificación del Primer Período (G1): Representa la calificación del primer período del estudiante en la materia de Matemáticas o Portugués, con valores numéricos de 0 a 20.

32. Calificación del Segundo Período (G2): Indica la calificación del segundo período del estudiante en la materia de Matemáticas o Portugués, con valores numéricos de 0 a 20.

33. Calificación Final (G3): Describe la calificación final del estudiante en la materia de Matemáticas o Portugués, con valores numéricos de 0 a 20, siendo el objetivo final.


DESAROLLO:


1. ANÁLISIS EXPLORATORIO DE DATOS CON GRÁFICOS E INTERPRETACIONES

CARGA DE BASE DE DATOS:

# file.choose()
library(readxl)
data <- read_xlsx("C:\\Users\\PC\\Downloads\\std.xlsx")

# str(data) # Estructura de la base de datos

NOMBRE DE LAS VARIABLES DE LA BASE DE DATOS

# Nombre de las variables
names(data)
##  [1] "school"     "sex"        "age"        "address"    "famsize"   
##  [6] "Pstatus"    "Medu"       "Fedu"       "Mjob"       "Fjob"      
## [11] "reason"     "guardian"   "traveltime" "studytime"  "failures"  
## [16] "schoolsup"  "famsup"     "paid"       "activities" "nursery"   
## [21] "higher"     "internet"   "romantic"   "famrel"     "freetime"  
## [26] "goout"      "Dalc"       "Walc"       "health"     "absences"  
## [31] "G1"         "G2"         "G3"

TIPO DE CLASE DE LAS VARIABLES DE LA BASE DE DATOS

# Comprobar el tipo de clase de cada variable
clases <- sapply(data, class)
clases
##      school         sex         age     address     famsize     Pstatus 
## "character" "character"   "numeric" "character" "character" "character" 
##        Medu        Fedu        Mjob        Fjob      reason    guardian 
##   "numeric"   "numeric" "character" "character" "character" "character" 
##  traveltime   studytime    failures   schoolsup      famsup        paid 
##   "numeric"   "numeric"   "numeric" "character" "character" "character" 
##  activities     nursery      higher    internet    romantic      famrel 
## "character" "character" "character" "character" "character"   "numeric" 
##    freetime       goout        Dalc        Walc      health    absences 
##   "numeric"   "numeric"   "numeric"   "numeric"   "numeric"   "numeric" 
##          G1          G2          G3 
##   "numeric"   "numeric"   "numeric"

SELECCIÓN DE DATOS DE TIPO CARACTER

cat_cols <- names(data)[sapply(data, is.character)]; cat_cols
##  [1] "school"     "sex"        "address"    "famsize"    "Pstatus"   
##  [6] "Mjob"       "Fjob"       "reason"     "guardian"   "schoolsup" 
## [11] "famsup"     "paid"       "activities" "nursery"    "higher"    
## [16] "internet"   "romantic"

SELECCIÓN DE DATOS TIPO NUMÉRICO

num_cols <- names(data)[sapply(data, is.numeric)]; num_cols
##  [1] "age"        "Medu"       "Fedu"       "traveltime" "studytime" 
##  [6] "failures"   "famrel"     "freetime"   "goout"      "Dalc"      
## [11] "Walc"       "health"     "absences"   "G1"         "G2"        
## [16] "G3"

LIMPIEZA DE DATOS

colSums(is.na(data))
##     school        sex        age    address    famsize    Pstatus       Medu 
##          0          0          0          0          0          0          0 
##       Fedu       Mjob       Fjob     reason   guardian traveltime  studytime 
##          0          0          0          0          0          0          0 
##   failures  schoolsup     famsup       paid activities    nursery     higher 
##          0          0          0          0          0          0          0 
##   internet   romantic     famrel   freetime      goout       Dalc       Walc 
##          0          0          0          0          0          0          0 
##     health   absences         G1         G2         G3 
##          0          0          0          0          0

Se observa que la base de datos no presenta ningun valor faltante.


ANÁLISIS DESCRIPTIVO

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data1<- select_if(data, is.numeric) # base de datos numéricos
summary(data1)
##       age            Medu            Fedu         traveltime      studytime    
##  Min.   :15.0   Min.   :0.000   Min.   :0.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:16.0   1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :17.0   Median :3.000   Median :2.000   Median :1.000   Median :2.000  
##  Mean   :16.7   Mean   :2.749   Mean   :2.522   Mean   :1.448   Mean   :2.035  
##  3rd Qu.:18.0   3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :22.0   Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :4.000  
##     failures          famrel         freetime         goout      
##  Min.   :0.0000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:4.000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :3.000   Median :3.000  
##  Mean   :0.3342   Mean   :3.944   Mean   :3.235   Mean   :3.109  
##  3rd Qu.:0.0000   3rd Qu.:5.000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :3.0000   Max.   :5.000   Max.   :5.000   Max.   :5.000  
##       Dalc            Walc           health         absences     
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   : 0.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:3.000   1st Qu.: 0.000  
##  Median :1.000   Median :2.000   Median :4.000   Median : 4.000  
##  Mean   :1.481   Mean   :2.291   Mean   :3.554   Mean   : 5.709  
##  3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:5.000   3rd Qu.: 8.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :75.000  
##        G1              G2              G3       
##  Min.   : 3.00   Min.   : 0.00   Min.   : 0.00  
##  1st Qu.: 8.00   1st Qu.: 9.00   1st Qu.: 8.00  
##  Median :11.00   Median :11.00   Median :11.00  
##  Mean   :10.91   Mean   :10.71   Mean   :10.42  
##  3rd Qu.:13.00   3rd Qu.:13.00   3rd Qu.:14.00  
##  Max.   :19.00   Max.   :19.00   Max.   :20.00

Interpretación

La edad de los estudiantes varía entre 15 y 22 años, con una media de aproximadamente 16.7 años, donde la mayoría de los estudiantes tienen entre 16 y 18 años.

La educación de la Madre (Medu) y del Padre (Fedu): La educación de la madre y del padre varía de 0 a 4, con una media cercana a 3, los valores intercuartílicos indican que la mayoría de los padres tienen entre 2 y 4 años de educación.

El tiempo de Viaje a la Escuela (traveltime) y Tiempo de Estudio (studytime): El tiempo medio de viaje a la escuela es de aproximadamente 1.45 unidades, mientras que el tiempo medio de estudio semanal es de alrededor de 2.04 unidades.

Número de Reprobados Anteriores (failures): La mayoría de los estudiantes no han reprobado ninguna clase anteriormente.

Calidad de las Relaciones Familiares (famrel): La calidad de las relaciones familiares tiende a ser alta, con un promedio cercano a 4 y de 5.

Tiempo Libre (freetime) y Salir con Amigos (goout): Los estudiantes tienden a tener un tiempo libre moderado y salen con amigos ocasionalmente, como indican las medianas de 3.

Consumo de Alcohol (Dalc y Walc): El consumo de alcohol durante la semana (Dalc) y los fines de semana (Walc) tiende a ser bajo a moderado, con valores medios de alrededor de 1.48 y 2.29 respectivamente.

Estado de Salud (health): El estado de salud medio de los estudiantes es moderado, con una mediana de 4.

Número de Ausencias (absences): El número medio de ausencias escolares es de aproximadamente 5.71, con una mediana de 4.

Calificaciones (G1, G2, G3): Las calificaciones medias de los estudiantes en los tres períodos (G1, G2 y G3) están alrededor de 10.91, 10.71 y 10.42 respectivamente, con medianas similares, esto indica una distribución más o menos simétrica de las calificaciones.


MATRIZ DE CORRELACIÓN

library(corrplot)
## corrplot 0.92 loaded
correlation_matrix <- cor(data1)
corrplot(correlation_matrix)

Interpretación

Edad (age) muestra una correlación negativa débil con la educación de los padres (Medu y Fedu), lo que indica que a medida que la edad aumenta, la educación de los padres tiende a disminuir ligeramente.

La educación de los padres (Medu y Fedu) está moderadamente correlacionada entre sí, lo que sugiere que los niveles educativos de la madre y el padre tienden a estar relacionados.

El tiempo de viaje a la escuela (traveltime) muestra una correlación débil con la mayoría de las variables, excepto con el consumo de alcohol en jornada laboral (Dalc), donde la correlación es moderada positiva.

El tiempo de estudio (studytime) está moderadamente correlacionado positivamente con la educación de los padres y la calidad de las relaciones familiares, lo que sugiere que los estudiantes con padres más educados y relaciones familiares más fuertes tienden a dedicar más tiempo al estudio.

El número de reprobados anteriores (failures) muestra una correlación moderada negativa con las calificaciones (G1, G2, G3), lo que indica que los estudiantes que han reprobado más veces tienden a obtener calificaciones más bajas.

El consumo de alcohol durante la semana (Dalc) y los fines de semana (Walc)** están fuertemente correlacionados entre sí, lo que sugiere que los estudiantes que consumen más alcohol durante la semana también tienden a hacerlo más los fines de semana.

Las calificaciones (G1, G2, G3) muestran una correlación positiva fuerte entre sí, lo que indica una consistencia en el rendimiento académico de los estudiantes a lo largo de los tres períodos.

Estas correlaciones son valiosas sobre como pueden estar relacionadas las variables entre sí y cómo podrían influir en el rendimiento académico de los estudiantes.


ANÁLISIS GRÁFICOS

Las variables cuantitativas ausencias y edad se representaron como histogramas, se muestran en la figura a continuación:

Análisis gráficos de la edad

library(ggplot2)

ggplot(data, aes(x = age)) +
  geom_histogram(fill = "lightblue", color = "black", bins = 30) +
  labs(x = "Edad", y = "Frecuencia", title = "Histograma de edad") +
  theme_minimal()

ggsave("age.png", width = 6, height = 4)

Según el gráfico nos indica que la edad de los estudiantes esta entre los 16, 17 y los 18 años.


Análisis gráfico de ausencia

ggplot(data, aes(x = absences)) +
  geom_histogram(fill = "green", color = "black", bins = 30) +
  labs(x = "Ausencias", y = "Frecuencia", title = "Histograma de ausencia") +
  theme_minimal()

ggsave("absence.png", width = 6, height = 4)

El número de ausencias es el número de lecciones que el estudiante ha perdido. La mayoría de los estudiantes tienen un número bajo de ausencias, pero también hay algunos valores atípicos con un número muy alto de ausencias. La mayoría de los estudiantes tenían entre 15 y 18 años (principalmente estudiantes de secundaria pero con algunos repetidores de 19 a 22 años).


Diagrama de cajas de G1, G2 y G3

boxplot(data[, c("G1", "G2", "G3")], 
        main = "Boxplot of G1, G2, y G3",
        names = c("G1", "G2", "G3"),
        col = c("lightblue", "lightgreen", "lightpink"),
        border = "black")

Las variables de calificaciones se representan como diagramas de caja. Las calificaciones para los períodos 2 y 3 (calificaciones finales) incluyen calificaciones cero, mientras que las calificaciones para el período 1 no. Una posible explicación puede ser que los estudiantes con altas ausencias o estudiantes que no rindieron un examen importante. La mediana de las calificaciones de los tres semestres no parece diferir mucho. La variación es mayor para el grado final (tercer grado).


Datos numércios y categóricos

cols_numerical <- names(data)[sapply(data, is.numeric)]

cols_string <- names(data)[sapply(data, function(x) is.character(x) | is.factor(x))]

print(paste("NUMERICAL:", paste(cols_numerical, collapse = ", ")))
## [1] "NUMERICAL: age, Medu, Fedu, traveltime, studytime, failures, famrel, freetime, goout, Dalc, Walc, health, absences, G1, G2, G3"
print(paste("CATEGORICAL:", paste(cols_string, collapse = ", ")))
## [1] "CATEGORICAL: school, sex, address, famsize, Pstatus, Mjob, Fjob, reason, guardian, schoolsup, famsup, paid, activities, nursery, higher, internet, romantic"

Se separa las variables numéricas y categóricas para realizar los gráfcios necesarios.


Gráfico general de histograma

library(ggplot2)
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
cols_numerical <- c("age", "Medu", "Fedu", "traveltime", "studytime", "failures", 
                    "famrel", "freetime", "goout", "Dalc", "Walc", "health", 
                    "absences", "G1", "G2", "G3")
cols_por_pagina <- 4
grupos <- split(cols_numerical, ceiling(seq_along(cols_numerical) / cols_por_pagina))

for (grupo in grupos) {
  plots <- list()
  
  for (col in grupo) {
    hist <- ggplot(data, aes(x = .data[[col]])) +
      geom_histogram(bins = 80, fill = "green", color = "black") +
      scale_y_log10() +  
      labs(x = col, y = "Frecuencia") +
      theme_minimal()
  
    plots[[length(plots) + 1]] <- hist
  }
  
  grid.arrange(grobs = plots, ncol = 2)
}
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 72 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 76 rows containing missing values (`geom_bar()`).

## Warning: Transformation introduced infinite values in continuous y-axis
## Removed 76 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 76 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).

## Warning: Transformation introduced infinite values in continuous y-axis
## Removed 75 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 75 rows containing missing values (`geom_bar()`).

## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 46 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 63 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 63 rows containing missing values (`geom_bar()`).
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 62 rows containing missing values (`geom_bar()`).

Se presenta la gráfica de los histogramas de todos los datos numéricos.

Las primeras 4 gráfcias nos presenta las variables Edad, Educación de la madre, Educación del padre y Tiempo de viaje.

Nos indica las distribución de edad de los estudiantes en un intervalo de 15 hasta los 22, la mayor de parte de estudiantes son entre los 16 hasta los 18, al pasar esa edad promedio no hay muchos estudiantes.

La educacion de las madres se puede decir que hay un porcentaje de estudios realizados por las madres.

La educación de los padres es mejor que al de las madres ya que hay más porcentaje de estudios en ellos.

El tiempo de viaje de los estudiantes se puede decir que es baja, no hay muchos alumnos que realizan muchos viajes.

El tiempo de estudio realizados por los estudiantes es mucho mejor ya que si se preocupan por su educación.

Los reprobados se puede decir que hay un porcentaje moderado hay alumnos que si repiten materias.

Calidad de relaciones familiares es bastante alta se puede decir que si tienen buena relación y motivación.

Tiempo libre se observa que es moderado ya que se puede decir que hay estudiantes que ayudan a sus padres o otro que si tienen tiempo para jugar o pasar con sus amigos.

Salir con amigos la mayoria si de estudiantes si salen por divertirse.

Consumo de alcohol en jornada laboral se puede que la mayoria de estudiantes no lo hacen y respetan sus valores, hay un porcentaje bajo de que si lo hacen puede ser por problemas personales o familiares.

Consumo de alcohol durante el fin de semana en este caso si lo hacen ya que en la gran mayoria.

Estado de salud de los estudiantes esta en un porcentaje adecuado algunos de los estuadiantes pueden tener problemas por el alcohol y otras situaciones.

Las ausencias de los estudiantes no estan tan altas ya que si asisten a clases.

Calificación del primer período y de segundo período las notas estan altas eso demuestra que los estudiantes si ponen enmpeño y dedicación.

Calificación final demuestra que si los estudiantes aprovaron o no, por lo general si aprovaron las mayoría.


Gráficos general de densidad

library(ggplot2)
library(gridExtra)

cols_numerical <- c("age", "Medu", "Fedu", "traveltime", "studytime", "failures", 
                    "famrel", "freetime", "goout", "Dalc", "Walc", "health", 
                    "absences", "G1", "G2", "G3")

cols_por_pagina <- 4
grupos <- split(cols_numerical, ceiling(seq_along(cols_numerical) / cols_por_pagina))

for (grupo in grupos) {
  
  plots <- list()
  
  for (col in grupo) {
    density_plot <- ggplot(data, aes(x = .data[[col]])) +
      geom_density(fill = "skyblue", color = "red") +
      labs(x = col, y = "Densidad") +
      theme_minimal()
    
    plots[[length(plots) + 1]] <- density_plot
  }
  
  grid.arrange(grobs = plots, ncol = 2)
}

Se presenta los gráfcios de densidad de todas la variables numéricas, ya que son una forma visual de representar la distribución de un conjunto de datos, nos permiten ver la forma, el centro y la dispersión de los datos de una manera más intuitiva que solo con los valores numéricos. Ya que nos indican las mismas interpretaciones de los histogramas.


Gráfico general de diagrama de caja

library(ggplot2)
library(gridExtra)

cols_numerical <- c("age", "Medu", "Fedu", "traveltime", "studytime", "failures", 
                    "famrel", "freetime", "goout", "Dalc", "Walc", "health", 
                    "absences", "G1", "G2", "G3")
cols_por_pagina <- 4
grupos <- split(cols_numerical, ceiling(seq_along(cols_numerical) / cols_por_pagina))

for (grupo in grupos) {
 
  plots <- list()
  
  for (col in grupo) {
    boxplot <- ggplot(data, aes(y = .data[[col]])) +
      geom_boxplot(fill = "skyblue", color = "blue") +
      labs(y = col) +
      theme_minimal()
    
    plots[[length(plots) + 1]] <- boxplot
  }
  
  grid.arrange(grobs = plots, ncol = 2)
}

Se presenta las gráficas de caja de todas las varibles numéricas.

Nos da la posición de la caja que indica la tendencia central de los datos, el tamaño de la caja lo cual refleja la dispersión o variabilidad de los datos (cuanto mayor, más dispersión), la simetría donde si la caja está centrada, los datos tienen una distribución simétrica y finalmente la presencia de outliers que son los puntos fuera de los bigotes señalan valores atípicos.


Gráfio de dispersión de G1 Y G2

ggplot(data, aes(x = G1, y = G2)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(x = "G1", y = "G2", title = "Diagrama de dispersión con línea de regresión G1 y G2") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Se observa la relación de las calificaciones de primer parcial y segundo parcial, estan parejas ya que no difiere mucho las calificaciones de los alumnos y van a una escala igual. Observando que los puntos o datos estan cerca de la línea de tendencia.


Gráfio de dispersión de G2 Y G3

ggplot(data, aes(x = G2, y = G3)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "red") +  
  labs(x = "G2", y = "G3", title = "Diagrama de dispersión con línea de regresión G2 y G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Se observa la relación de las calificaciones de segundo parcial y el parcial final, las notas se definen de manera buena por que siguen la tendencia de línea.


Gráfio de dispersión de G1 Y G3

ggplot(data, aes(x = G1, y = G3)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "green") + 
  labs(x = "G1", y = "G3", title = "Diagrama de dispersión con línea de regresión G1 y G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Se observa la relación de las calificaciones de primer parcial y parcial final, estan parejas ya que no difiere mucho su nota final ya que tienen notas bastante buena.


Gráfica de dispersión de Dalc: Consumo de alcohol en jornada laboral vs Walc: consumo de alcohol los fines de semana

ggplot(data, aes(x = Dalc, y = Walc)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(x = "Laboral", y = "Fin de semana", title = "Diagrama de dispersión del consumo de alcohol en jornada laboral y fin de semana") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Se observa que el consumo de alcohol en jornada laboral y fin de semana estan relacionadas entre si.


Calculo de salud de consumidores de alcohol

data$salud <- (0.5 * data$Dalc + 0.5 * data$Walc + 2 * data$health + data$famrel) / 4

Es la relación general del consumo de alcohol que se calcula para ver su salud general.


Salud general vs calificación

ggplot(data, aes(x = salud, y = G3)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "green") +  
  labs(x = "salud", y = "G3", title = "Salud vs Calificación G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

En general, un mejor valor de salud general corresponde a una nota final más baja.

Por el contrario, un valor de salud general más bajo generalmente corresponde a una calificación final más alta.

La pendiente de la línea de mejor ajuste está a una pequeña distancia de cero, por lo que la correlación entre Salud general y G3 es baja.


Ausencias vs calificaciones

ggplot(data, aes(x = absences, y = G3)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "red") +  
  labs(x = "Ausencia", y = "G3", title = "Ausencia vs G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Parece no haber correlación entre Ausencias y G3 se necesita identificar la causa potencial de este fenómeno y debemos examinar más relaciones en Ausencias para determinar la causa.


p1 <- ggplot(data, aes(x = absences, y = G2)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  
  labs(x = "Ausencia", y = "G2", title = "Ausencia vs G2") +
  theme_minimal()

p2 <- ggplot(data, aes(x = absences, y = G1)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(x = "Ausencia", y = "G1", title = "Ausencia vs G1") +
  theme_minimal()

library(gridExtra)
grid.arrange(p1, p2, ncol=2)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

Esta baja correlación se debe a que los estudiantes ausentes (generalmente) repiten la materia perdida, lo que efectivamente explica su ausencia.

Para una explicación más detallada, necesitamos trazar la matriz de correlación para validar nuestra hipótesis.


Matriz de correlación de ausencia y calificación

correlation_matrix <- cor(data[c("absences", "G1", "G2", "G3")])

library(ggplot2)
ggplot(data = reshape2::melt(correlation_matrix), aes(Var1, Var2, fill = value)) +
  geom_tile() +
  scale_fill_gradient2(low = "green", high = "skyblue", mid = "white", midpoint = 0, limit = c(-1,1)) +
  geom_text(aes(label = round(value, 2)), vjust = 1) +
  labs(title = "Matriz de correlación de ausencias", x = "", y = "") +
  theme_minimal()

La cantidad de ausencias que tiene un estudiante no necesariamente resulta en una calificación general más baja, ya que los estudiantes ausentes generalmente recuperan la materia que perdieron, lo que efectivamente explica su ausencia.


Edad vs. Grado

ggplot(data, aes(x = age)) +
  geom_histogram(aes(y = ..density..), fill = "green", color = "black", bins = 30) +
  geom_density(color = "blue") +
  labs(x = "Edad", y = "Densidad", title = "Histograma de edad y grado") +
  theme_minimal()
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Se muestra el gráfico de densidad y línea de la variable edad vs calificación(grado).


Media de calificaciones de G1, G2 y G3 por Edad

library(knitr)

age_grade <- aggregate(cbind(G1, G2, G3) ~ age, data = data, FUN = mean)
kable(age_grade)
age G1 G2 G3
15 11.23171 11.36585 11.256098
16 10.94231 11.18269 11.028846
17 10.89796 10.47959 10.275510
18 10.71951 10.13415 9.548780
19 10.25000 9.25000 8.208333
20 13.66667 13.66667 14.000000
21 10.00000 8.00000 7.000000
22 6.00000 8.00000 8.000000

Existe una relación inversa entre la edad y los graduados.

for (grade in c('G1', 'G2', 'G3')) {
  
  barplot <- ggplot(age_grade, aes(x = age, y = .data[[grade]], fill = age)) +
    geom_bar(stat = "identity") +
    labs(x = "Edad", y = grade, title = paste("Edad vs.", grade)) +
    theme_minimal()
  
  print(barplot)
}

Cuanto mayor es una persona, más bajas son las calificaciones que recibe, sin embargo los jóvenes de veinte años exhiben un desempeño sobresaliente, lideran por al menos 2 puntos completos en una escala de 19 puntos.

Por el momento no podemos afirmar con fundamento por qué se produce un aumento tan drástico.


Productividad del tiempo vs calificación

data$Tiempo_Productivo <- 0.5 * data$traveltime + 2 * data$studytime

library(ggplot2)
ggplot(data, aes(x = Tiempo_Productivo, y = G3)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(x = "Tiempo de productividad", y = "G3", title = "Tiempo de productividad vs. G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Como se esperaba, los estudiantes con mayor productividad horaria obtienen mejores calificaciones.


Tiempo de estudio vs calificación

library(ggplot2)
ggplot(data, aes(x = studytime, y = G3)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "red") +  
  labs(x = "Tiempo de estudio", y = "G3", title = "tiempo de estudio vs. G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Los estudiantes que estudian más obtienen mejores calificaciones en exámenes y cuestionarios.


Tiempo de viaje vs calificación

library(ggplot2)
ggplot(data, aes(x = traveltime, y = G3)) +
  geom_point() +  
  geom_smooth(method = "lm", se = FALSE, color = "green") +  
  labs(x = "Tiempo de viaje", y = "G3", title = "Tiempo de viaje vs. G3") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Por el contrario, los estudiantes que viajan más obtienen peores resultados en exámenes y cuestionarios.

En general:

Los estudiantes que estudian más obtienen mejores calificaciones mientras que los estudiantes que viajan más o estudian menos obtienen calificaciones más bajas.


Trabajo y educación de las madres

MotherJop_Edu <- aggregate(Medu ~ Mjob, data = data, FUN = mean)

MotherJop_Edu <- MotherJop_Edu[order(-MotherJop_Edu$Medu), ]

rownames(MotherJop_Edu) <- NULL
kable(MotherJop_Edu)
Mjob Medu
teacher 3.948276
health 3.647059
services 2.844660
other 2.404255
at_home 1.711864
ggplot(MotherJop_Edu, aes(x = Mjob, y = Medu, fill = Mjob)) +
  geom_bar(stat = "identity") +
  labs(x = "trabajo", y = "Educación", title = "Trabajo vs. Educación (Madre)") +
  theme_minimal()

Los profesores y profesionales deben tener un alto nivel educativo para poder conseguir un trabajo en la industria o empresas, lo cual no es lo mismo para las amas de casa.


Trabajo y educación de los padres

FatherJop_Edu <- aggregate(Fedu ~ Fjob, data = data, FUN = mean)

FatherJop_Edu <- FatherJop_Edu[order(-FatherJop_Edu$Fedu), ]

rownames(FatherJop_Edu) <- NULL
kable(FatherJop_Edu)
Fjob Fedu
teacher 3.862069
health 3.333333
services 2.558559
at_home 2.350000
other 2.271889
library(ggplot2)

ggplot(FatherJop_Edu, aes(x = Fjob, y = Fedu, fill = Fjob)) +
  geom_bar(stat = "identity") +
  labs(x = "Trabajo", y = "Educación", title = "Trabajo vs Educación (Padre)") +
  theme_minimal()

La gráfica del padre arroja aproximadamente los mismos resultados que la gráfica de la madre. Sin embargo, hay un hallazgo interesante: los padres que se quedan en casa tienen un nivel educativo más alto que las madres que se quedan en casa.


Trabajo vs calificación

1. Trabajo de las madres

MotherJop_Grade <- aggregate(G3 ~ Mjob, data = data, FUN = mean)

MotherJop_Grade <- MotherJop_Grade[order(-MotherJop_Grade$G3), ]

rownames(MotherJop_Grade) <- NULL
kable(MotherJop_Grade)
Mjob G3
health 12.147059
teacher 11.051724
services 11.019417
other 9.822695
at_home 9.152542
library(ggplot2)

ggplot(MotherJop_Grade, aes(x = Mjob, y = G3, fill = Mjob)) +
  geom_bar(stat = "identity") +
  labs(x = "Trabajo", y = "G3", title = "Trabajo vs (Madre)") +
  theme_minimal()

Sorprendentemente, los estudiantes cuyas madres son profesionales reciben en promedio una calificación más alta. Se Esperaba que los estudiantes con madres que eran maestras obtuvieran la puntuación más altas.


2. El trabajo de los padres

library(knitr)

FatherJop_Grade <- aggregate(G3 ~ Fjob, data = data, FUN = mean)

FatherJop_Grade <- FatherJop_Grade[order(-FatherJop_Grade$G3), ]
kable(FatherJop_Grade)
Fjob G3
5 teacher 11.96552
2 health 11.61111
4 services 10.29730
3 other 10.19355
1 at_home 10.15000
library(ggplot2)

ggplot(FatherJop_Grade, aes(x = Fjob, y = G3, fill = Fjob)) +
  geom_bar(stat = "identity") +
  labs(x = "trabajo", y = "calificación G3", title = "trabajo vs calificación (Padre)") +
  theme_minimal()

Estos resultados son más razonables que el conjunto anterior. Se observa que el orden de estos resultados corresponde con el orden del nivel educativo del padre.

En otras palabras, los padres con niveles educativos más altos tienden a aumentar el desempeño de sus hijos más que los padres con niveles educativos más bajos. El padre transmite directamente sus conocimientos, cultivando así los conocimientos del alumno.

Conclusión

Esta exploración descubrió la relación ligeramente sorprendente entre el trabajo de la madre y la calificación del estudiante. Descubrimos que las madres que trabajan en la industria de la salud tienen hijos que reciben puntuaciones más altas en promedio que las madres que trabajan en otros campos.

En cambio, en el caso de los padres, observamos una relación que cabría esperar. Los padres con niveles educativos más altos transmitieron directamente ese conocimiento al estudiante, mejorando eventualmente los puntajes generales de las pruebas del estudiante.


Tamaño de la familia vs calificación (grado)

Family_size_grade <- aggregate(cbind(G1, G2, G3) ~ famsize, data = data, FUN = mean)
kable(Family_size_grade)
famsize G1 G2 G3
GT3 10.75801 10.51957 10.17794
LE3 11.28070 11.19298 11.00000
library(ggplot2)

grades <- c("G1", "G2", "G3")

for (grade in grades) {
  
  p <- ggplot(Family_size_grade, aes(x = famsize, y = .data[[grade]], fill = famsize)) +
    geom_bar(stat = "identity") +
    labs(x = "Tamaño de la familia", y = grade, title = paste("Tamaño de la familia vs.", grade)) +
    theme_minimal() +
    theme(legend.position = "none") 
  
  print(p)
}

Como muestran los gráficos de barras, los estudiantes que no tienen hermanos tienden a obtener puntuaciones ligeramente superiores (de hecho, muy ligeramente) que los estudiantes con hermanos.


Actividades vs calificación

Esta sección explora la relación entre la cantidad de interacción social que experimenta una persona y cómo dicha persona obtiene calificaciones en un examen.

act_gr <- aggregate(cbind(G1, G2, G3) ~ activities, data = data, FUN = mean)

colnames(act_gr) <- c("activities", "G1", "G2", "G3")
kable(act_gr)
activities G1 G2 G3
no 10.71649 10.52062 10.34021
yes 11.09453 10.90050 10.48756
library(ggplot2)

grades <- c("G1", "G2", "G3")

for (grade in grades) {
  p <- ggplot(act_gr, aes(x = activities, y = .data[[grade]], fill = activities)) +
    geom_bar(stat = "identity") +
    labs(x = "Actividad", y = grade, title = paste("Actividad vs calificación", grade)) +
    theme_minimal() +
    theme(legend.position = "none")
  
  print(p)
}

Las personas con actividades reciben en promedio calificaciones marginalmente más altas.


Salir con amigos vs calificaciones

out_gr <- aggregate(cbind(G1, G2, G3) ~ goout, data = data, FUN = mean)

colnames(out_gr) <- c("goout", "G1", "G2", "G3")

kable(out_gr)
goout G1 G2 G3
1 11.130435 10.782609 9.869565
2 11.368932 11.456311 11.194175
3 11.276923 11.053846 10.961538
4 10.430233 10.058139 9.651163
5 9.792453 9.471698 9.037736
library(ggplot2)

grades <- c("G1", "G2", "G3")

for (grade in grades) {

  p <- ggplot(out_gr, aes(x = as.factor(goout), y = .data[[grade]], fill = as.factor(goout))) +
    geom_bar(stat = "identity") +
    labs(x = "salir", y = grade, title = paste("salir vs.", grade)) +
    theme_minimal() +
    theme(legend.position = "none") 
  
  print(p)
}

En general, salir más a la calle resulta en una fuerte disminución en los puntajes de las pruebas.


CONCLUSIÓN

Esta sección retrató una relación sorprendente entre la frecuencia con la que un estudiante participa en actividades sociales. Los estudiantes con actividad social, en general, obtuvieron mejores calificaciones que los estudiantes sin socialización.

Por el contrario, los estudiantes que salían con más frecuencia tendían a obtener puntuaciones relativamente baja; la calificación perfecta fue 2, ya que resultó en la puntuación promedio más alta para todas las métricas de calificación.


Grado

# Calcular el promedio
data$Grado <- (data$G1 + data$G2 + data$G3) / 3
par(mfrow = c(4, 1), mar = c(4, 4, 2, 1)) 

hist(data$G1, main = "Histograma de G1", xlab = "G1", col = "lightblue", border = "black")
hist(data$G2, main = "Histograma de G2", xlab = "G2", col = "green", border = "black")
hist(data$G3, main = "Histograma de G3", xlab = "G3", col = "blue", border = "black")
hist(data$Grado, main = "Histograma de Grado", xlab = "Grado", col = "red", border = "black")

Se observa las calificaciones de los 3 parciales y la nota de grado se puede decir que los estudiantes obtuvieron unas calificaciones similares durante los 3 parciales y tambien lo refleja la nota de grado que es identico.


2. ANÁLISI DE NORMALIDAD DE LOS DATOS Y DE LAS VARIABLES G1, G2 Y G3

# Prueba de normalidad para la variable G1
shapiro.test(data$G1)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$G1
## W = 0.97491, p-value = 2.454e-06
# Prueba de normalidad para la variable G2
shapiro.test(data$G2)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$G2
## W = 0.96914, p-value = 2.084e-07
# Prueba de normalidad para la variable G3
shapiro.test(data$G3)
## 
##  Shapiro-Wilk normality test
## 
## data:  data$G3
## W = 0.92873, p-value = 8.836e-13

Interpretación

Las pruebas de normalidad de Shapiro-Wilk para las variables G1, G2 y G3 son:

Para la variable G1, el valor de W es 0.97491 y el p-valor es aproximadamente 2.454e-06. Dado que el p-valor es menor que el nivel de significancia de 0.05, rechazamos la hipótesis nula de normalidad. Esto sugiere que los datos de la variable G1 no siguen una distribución normal.

Para la variable G2, el valor de W es 0.96914 y el p-valor es aproximadamente 2.084e-07. Al igual que en el caso anterior, el p-valor es menor que 0.05, lo que indica que los datos de la variable G2 no se distribuyen normalmente.

Para la variable G3, el valor de W es 0.92873 y el p-valor es aproximadamente 8.836e-13. Una vez más, el p-valor es significativamente menor que 0.05, lo que sugiere que los datos de la variable G3 no siguen una distribución normal.

Según las pruebas de normalidad de Shapiro-Wilk, ninguno de los conjuntos de datos de las variables G1, G2 y G3 se distribuyen normalmente.


Gráficas

Al realizar pruebas de normalidad de Shapiro-Wilk se visualizara la distribución de las variables G1, G2 y G3 mediante histogramas y gráficos Q-Q. Si los p-values de la prueba de Shapiro-Wilk son mayores que el nivel de significancia (usualmente 0.05), se asume que los datos se distribuyen normalmente.

# Histograma y gráfico Q-Q para la variable G1
par(mfrow = c(1, 2))  
hist(data$G1)
qqnorm(data$G1); qqline(data$G1, col = 2)

# Histograma y gráfico Q-Q para la variable G2
par(mfrow = c(1, 2))
hist(data$G2)
qqnorm(data$G2); qqline(data$G2, col = 2)

# Histograma y gráfico Q-Q para la variable G3
par(mfrow = c(1, 2))
hist(data$G3)
qqnorm(data$G3); qqline(data$G3, col = 2)


3. ANALIZAR EL COMPORTAMIENTO DEL RENDIMIENTO ACÁDEMICO Y DECIDIR ESTADISTICAMENTE SI EXISTEN FACTORES INFLUYENTES EN EL RENDIMIENTO DE LOS TRES GRUPOS.

Preprocesamiento de datos

Asignar valores numéricos a datos categóricos

Manejo de valores faltantes

Normalizar las características para que las características en pequeñas escalas no dominen al ajustar un modelo a los datos.

Encuentrar las características más predictivas de los datos y fíltrarlas para mejorar el poder predictivo del modelo analítico.

CAMBIAR EL TIPO DE CLASE DE LAS VARIBLES CATEGORICAS

DATOS NUMÉRICOS

dataa <- data[, 1:33] # SELECCIÓN DE DATOS
  1. SCHOOL
dataa$school <- factor(dataa$school)
levels(dataa$school) <- c("GP", "MS")
class(dataa$school)
## [1] "factor"
  1. SEX
dataa$sex <- factor(dataa$sex)
levels(dataa$sex) <- c("F", "M")
class(dataa$sex)
## [1] "factor"
  1. ADDRESS
dataa$address <- factor(dataa$address)
levels(dataa$address) <- c("U", "R")
class(dataa$address)
## [1] "factor"
  1. FAMSIZE
dataa$famsize <- factor(dataa$famsize)
levels(dataa$famsize) <- c("GT3", "LT3")
class(dataa$famsize)
## [1] "factor"
  1. PASTATUS
data$Pstatus <- factor(data$Pstatus)
levels(data$Pstatus) <- c("A", "T")
class(data$Pstatus)
## [1] "factor"
  1. MJOB
data$Mjob <- factor(dataa$Mjob)
levels(dataa$Mjob) <- c("at_home", "health", "other", "services",  "teacher")
class(dataa$Mjob)
## [1] "character"
  1. FJOB
dataa$Fjob <- factor(dataa$Fjob)
levels(data$Fjob) <- c("teacher ", "other", "services", "health", "at_home")
class(dataa$Fjob)
## [1] "factor"
  1. REASON
dataa$reason <- factor(dataa$reason)
levels(dataa$reason) <- c("course", "other", "home", "reputation")
class(dataa$reason)
## [1] "factor"
  1. GUARDIAN
dataa$guardian <- factor(data$guardian )
levels(data$guardian ) <- c("mother", "father", "other")
class(data$guardian )
## [1] "character"
  1. SCHOOLSUP
dataa$schoolsup <- factor(dataa$schoolsup)
levels(dataa$schoolsup) <- c("no", "yes")
class(dataa$schoolsup)
## [1] "factor"
  1. FAMSUP
dataa$famsup <- factor(dataa$famsup )
levels(dataa$famsup ) <- c("no", "yes")
class(dataa$famsup )
## [1] "factor"
  1. PAID
dataa$paid <- factor(dataa$paid )
levels(dataa$paid ) <- c("no", "yes")
class(dataa$paid )
## [1] "factor"
  1. ACTIVITIS
dataa$activities <- factor(dataa$activities )
levels(dataa$activities ) <- c("no", "yes")
class(dataa$activities )
## [1] "factor"
  1. mursey
dataa$nursery <- factor(dataa$nursery  )
levels(dataa$nursery ) <- c("no", "yes")
class(dataa$nursery  )
## [1] "factor"
  1. HIGHER
dataa$higher <- factor(dataa$higher)
levels(dataa$higher) <- c("no", "yes")
class(dataa$higher)
## [1] "factor"
  1. INTERNET
dataa$internet <- factor(dataa$internet)
levels(dataa$internet) <- c("no", "yes")
class(dataa$internet )
## [1] "factor"
  1. ROMANTIC
dataa$romantic <- factor(dataa$romantic )
levels(dataa$romantic ) <- c("no", "yes")
class(dataa$romantic )
## [1] "factor"

TIPO DE DATOS

classes <- sapply(dataa, class)
for (i in 1:ncol(dataa))
  if(classes[i]== "integer")
    cancer[[i]] =as.numeric(data[[i]])
classes = sapply(dataa, class)
classes
##      school         sex         age     address     famsize     Pstatus 
##    "factor"    "factor"   "numeric"    "factor"    "factor" "character" 
##        Medu        Fedu        Mjob        Fjob      reason    guardian 
##   "numeric"   "numeric" "character"    "factor"    "factor"    "factor" 
##  traveltime   studytime    failures   schoolsup      famsup        paid 
##   "numeric"   "numeric"   "numeric"    "factor"    "factor"    "factor" 
##  activities     nursery      higher    internet    romantic      famrel 
##    "factor"    "factor"    "factor"    "factor"    "factor"   "numeric" 
##    freetime       goout        Dalc        Walc      health    absences 
##   "numeric"   "numeric"   "numeric"   "numeric"   "numeric"   "numeric" 
##          G1          G2          G3 
##   "numeric"   "numeric"   "numeric"

VARIABLES FICTICIAS

En este caso hay variables númericas y dos categoricas po lo cual se procede a realizar o tranformar a variables ficticias, por lo cual se da paso para realizar, predicciones y por ende se divide la base.

VARIABLES INFLUYENTES A BINARIAS

# Escalamiento de númericas

numerico <- sapply(dataa, is.numeric)
dataa[, numerico] <- scale(dataa[, numerico])

Mi variable predictor sera HIGHER (Deseo de Cursar Estudios Superiores, y las demás variables seran independientes ya qeu todas las variables son de suma importancia para la predicción ya que la variable predictora nos describe si el estudiante tiene el deseo de cursar estudios superiores.

x=model.matrix(dataa$higher~., data=dataa)
head(x)
##   (Intercept) schoolMS sexM        age addressR famsizeLT3 PstatusT       Medu
## 1           1        0    0  1.0217506        1          0        0  1.1424068
## 2           1        0    0  0.2380778        1          0        1 -1.5979820
## 3           1        0    0 -1.3292678        1          1        1 -1.5979820
## 4           1        0    0 -1.3292678        1          0        1  1.1424068
## 5           1        0    0 -0.5455950        1          0        1  0.2289439
## 6           1        0    1 -0.5455950        1          1        1  1.1424068
##         Fedu Mjobhealth Mjobother Mjobservices Mjobteacher Fjobhealth Fjobother
## 1  1.3586476          0         0            0           0          0         0
## 2 -1.3981972          0         0            0           0          0         1
## 3 -1.3981972          0         0            0           0          0         1
## 4 -0.4792490          1         0            0           0          0         0
## 5  0.4396993          0         1            0           0          0         1
## 6  0.4396993          0         0            1           0          0         1
##   Fjobservices Fjobteacher reasonother reasonhome reasonreputation
## 1            0           1           0          0                0
## 2            0           0           0          0                0
## 3            0           0           0          1                0
## 4            1           0           1          0                0
## 5            0           0           1          0                0
## 6            0           0           0          0                1
##   guardianmother guardianother traveltime   studytime   failures schoolsupyes
## 1              1             0  0.7912473 -0.04223229 -0.4493737            1
## 2              0             0 -0.6424347 -0.04223229 -0.4493737            0
## 3              1             0 -0.6424347 -0.04223229  3.5847768            1
## 4              1             0 -0.6424347  1.14932149 -0.4493737            0
## 5              0             0 -0.6424347 -0.04223229 -0.4493737            0
## 6              1             0 -0.6424347 -0.04223229 -0.4493737            0
##   famsupyes paidyes activitiesyes nurseryyes internetyes romanticyes
## 1         0       0             0          1           0           0
## 2         1       0             0          0           1           0
## 3         0       1             0          1           1           0
## 4         1       1             1          1           1           1
## 5         1       1             0          1           0           0
## 6         1       1             1          1           1           0
##        famrel   freetime       goout       Dalc       Walc     health
## 1  0.06211528 -0.2357113  0.80046413 -0.5400138 -1.0025178 -0.3987837
## 2  1.17736694 -0.2357113 -0.09778397 -0.5400138 -1.0025178 -0.3987837
## 3  0.06211528 -0.2357113 -0.99603207  0.5826465  0.5504019 -0.3987837
## 4 -1.05313638 -1.2368505 -0.99603207 -0.5400138 -1.0025178  1.0397512
## 5  0.06211528 -0.2357113 -0.99603207 -0.5400138 -0.2260579  1.0397512
## 6  1.17736694  0.7654280 -0.99603207 -0.5400138 -0.2260579  1.0397512
##      absences        G1         G2          G3
## 1  0.03637833 -1.780209 -1.2532017 -0.96371171
## 2 -0.21352497 -1.780209 -1.5190528 -0.96371171
## 3  0.53618492 -1.177653 -0.7214996 -0.09062427
## 4 -0.46342827  1.232570  0.8736068  1.00073503
## 5 -0.21352497 -1.478931 -0.1897975 -0.09062427
## 6  0.53618492  1.232570  1.1394578  1.00073503

DIVISIÓN DE DATOS EN VALIDACIÓN Y ENTRENAMIENTO

Por lo tanto, la separación estándar de 3/4 para entrenamiento y 1/4 para pruebas equivale al 75% para entrenamiento y al 25% para pruebas.

tr <- round(nrow(dataa) * 0.75)  # 75% para entrenamiento
set.seed(123)
muestra <- sample.int(nrow(dataa), tr)
Train <- dataa[muestra,]
val <- dataa[-muestra,]

MODELOS DE CLASIFICACIÓN

Regresión Logística

mod1 <- glm(higher~., data=dataa, family=binomial)# Modelo 2
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(mod1)
## 
## Call:
## glm(formula = higher ~ ., family = binomial, data = dataa)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)   
## (Intercept)         9.32686    5.43711   1.715  0.08627 . 
## schoolMS            6.44943    2.84756   2.265  0.02352 * 
## sexM               -6.12919    2.48026  -2.471  0.01347 * 
## age                -2.54990    0.95114  -2.681  0.00734 **
## addressR           -0.29735    1.32971  -0.224  0.82305   
## famsizeLT3          1.35714    1.51487   0.896  0.37032   
## PstatusT           -0.95888    2.77238  -0.346  0.72944   
## Medu                1.98270    1.06449   1.863  0.06252 . 
## Fedu                1.31033    0.85462   1.533  0.12522   
## Mjobhealth         20.86436 1944.93513   0.011  0.99144   
## Mjobother           4.08094    1.75593   2.324  0.02012 * 
## Mjobservices        4.95731    2.26075   2.193  0.02832 * 
## Mjobteacher         2.28348    2.83344   0.806  0.42030   
## Fjobhealth          7.85496 2958.66310   0.003  0.99788   
## Fjobother          -3.28627    4.29602  -0.765  0.44430   
## Fjobservices       -3.48456    4.28205  -0.814  0.41578   
## Fjobteacher        -6.69608    5.00532  -1.338  0.18096   
## reasonother         3.51101    2.21287   1.587  0.11260   
## reasonhome         -3.42084    1.91836  -1.783  0.07455 . 
## reasonreputation    1.80901    1.82682   0.990  0.32205   
## guardianmother      1.67633    1.42347   1.178  0.23894   
## guardianother       9.99368    4.00863   2.493  0.01267 * 
## traveltime         -0.66574    0.41920  -1.588  0.11226   
## studytime           0.67176    0.72645   0.925  0.35511   
## failures           -0.86225    0.55240  -1.561  0.11855   
## schoolsupyes        1.25063    2.10652   0.594  0.55271   
## famsupyes           1.01847    1.43018   0.712  0.47639   
## paidyes             3.93574    2.08813   1.885  0.05946 . 
## activitiesyes       2.33847    1.32184   1.769  0.07688 . 
## nurseryyes         -0.07745    1.25997  -0.061  0.95099   
## internetyes        -0.53601    1.38395  -0.387  0.69853   
## romanticyes        -2.76464    1.45267  -1.903  0.05702 . 
## famrel              1.32010    0.77138   1.711  0.08702 . 
## freetime           -1.45639    0.75887  -1.919  0.05497 . 
## goout              -0.83721    0.73952  -1.132  0.25760   
## Dalc               -0.26055    0.64627  -0.403  0.68683   
## Walc                1.82516    1.03632   1.761  0.07821 . 
## health              1.00698    0.69484   1.449  0.14728   
## absences           -1.62123    0.61519  -2.635  0.00841 **
## G1                  1.04323    1.00095   1.042  0.29730   
## G2                 -0.28040    1.33809  -0.210  0.83401   
## G3                  0.13996    1.15634   0.121  0.90366   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 158.296  on 394  degrees of freedom
## Residual deviance:  51.642  on 353  degrees of freedom
## AIC: 135.64
## 
## Number of Fisher Scoring iterations: 19

El análisis de regresión logística nos ayuda a buscar, modelar la probabilidad de que los estudiantes elijan educación superior (higher):

El intercepto, 9.32686, indica la estimación del logaritmo de odds de que un estudiante elija educación superior.

Las variables categóricas binarias, por ejemplo, schoolMS (escuela), sexM (género), addressR (dirección), famsizeLT3 (tamaño de la familia), PstatusT (estado de convivencia de los padres), entre otras.

La significancia de estas variables se evalúa con el valor p, como schoolMS tiene un valor p de 0.02352, lo que sugiere que la escuela tiene un efecto significativo en la elección de educación superior.

Las variables numéricas: Tales como age (edad), Medu (nivel educativo de la madre), Fedu (nivel educativo del padre), entre otras.

La edad, por ejemplo, tiene un coeficiente negativo, lo que sugiere que a medida que la edad aumenta, la probabilidad de elegir educación superior disminuye.

Variables de comportamiento y académicas: Como absences (ausencias), G1, G2, G3 (notas en diferentes momentos del año escolar). Por ejemplo, el coeficiente de absences es negativo, lo que indica que a medida que aumentan las ausencias, la probabilidad de elegir educación superior disminuye.

La devianza nula y la devianza residual se utilizan para evaluar el ajuste del modelo, en este caso, la devianza residual es significativamente menor que la devianza nula, lo que sugiere que el modelo proporciona un mejor ajuste que un modelo sin variables predictoras.


TABLA ANOVA

mod0 <- glm(higher~1, data = dataa, family = binomial)# Modelo 1
anova(mod0, mod1, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: higher ~ 1
## Model 2: higher ~ school + sex + age + address + famsize + Pstatus + Medu + 
##     Fedu + Mjob + Fjob + reason + guardian + traveltime + studytime + 
##     failures + schoolsup + famsup + paid + activities + nursery + 
##     internet + romantic + famrel + freetime + goout + Dalc + 
##     Walc + health + absences + G1 + G2 + G3
##   Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
## 1       394    158.296                          
## 2       353     51.642 41   106.65 9.416e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Se va comparar dos modelos: uno más simple (Modelo 1) que incluye solo el intercepto y otro más complejo (Modelo 2) que incluye todas las variables predictoras.

Modelo 1: Tiene solo el intercepto. La devianza residual es 158.296.

Modelo 2: Incluye todas las variables predictoras mencionadas anteriormente. La devianza residual es 51.642.

Esto significa que este modelo tiene una devianza residual considerablemente menor que el Modelo 1.

La prueba de Chi-cuadrado se utiliza para determinar si la mejora en el ajuste del Modelo 2 con respecto al Modelo 1 es significativa. El valor p asociado con esta prueba es extremadamente pequeño (9.416e-08), lo que indica que la diferencia entre los dos modelos es estadísticamente significativa. Esto sugiere que el Modelo 2 proporciona un mejor ajuste a los datos que el Modelo 1, lo que significa que las variables predictoras incluidas en el Modelo 2 son importantes para predecir la variable de respuesta (elección de educación superior en este caso).


SEGUNDO ANOVA

anova(mod1, test = "Chisq")
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: higher
## 
## Terms added sequentially (first to last)
## 
## 
##            Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                         394    158.296              
## school      1   0.2145       393    158.081  0.643270    
## sex         1   9.5442       392    148.537  0.002006 ** 
## age         1  16.5101       391    132.027 4.839e-05 ***
## address     1   0.2702       390    131.757  0.603228    
## famsize     1   0.0001       389    131.757  0.993470    
## Pstatus     1   1.2407       388    130.516  0.265332    
## Medu        1   9.8883       387    120.628  0.001663 ** 
## Fedu        1   2.0777       386    118.550  0.149468    
## Mjob        4   6.5226       382    112.028  0.163375    
## Fjob        4   6.4554       378    105.572  0.167624    
## reason      3   3.3029       375    102.269  0.347245    
## guardian    2   4.2603       373     98.009  0.118822    
## traveltime  1   0.4606       372     97.549  0.497342    
## studytime   1   6.3727       371     91.176  0.011589 *  
## failures    1   5.3687       370     85.807  0.020501 *  
## schoolsup   1   1.1136       369     84.694  0.291291    
## famsup      1   0.0035       368     84.690  0.952592    
## paid        1   7.2299       367     77.460  0.007170 ** 
## activities  1   3.1212       366     74.339  0.077278 .  
## nursery     1   0.0932       365     74.246  0.760210    
## internet    1   1.4363       364     72.809  0.230737    
## romantic    1   5.1519       363     67.658  0.023221 *  
## famrel      1   1.3050       362     66.353  0.253303    
## freetime    1   0.1205       361     66.232  0.728521    
## goout       1   0.4967       360     65.735  0.480937    
## Dalc        1   0.1646       359     65.571  0.684918    
## Walc        1   1.6065       358     63.964  0.204986    
## health      1   0.3640       357     63.600  0.546288    
## absences    1   8.9320       356     54.668  0.002802 ** 
## G1          1   2.9812       355     51.687  0.084237 .  
## G2          1   0.0306       354     51.656  0.861085    
## G3          1   0.0146       353     51.642  0.903859    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La devianza mide el ajuste del modelo. En cada fila, representa la cantidad de desviación no explicada después de agregar la variable correspondiente al modelo. Cuanto menor sea la devianza, mejor será el ajuste del modelo.

Pr(>Chi): Valores pequeños indican que la variable es significativa para predecir la variable de respuesta (en este caso, la elección de educación superior).

Signif. codes: Indican el nivel de significancia. “” significa altamente significativo (p < 0.001), “” significa significativo (p < 0.01), “” significa significativo (p < 0.05), “.” significa significativo (p < 0.1), y no hay código significa no significativo (p ≥ 0.1).

Por ejemplo, la variable “sex” tiene un valor de Pr(>Chi) muy pequeño (0.002006), lo que indica que es altamente significativa para predecir la elección de educación superior. Por otro lado, la variable “nursery” tiene un valor de Pr(>Chi) grande (0.760210), lo que sugiere que no es significativa para predecir la elección de educación superior.


4. PARA FINALIZAR SE REALIZARA UNA ESTIMACIÓN DEL COMPORTAMIENTO DE LA VARIABLE EN ESTUDIO, ESTO CON LA FINALIDAD DE CONOCER A CORTO PLAZO CUAL SERÁ EL POSIBLE COMPORTAMIENTO DE LOS ESTUDIANTES.

PREDICCIÓN DEL MODELO

mod2 <- glm(higher~., data =Train, family = binomial)
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
cbind(mod1$coefficients, mod2$coefficients)
##                         [,1]        [,2]
## (Intercept)       9.32686307  68.1764486
## schoolMS          6.44942528  59.8542049
## sexM             -6.12919320 -58.0627031
## age              -2.54990376 -29.0456366
## addressR         -0.29735428   3.9809874
## famsizeLT3        1.35713964 -22.6046214
## PstatusT         -0.95887680 -56.5730077
## Medu              1.98269674  -1.7491098
## Fedu              1.31033320   0.5037608
## Mjobhealth       20.86435786  41.1593550
## Mjobother         4.08093860  75.6677588
## Mjobservices      4.95731108  39.2847457
## Mjobteacher       2.28348208  76.3126935
## Fjobhealth        7.85496157   5.5190768
## Fjobother        -3.28626844 -10.3516965
## Fjobservices     -3.48455700 -22.0467706
## Fjobteacher      -6.69607510 -44.4780934
## reasonother       3.51100720   7.0734979
## reasonhome       -3.42084435 -26.5740827
## reasonreputation  1.80901023  20.4050928
## guardianmother    1.67632762  15.3327944
## guardianother     9.99368436  76.6288544
## traveltime       -0.66574004  -5.3174626
## studytime         0.67176085  -6.1360028
## failures         -0.86224736 -12.0118413
## schoolsupyes      1.25063355   7.7441809
## famsupyes         1.01846584  26.8666373
## paidyes           3.93573718  26.4315687
## activitiesyes     2.33846783  30.1888821
## nurseryyes       -0.07744551  19.3871977
## internetyes      -0.53600582  -3.1277373
## romanticyes      -2.76463991  -0.1307771
## famrel            1.32009605   2.8543522
## freetime         -1.45638867 -21.0829688
## goout            -0.83720581   2.1721149
## Dalc             -0.26055102  14.4033019
## Walc              1.82516018  -2.8763535
## health            1.00697510  11.4467362
## absences         -1.62122965 -21.4136597
## G1                1.04322671  22.0947748
## G2               -0.28040407 -21.0114176
## G3                0.13996089   7.3378258

La estimación indica la relación entre cada variable predictora y la probabilidad de que un estudiante elija educación superior. Por ejemplo, para “schoolMS”, un valor positivo indica que pertenecer a la escuela “MS” aumenta la probabilidad de elegir educación superior en comparación con la escuela de MS. Por otro lado, para “sexM”, un valor negativo indica que ser de género masculino disminuye la probabilidad de elegir educación superior en comparación con el género femenino.

El error estándar mide la precisión de la estimación del coeficiente. Cuanto menor sea el error estándar, más precisa será la estimación del coeficiente. Por ejemplo, los coeficientes con errores estándar grandes pueden indicar que la estimación del coeficiente no es muy confiable debido a la variabilidad en los datos. Estos coeficientes se utilizan en el cálculo de las probabilidades logarítmicas de que un estudiante elija educación superior dadas las variables predictoras. Los coeficientes más grandes (en valor absoluto) indican una mayor influencia en la variable de respuesta.


MATRIZ DE CONFUSIÓN

library(lattice)
library(caret)

p <- predict(mod2, val, type = "response")
Predmod = as.factor(p>0.5)
levels(Predmod)=c("no", "yes")

matrizLogis <- confusionMatrix(val$higher, Predmod)
matrizLogis
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction no yes
##        no   1   6
##        yes  3  89
##                                           
##                Accuracy : 0.9091          
##                  95% CI : (0.8344, 0.9576)
##     No Information Rate : 0.9596          
##     P-Value [Acc > NIR] : 0.9932          
##                                           
##                   Kappa : 0.1375          
##                                           
##  Mcnemar's Test P-Value : 0.5050          
##                                           
##             Sensitivity : 0.25000         
##             Specificity : 0.93684         
##          Pos Pred Value : 0.14286         
##          Neg Pred Value : 0.96739         
##              Prevalence : 0.04040         
##          Detection Rate : 0.01010         
##    Detection Prevalence : 0.07071         
##       Balanced Accuracy : 0.59342         
##                                           
##        'Positive' Class : no              
## 

La precisión general del modelo es del 90.91%, lo que indica que clasifica correctamente el 90.91% de los casos. Sin embargo, el valor de Kappa, que ajusta la precisión para tener en cuenta el azar, es bastante bajo (0.1375), lo que sugiere que el modelo podría estar mejorando solo marginalmente el rendimiento en comparación con una clasificación aleatoria.

La sensibilidad, que es la capacidad del modelo para identificar verdaderos positivos, es del 25%. Esto sugiere que el modelo no es muy bueno para identificar correctamente los casos positivos. Por otro lado, la especificidad, que es la capacidad del modelo para identificar verdaderos negativos, es alta (93.68%), lo que sugiere que el modelo es bastante bueno para evitar falsos positivos.

El valor predictivo positivo es del 14.28%, lo que significa que cuando el modelo predice que un estudiante no tendrá éxito, solo el 14.28% de las veces tiene razón. El valor predictivo negativo es alto (96.73%), lo que sugiere que cuando el modelo predice que un estudiante tendrá éxito, suele ser correcto en el 96.73% de los casos.

La prevalencia de casos negativos (estudiantes que no tienen éxito) es del 4.04%, mientras que la prevalencia de casos positivos (estudiantes que tienen éxito) es del 95.96%. La tasa de detección, que es la proporción de casos que el modelo detecta correctamente, es del 1.01% para casos negativos y del 10.10% para casos positivos.

En resumen el modelo es bueno para predecir.


CURVA ROC

library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
test_prob <- predict(mod2, newdata = val, type = "response")
test_roc <- roc(val$higher ~ test_prob, plot = TRUE, print.auc = TRUE)
## Setting levels: control = no, case = yes
## Setting direction: controls < cases

La sensibilidad como el comportamiento de los valores positivos y el AUC es de 0.61 que significa que es moderada y el modelo de predición logística de predicción es bueno.


CONCLUSIÓN

Los resultados del modelo indican la probabilidad de éxito académico en función de las variables consideradas en el análisis. Predice una baja probabilidad de éxito académico para un estudiante en particular, eso no significa que no puedan o no deban estudiar educación superior. Simplemente indica que, según las variables consideradas en el análisis, hay factores que podrían afectar negativamente su rendimiento académico.

Es fundamental considerar estos resultados como una herramienta adicional al tomar decisiones sobre la educación superior.

Los estudiantes deben evaluar sus propias habilidades, intereses, motivación y circunstancias personales, y para mejorar sus posibilidades de éxito, como buscar apoyo adicional, establecer metas claras y trabajar en el desarrollo de habilidades académicas y personales.