Introducción

El presente trabajo tiene como objetivo realizar un análisis descriptivo de la base de datos del rendimiento estudiantil, correspondiente al estudio realizado por Cortez y Silva (2008).

A partir de la información disponible en la base de datos, se seleccionaron variables numéricas y una variable categórica, con el propósito de analizar diferentes características de los datos mediante medidas de tendencia central, medidas de dispersión y cuantiles. Asimismo, se busca examinar la distribución de las variables, identificar posibles relaciones entre las variables numéricas y analizar las diferencias observadas según el sexo de los estudiantes como variable categórica.

1. Selección de la base de datos

Para la elaboración de este trabajo se tomó como referencia la base de datos relacionada con el rendimiento estudiantil correspondiente al estudio realizado por Cortez y Silva (2008).

La base presenta 30 variables, por lo cual se seleccionaron las siguientes para el análisis:

  • age: edad del estudiante.
  • Medu: nivel educativo de la madre.
  • Fedu: nivel educativo del padre.
  • studytime: tiempo semanal dedicado al estudio.
  • sex: sexo del estudiante.

De estas variables, age, Medu, Fedu y studytime corresponden a variables numéricas utilizadas para analizar sus relaciones. Por otra parte, sex corresponde a la variable categórica utilizada para realizar comparaciones en la edad de los estudiantes.

Importación de la base de datos

# Librerías
library(readxl)
library(ggplot2)
library(GGally)

setwd("~/Anto ( Doc )/Diplomado Anto sep/Modulo 2/Taller 1")

# Importación de la base de datos
datos <- read.csv("student1.csv", sep = ";")

# Estructura de la base
str(datos)
## 'data.frame':    395 obs. of  33 variables:
##  $ school    : chr  "GP" "GP" "GP" "GP" ...
##  $ sex       : chr  "F" "F" "F" "F" ...
##  $ age       : int  18 17 15 15 16 16 16 17 15 15 ...
##  $ address   : chr  "U" "U" "U" "U" ...
##  $ famsize   : chr  "GT3" "GT3" "LE3" "GT3" ...
##  $ Pstatus   : chr  "A" "T" "T" "T" ...
##  $ Medu      : int  4 1 1 4 3 4 2 4 3 3 ...
##  $ Fedu      : int  4 1 1 2 3 3 2 4 2 4 ...
##  $ Mjob      : chr  "at_home" "at_home" "at_home" "health" ...
##  $ Fjob      : chr  "teacher" "other" "other" "services" ...
##  $ reason    : chr  "course" "course" "other" "home" ...
##  $ guardian  : chr  "mother" "father" "mother" "mother" ...
##  $ traveltime: int  2 1 1 1 1 1 1 2 1 1 ...
##  $ studytime : int  2 2 2 3 2 2 2 2 2 2 ...
##  $ failures  : int  0 0 3 0 0 0 0 0 0 0 ...
##  $ schoolsup : chr  "yes" "no" "yes" "no" ...
##  $ famsup    : chr  "no" "yes" "no" "yes" ...
##  $ paid      : chr  "no" "no" "yes" "yes" ...
##  $ activities: chr  "no" "no" "no" "yes" ...
##  $ nursery   : chr  "yes" "no" "yes" "yes" ...
##  $ higher    : chr  "yes" "yes" "yes" "yes" ...
##  $ internet  : chr  "no" "yes" "yes" "yes" ...
##  $ romantic  : chr  "no" "no" "no" "yes" ...
##  $ famrel    : int  4 5 4 3 4 5 4 4 4 5 ...
##  $ freetime  : int  3 3 3 2 3 4 4 1 2 5 ...
##  $ goout     : int  4 3 2 2 2 2 4 4 2 1 ...
##  $ Dalc      : int  1 1 2 1 1 1 1 1 1 1 ...
##  $ Walc      : int  1 1 3 1 2 2 1 1 1 1 ...
##  $ health    : int  3 3 3 5 5 5 3 1 1 5 ...
##  $ absences  : int  6 4 10 2 4 10 0 6 0 0 ...
##  $ G1        : int  5 5 7 15 6 15 12 6 16 14 ...
##  $ G2        : int  6 5 8 14 10 15 12 5 18 15 ...
##  $ G3        : int  6 6 10 15 10 15 11 6 19 15 ...

2. Análisis de una variable numérica

Para el análisis de una variable numérica se seleccionó la variable age, correspondiente a la edad de los estudiantes.

Se calcularon diferentes medidas estadísticas con el propósito de analizar la tendencia central, la dispersión y la distribución de las edades.

2.1 Media

La media permite determinar la edad promedio de los estudiantes.

mean(datos$age, na.rm = TRUE)
## [1] 16.6962

La edad promedio de los estudiantes es de aproximadamente 16,7 años. Esto indica que, en promedio, los estudiantes de bachillerato incluidos en la base de datos tienen una edad cercana a los 17 años.

2.2 Mediana

La mediana corresponde al valor central de los datos cuando estos se encuentran ordenados.

median(datos$age, na.rm = TRUE)
## [1] 17

