Cargar datos

library(readr)

datos <- read_csv2("data/ACT122.csv")
## ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
## Rows: 759 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (2): level_attendance, level_internet
## dbl (6): hours_studied, previous_score, attendance, sleep_hours, internet_us...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
summary(datos)
##  hours_studied    previous_score     attendance      level_attendance
##  Min.   : 0.024   Min.   : 20.89   Min.   : 54.80   Length   :759    
##  1st Qu.: 3.100   1st Qu.: 56.55   1st Qu.: 78.72   N.unique :  3    
##  Median : 4.116   Median : 66.56   Median : 85.24   N.blank  :  0    
##  Mean   : 4.249   Mean   : 66.83   Mean   : 85.44   Min.nchar:  4    
##  3rd Qu.: 5.056   3rd Qu.: 76.62   3rd Qu.: 91.80   Max.nchar:  5    
##  Max.   :19.886   Max.   :134.08   Max.   :124.26                    
##   sleep_hours     internet_usage     level_internet  final_score     
##  Min.   : 4.093   Min.   : 0.088   Length   :759    Min.   :  4.408  
##  1st Qu.: 6.279   1st Qu.: 2.220   N.unique :  3    1st Qu.: 81.523  
##  Median : 7.030   Median : 3.015   N.blank  :  0    Median : 90.728  
##  Mean   : 7.008   Mean   : 3.194   Min.nchar:  4    Mean   : 88.516  
##  3rd Qu.: 7.712   3rd Qu.: 3.804   Max.nchar:  5    3rd Qu.: 99.996  
##  Max.   :10.243   Max.   :29.062                    Max.   :100.000

Base de datos

library(DT)
# Cargar los datos
library(readr)
datos <- read_csv2("data/ACT122.csv")
## ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
## Rows: 759 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (2): level_attendance, level_internet
## dbl (6): hours_studied, previous_score, attendance, sleep_hours, internet_us...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
DT::datatable(
  head(datos),
  fillContainer = FALSE,
  options = list(pageLength = 8)
)

Analisis de variables cualitativas y ordinales

library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
tabla_nivel_asistencia <- datos %>%
  count(level_attendance, name = "Frecuencia") %>%
  mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
  arrange(factor(level_attendance, levels = c("Baja", "Media", "Alta")))

tabla_nivel_asistencia
## # A tibble: 3 × 3
##   level_attendance Frecuencia `Frecuencia relativa`
##   <chr>                 <int>                 <dbl>
## 1 Baja                      3                 0.004
## 2 Media                   222                 0.292
## 3 Alta                    534                 0.704
tabla_nivel_internet <- datos %>%
  count(level_internet, name = "Frecuencia") %>%
  mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
  arrange(factor(level_internet, levels = c("Baja", "Media", "Alta")))

tabla_nivel_internet
## # A tibble: 3 × 3
##   level_internet Frecuencia `Frecuencia relativa`
##   <chr>               <int>                 <dbl>
## 1 Baja                  151                0.199 
## 2 Media                 574                0.756 
## 3 Alta                   34                0.0448

Indicadores de variables cuantitativas

# Indicadores de variables cuantitativas

library(summarytools)
library(dplyr)

indicadores_cuantitativos <- datos %>%
  select(hours_studied, previous_score,attendance, sleep_hours,internet_usage, final_score) %>%
  descr()

indicadores_cuantitativos
## Descriptive Statistics  
## datos  
## N: 759  
## 
##                     attendance   final_score   hours_studied   internet_usage   previous_score
## ----------------- ------------ ------------- --------------- ---------------- ----------------
##              Mean        85.44         88.52            4.25             3.19            66.83
##           Std.Dev         9.86         11.57            1.98             2.10            15.70
##               Min        54.80          4.41            0.02             0.09            20.89
##                Q1        78.71         81.51            3.10             2.22            56.54
##            Median        85.24         90.73            4.12             3.02            66.56
##                Q3        91.80        100.00            5.06             3.81            76.67
##               Max       124.26        100.00           19.89            29.06           134.08
##               MAD         9.71         13.72            1.45             1.17            14.87
##               IQR        13.07         18.47            1.96             1.58            20.07
##                CV         0.12          0.13            0.47             0.66             0.23
##          Skewness         0.11         -1.35            2.61             5.67             0.12
##       SE.Skewness         0.09          0.09            0.09             0.09             0.09
##          Kurtosis         0.11          3.74           15.20            50.33             0.53
##           N.Valid       759.00        759.00          759.00           759.00           759.00
##                 N       759.00        759.00          759.00           759.00           759.00
##         Pct.Valid       100.00        100.00          100.00           100.00           100.00
## 
## Table: Table continues below
## 
##  
## 
##                     sleep_hours
## ----------------- -------------
##              Mean          7.01
##           Std.Dev          1.03
##               Min          4.09
##                Q1          6.28
##            Median          7.03
##                Q3          7.71
##               Max         10.24
##               MAD          1.08
##               IQR          1.43
##                CV          0.15
##          Skewness         -0.01
##       SE.Skewness          0.09
##          Kurtosis         -0.24
##           N.Valid        759.00
##                 N        759.00
##         Pct.Valid        100.00