La mediana de la edad es de 17 años. Esto significa que el 50 % de los estudiantes tiene una edad menor o igual a 17 años, mientras que el otro 50 % tiene una edad mayor o igual a 17 años.

2.3 Varianza

La varianza permite medir el grado de dispersión de los datos con respecto a la media.

var(datos$age, na.rm = TRUE)
## [1] 1.628285

La varianza obtenida es de aproximadamente 1,63 años, lo que indica que las edades presentan una baja dispersión con respecto a la edad promedio.

2.4 Desviación estándar

La desviación estándar permite determinar qué tan dispersos se encuentran los datos alrededor de la media.

sd(datos$age, na.rm = TRUE)
## [1] 1.276043

La desviación estándar es de aproximadamente 1,27 años. Este resultado evidencia una baja dispersión de las edades con respecto a la media de 16,7 años.

2.5 Coeficiente de variación

El coeficiente de variación permite medir la variabilidad de los datos en relación con su media.

cv_age <- (sd(datos$age, na.rm = TRUE) / 
             mean(datos$age, na.rm = TRUE)) * 100

cv_age
## [1] 7.642712

El coeficiente de variación obtenido es de aproximadamente 7,64 %. Este resultado indica que existe una baja variabilidad de las edades con respecto a su promedio.

2.6 Cuantiles

Para complementar el análisis se calcularon los cuantiles correspondientes al 25 %, 50 % y 75 %.

cuantiles <- quantile(
  datos$age,
  probs = c(0.25, 0.50, 0.75),
  na.rm = TRUE
)

cuantiles
## 25% 50% 75% 
##  16  17  18
  • Q1= El 25% de los estudiantes tienen una edad menor o igual a 16 años
  • Q2= El 50% de los estudiantes tienen una edad menor o igual a 17 años
  • Q3= El 75% de los estudiantes tienen una edad menor o igual a 18 años
  • El 50 % central de los estudiantes presenta edades comprendidas entre 16 y 18 años.

2.7 Diagrama de caja y bigotes

El diagrama de caja permite observar la distribución de las edades, los cuantiles, la mediana y los posibles valores atípicos.

library(ggplot2)

ggplot(datos, aes(y = age)) +
  geom_boxplot(
    fill = "#00FA9A",
    color = "black"
  ) +
  labs(
    title = "Boxplot de la variable Edad",
    y = "Edad"
  ) +
  theme_minimal()

El boxplot evidencia que el 50 % de los estudiantes de bachillerato presenta edades entre 16 y 18 años, con una mediana de 17 años. Asimismo, se identifica un valor atípico correspondiente a un estudiante de 22 años. La concentración de las edades alrededor de los 16, 17 y 18 años refleja una baja dispersión de los datos, lo cual es consistente con una desviación estándar de 1,27 años y un coeficiente de variación de 7,64 %, indicando que las edades presentan poca variabilidad respecto a su media.

2.8 Histograma

El histograma permite observar la distribución de las edades y la frecuencia de estudiantes en cada grupo de edad.

# Histograma

ggplot(datos, aes(x = age)) +
  geom_histogram(
    bins = 30,
    fill = "#F08080",
    color = "black"
  ) +
  labs(
    title = "Distribución de la variable Edad",
    x = "Edad",
    y = "Frecuencia"
  ) +
  theme_minimal()

En la gráfica se observa que la mayor frecuencia corresponde a los estudiantes de 16 años, seguida por aquellos de 17 años. Asimismo, se presenta una cantidad de estudiantes con edades de 15 y 18 años. A partir de los 19 años, la frecuencia disminuye considerablemente, encontrándose pocos estudiantes con edades de 20, 21 y 22 años.

En términos generales, la distribución muestra una mayor concentración de estudiantes entre los 15 y 18 años, mientras que se observa una cola hacia la derecha, asociada a la presencia de estudiantes con edades de 21 y 22 años. Esto indica una ligera asimetría positiva en la distribución de las edades.

3. Relación entre las variables numéricas

Para analizar la relación entre las variables numéricas se seleccionaron cuatro variables de la base de datos:

  • age: edad del estudiante.
  • Medu: nivel educativo de la madre.
  • Fedu: nivel educativo del padre.
  • studytime:¨ tiempo semanal dedicado al estudio.
vars_numericas <- datos[, c(
  "age",
  "Medu",
  "Fedu",
  "studytime"
)]

head(vars_numericas)
##   age Medu Fedu studytime
## 1  18    4    4         2
## 2  17    1    1         2
## 3  15    1    1         2
## 4  15    4    2         3
## 5  16    3    3         2
## 6  16    4    3         2

3.1 Matriz de correlación

Se construyó una matriz de correlación con el propósito de identificar la relación existente entre las variables numéricas seleccionadas.

cor(vars_numericas, use = "complete.obs")
##                    age        Medu         Fedu    studytime
## age        1.000000000 -0.16365842 -0.163438069 -0.004140037
## Medu      -0.163658419  1.00000000  0.623455112  0.064944137
## Fedu      -0.163438069  0.62345511  1.000000000 -0.009174639
## studytime -0.004140037  0.06494414 -0.009174639  1.000000000