Comparaciones

Comparacion por nivel de asistencia

# Comparación por nivel de asistencia

comparacion_asistencia <- datos %>%
  group_by(level_attendance) %>%
  summarise(
    horas_estudio_media = round(mean(hours_studied), 2),
    horas_estudio_mediana = round(median(hours_studied), 2),
    puntaje_previo_media = round(mean(previous_score), 2),
    puntaje_previo_mediana = round(median(previous_score), 2),
    horas_sueno_media = round(mean(sleep_hours), 2),
    uso_internet_media = round(mean(internet_usage), 2),
    puntaje_final_media = round(mean(final_score), 2),
    puntaje_final_mediana = round(median(final_score), 2)
  )

comparacion_asistencia
## # A tibble: 3 × 9
##   level_attendance horas_estudio_media horas_estudio_mediana
##   <chr>                          <dbl>                 <dbl>
## 1 Alta                            4.33                  4.14
## 2 Baja                            4.29                  4.67
## 3 Media                           4.06                  4.01
## # ℹ 6 more variables: puntaje_previo_media <dbl>, puntaje_previo_mediana <dbl>,
## #   horas_sueno_media <dbl>, uso_internet_media <dbl>,
## #   puntaje_final_media <dbl>, puntaje_final_mediana <dbl>
tabla_nivel_asistencia %>%
  slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
##   level_attendance Frecuencia `Frecuencia relativa`
##   <chr>                 <int>                 <dbl>
## 1 Alta                    534                 0.704

comparacion por nivel de uso de internet

# Comparación por nivel de uso de internet

comparacion_internet <- datos %>%
  group_by(level_internet) %>%
  summarise(
    horas_estudio_media = round(mean(hours_studied), 2),
    horas_estudio_mediana = round(median(hours_studied), 2),
    puntaje_previo_media = round(mean(previous_score), 2),
    puntaje_previo_mediana = round(median(previous_score), 2),
    horas_sueno_media = round(mean(sleep_hours), 2),
    horas_sueno_mediana = round(median(sleep_hours), 2),
    puntaje_final_media = round(mean(final_score), 2),
    puntaje_final_mediana = round(median(final_score), 2)
  )

comparacion_internet
## # A tibble: 3 × 9
##   level_internet horas_estudio_media horas_estudio_mediana puntaje_previo_media
##   <chr>                        <dbl>                 <dbl>                <dbl>
## 1 Alta                          4.45                  4.22                 64.8
## 2 Baja                          4.3                   4.18                 67.6
## 3 Media                         4.22                  4.1                  66.8
## # ℹ 5 more variables: puntaje_previo_mediana <dbl>, horas_sueno_media <dbl>,
## #   horas_sueno_mediana <dbl>, puntaje_final_media <dbl>,
## #   puntaje_final_mediana <dbl>
tabla_nivel_internet %>%
  slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
##   level_internet Frecuencia `Frecuencia relativa`
##   <chr>               <int>                 <dbl>
## 1 Media                 574                 0.756

tabla de frecuencia puntaje final

# Tabla de frecuencias: puntaje final

tabla_puntaje_final <- datos %>%
  mutate(intervalo = cut(
    final_score,
    breaks = 3,
    include.lowest = TRUE
  )) %>%
  count(intervalo, name = "Frecuencia") %>%
  mutate(
    `Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 5)
  )

tabla_puntaje_final
## # A tibble: 3 × 3
##   intervalo   Frecuencia `Frecuencia relativa`
##   <fct>            <int>                 <dbl>
## 1 [4.31,36.3]          1               0.00132
## 2 (36.3,68.1]         43               0.0566 
## 3 (68.1,100]         715               0.942

Interpretación de resultados

Variables cualitativas

En cuanto al nivel de asistencia, la categoría más frecuente (moda) es “Alta”, con el 70,4 % de los casos (534 de 759 estudiantes). Le sigue la categoría “Media”, con el 29,2 %, y por último “Baja”, con el 0,4 %. En el nivel de uso de internet, la categoría más frecuente es “Media”, con el 75,6 % de los casos, mientras que “Baja” representa el 19,9 % y “Alta” el 4,5 %. En general, se puede observar que la mayoría de los estudiantes tiene una asistencia alta y un uso de internet principalmente moderado.

Forma de la distribución de las variables cuantitativas

Al observar los valores de asimetría (Skewness), se encuentran diferencias entre las variables. internet_usage presenta una asimetría positiva bastante alta (5,67) y hours_studied también presenta una asimetría positiva (2,61). Esto significa que en estas variables hay algunos estudiantes con valores mucho más altos que la mayoría. Por ejemplo, en hours_studied el valor máximo es de 19,89 horas, mientras que la mediana es de 4,12 horas. Debido a esta diferencia, la mediana puede representar mejor el comportamiento de los datos que la media en estas variables.

Por otro lado, final_score presenta una asimetría negativa de -1,35, lo que indica que la mayoría de los puntajes se encuentran en valores altos y que hay algunos puntajes más bajos que hacen que la distribución se extienda hacia la izquierda. Las variables attendance, previous_score y sleep_hours tienen valores de asimetría cercanos a cero (0,11, 0,12 y -0,01, respectivamente), por lo que sus distribuciones son aproximadamente simétricas. En estos casos, la media y la mediana tienen valores más cercanos y permiten representar mejor los datos.

Comparación por grupos

Al comparar las horas de estudio según el nivel de asistencia, se observa que el grupo con asistencia “Baja” tiene la mediana más alta de horas estudiadas (4,67 horas), seguido por el grupo “Alta” (4,14 horas) y el grupo “Media” (4,01 horas). Sin embargo, este resultado debe tomarse con cuidado, ya que el grupo de asistencia baja representa solamente el 0,4 % de los estudiantes. Por esta razón, no sería correcto concluir que los estudiantes que asisten menos estudian más. Lo que sí se puede decir es que, dentro de esta base de datos, el pequeño grupo con asistencia baja presentó una mediana de horas de estudio mayor.

En cuanto al nivel de uso de internet, el grupo “Bajo” presentó el puntaje previo promedio más alto (67,6), seguido del grupo “Media” (66,8) y del grupo “Alta” (64,8). Esto muestra que, en los datos analizados, los estudiantes con mayor uso de internet no fueron quienes tuvieron el puntaje previo promedio más alto. Sin embargo, estos resultados son solamente descriptivos y no permiten afirmar que el uso de internet cause un aumento o disminución en el rendimiento académico.

Consideración sobre la variable de asistencia

Se encontró que la variable attendance tiene un valor máximo de 124,26, aunque si se interpreta como un porcentaje de asistencia, normalmente debería estar entre 0 y 100 %. Por lo tanto, este valor es una característica particular de la base de datos. Se decidió mantener el dato tal como aparece originalmente y mencionarlo como una observación dentro del análisis.

Conclusión

En conclusión, el análisis de las 759 observaciones permitió conocer algunas características relacionadas con la preparación académica, la asistencia y el uso de internet antes de un examen. En las variables cualitativas, la mayoría de los estudiantes presentó un nivel de asistencia “Alto” (70,4 %), mientras que el nivel de uso de internet más frecuente fue “Medio” (75,6 %). En las variables cuantitativas se encontraron diferentes comportamientos en las distribuciones. Las horas estudiadas tuvieron una media de 4,25 horas y una asimetría positiva marcada, mientras que el puntaje final tuvo una media de 88,52 puntos y una asimetría negativa, mostrando una mayor concentración de los resultados en puntajes altos. Las comparaciones también permitieron observar variaciones en las horas de estudio y en los puntajes según los niveles de asistencia y uso de internet. Sin embargo, como se trata de un análisis descriptivo, estos resultados no permiten establecer que una determinada conducta sea la causa de un mejor o peor rendimiento. En general, las tablas de frecuencia y los diferentes indicadores estadísticos permitieron organizar y comprender mejor el comportamiento de las variables de la base de datos.