La relación más importante se encuentra entre Medu y Fedu, con una correlación de 0,623. Esto indica que existe una relación positiva: cuando aumenta el nivel educativo de la madre, también tiende a aumentar el nivel educativo del padre.

Por otro lado, studytime presenta correlaciones bajas con Fedu, Medu y age, por lo que no se observa una relación lineal importante entre estas variables dentro de los datos analizados.

3.2 Matriz de dispersión y correlaciones

Para complementar el análisis se construyó una matriz de dispersión, la cual permite observar gráficamente la relación entre las variables numéricas seleccionadas.

library(GGally)

ggpairs(vars_numericas)

La matriz de dispersión permite visualizar el comportamiento conjunto de las variables.

De acuerdo con los resultados, la relación más importante se presenta entre Medu y Fedu, lo cual coincide con el coeficiente de correlación de 0,623.

Esta relación indica que existe una asociación positiva entre el nivel educativo de la madre y el nivel educativo del padre.

4. Comparación según una variable categórica

Para realizar la comparación según una variable categórica se seleccionó:

  • Variable categórica: sex (sexo).
  • Variable numérica: age (edad).

El objetivo es comparar la edad promedio y la dispersión de las edades entre mujeres y hombres.

4.1 Media de edad por sexo

Se calculó la media de edad para cada categoría de la variable sex.

tapply(
  datos$age,
  datos$sex,
  mean,
  na.rm = TRUE
)
##        F        M 
## 16.73077 16.65775

Los resultados muestran que la edad promedio de las mujeres es de 16,73 años, mientras que la edad promedio de los hombres es de 16,66 años.

Por lo tanto, las mujeres presentan una edad promedio ligeramente superior a la de los hombres, con una diferencia aproximada de 0,07 años.

Sin embargo, esta diferencia es pequeña, por lo que las edades promedio de ambos grupos son muy similares.

4.2 Desviación estándar de edad por sexo

Se calculó la desviación estándar de la edad para cada grupo.

tapply(
  datos$age,
  datos$sex,
  sd,
  na.rm = TRUE
)
##        F        M 
## 1.201696 1.356181

Los resultados obtenidos muestran una desviación estándar de aproximadamente:

  • Mujeres: 1,20 años
  • Hombres: 1,36 años

Los hombres presentan una mayor dispersión en las edades, debido a que su desviación estándar es superior a la de las mujeres.

Por el contrario, las mujeres presentan una menor dispersión, lo que indica que sus edades son ligeramente más homogéneas alrededor de su promedio.

En conclusión, aunque las edades promedio de hombres y mujeres son muy similares, las mujeres presentan una edad promedio ligeramente mayor, mientras que los hombres presentan una mayor variabilidad en sus edades.

5. Boxplot comparativo

Para complementar la comparación entre hombres y mujeres se construyó un diagrama de caja de la edad según el sexo.

ggplot(datos, aes(x = sex, y = age)) +
  geom_boxplot(
    fill = "#FFDAB9",
    color = "black"
  ) +
  labs(
    title = "Distribución de la edad según sexo",
    x = "Sexo",
    y = "Edad"
  ) +
  theme_minimal()

El boxplot comparativo permite observar la distribución de las edades para hombres y mujeres.

Los resultados muestran que las distribuciones son bastante similares, lo cual coincide con las edades promedio obtenidas para ambos grupos.

También se puede observar una mayor dispersión en el grupo de hombres, resultado que coincide con la desviación estándar de 1,36 años, frente a 1,20 años para las mujeres.

Por lo tanto, el análisis permite concluir que las mujeres presentan una edad promedio ligeramente superior, mientras que los hombres presentan una mayor dispersión en sus edades.

6. Conclusiones

La población estudiantil analizada presenta una alta concentración en edades entre los 16 y 18 años, con una edad promedio de 16,7 años y una baja variabilidad. La desviación estándar de 1,27 años y el coeficiente de variación de 7,64 % evidencian que las edades son relativamente homogéneas. Sin embargo, la presencia de estudiantes de 21 y 22 años genera una ligera asimetría positiva y un valor atípico identificado en el boxplot.

Entre las variables numéricas analizadas, la relación más significativa se presenta entre el nivel educativo de la madre (Medu) y del padre (Fedu), con una correlación de 0,623, lo que indica una relación positiva fuerte. Esto sugiere que, en general, un mayor nivel educativo de uno de los padres tiende a estar asociado con un mayor nivel educativo del otro. Por el contrario, el tiempo dedicado al estudio (studytime) no presenta una relación lineal significativa con la edad ni con el nivel educativo de los padres.

Finalmente, el análisis por sexo evidencia que las diferencias en la edad de los estudiantes son mínimas. Las mujeres presentan una edad promedio de 16,73 años, mientras que los hombres tienen un promedio de 16,66 años, con una diferencia de apenas 0,07 años. Aunque los hombres presentan una dispersión ligeramente mayor en sus edades, en términos generales, tanto hombres como mujeres mantienen un comportamiento similar, por lo que el sexo no representa una diferencia relevante respecto a la edad dentro de la población analizada.