Este taller aplica conceptos básicos de estadística descriptiva utilizando la base de datos rendimiento acedemico de los estudiantes (Students Performance Dataset) con variables numéricas y categóricas. Se analizan medidas de tendencia central y dispersión, se exploran relaciones entre variables mediante gráficos y correlaciones, y se comparan grupos definidos por una variable categórica.
El conjunto de datos utilizado en este taller fue obtenido de Kaggle:
Para importar lainformación a R se utilizará el paquete
readxl, que permite trabajar con archivos en formato
Excel.
library(readxl)
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
estudiantes <- read_excel("Datos-Diplomado-expo.xlsx")
Una vez importada la información, se verificó que la base de datos se
encuentre almacenada correctamente en el objeto
estudiantes.
estudiantes
## # A tibble: 2,392 × 15
## StudentID Age Gender Ethnicity ParentalEducation StudyTimeWeekly Absences
## <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 1001 17 1 0 2 1.98337228078547… 7
## 2 1002 18 0 0 1 1540875605584670 0
## 3 1003 15 0 2 3 421056976881226 26
## 4 1004 17 1 0 3 1.00288294739582… 14
## 5 1005 17 1 0 2 4.67249527297132… 17
## 6 1006 18 0 0 1 8191218545250180 0
## 7 1007 15 0 1 1 1.56016804746992… 10
## 8 1008 15 1 1 4 1.5424496305808E… 22
## 9 1009 17 0 0 0 4562007558047700 1
## 10 1010 16 1 0 1 1.84444663630972… 0
## # ℹ 2,382 more rows
## # ℹ 8 more variables: Tutoring <dbl>, ParentalSupport <dbl>,
## # Extracurricular <dbl>, Sports <dbl>, Music <dbl>, Volunteering <dbl>,
## # GPA <chr>, GradeClass <chr>
Para el análisis numérico se seleccionó la variable
Absences, que representa el número de ausencias de cada
estudiante, es útil para analizar su comportamiento académico y permite
calcular medidas como media, mediana, varianza y desviación estándar,
además de gráficos como histogramas y diagramas de caja.
mean(estudiantes$Absences, na.rm = TRUE)
## [1] 14.54139
median(estudiantes$Absences, na.rm = TRUE)
## [1] 15
var(estudiantes$Absences, na.rm = TRUE)
## [1] 71.69716
sd(estudiantes$Absences, na.rm = TRUE)
## [1] 8.467417
sd(estudiantes$Absences, na.rm = TRUE) / mean(estudiantes$Absences, na.rm = TRUE)
## [1] 0.5822977
quantile(estudiantes$Absences, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
## 0% 25% 50% 75% 100%
## 0 7 15 22 29
Los valores obtenidos para la variable Absences fueron: •Media: 14.54 •Mediana: 15 •Varianza: 71.69 •Desviación estándar: 8.47 •Coeficiente de variación: 0.58 •Cuantiles: 0% → 0 25% → 7 50% → 15 75% → 22 100% → 29
La media (14.54) y la mediana (15) son similares, indicando una distribución equilibrada. La desviación estándar (8.47) muestra una variabilidad considerable. El 25% tiene ≤7 ausencias, el 50% ≤15 y el 75% ≤22, con un máximo de 29, esto evidencia diferencias importantes en las ausencias.
boxplot(estudiantes$Absences,
main = "Diagrama de Caja y Bigotes de Absences",
col = "#F7C6D0",
border = "#F4A7B9",
ylab = "Número de ausencias")
El diagrama de caja y bigotes muestra una mediana de 15 ausencias y una variabilidad considerable (7–22). Los valores cercanos a 29 indican estudiantes con ausencias elevadas.
hist(estudiantes$Absences,
main = "Histograma de Absences",
col = "#F2B8C6",
border = "#F4A7B9",
xlab = "Número de ausencias",
breaks = 20)
El histograma muestra una distribución amplia de ausencias (0–29), con variabilidad y una ligera concentración hacia valores altos.
estudiantes[, c("Absences", "Age")]
## # A tibble: 2,392 × 2
## Absences Age
## <dbl> <dbl>
## 1 7 17
## 2 0 18
## 3 26 15
## 4 14 17
## 5 17 17
## 6 0 18
## 7 10 15
## 8 22 15
## 9 1 17
## 10 0 16
## # ℹ 2,382 more rows
estudiantes_num <- as.data.frame(lapply(estudiantes[, c("Absences", "Age")], as.numeric))
pairs(estudiantes_num,
main = "Matriz de Dispersión",
col = "#F2B8C6",
pch = 19)
cor (estudiantes_num, use = "complete.obs")
## Absences Age
## Absences 1.00000000 -0.01151091
## Age -0.01151091 1.00000000
La correlación entre las variables Absences y Age es de –0.0115. Este valor se encuentra muy próximo a cero, lo que indica que no existe una relación lineal significativa entre la edad del estudiante y el número de ausencias.
plot(estudiantes_num$Age, estudiantes_num$Absences,
main = "Relación entre Edad y Ausencias",
xlab = "Edad",
ylab = "Número de Ausencias",
col = "#F2B8C6",
pch = 19)
# 5. Comparación según una Variable Categórica
Se agrupan los datos según la variable categórica Gender
para comparar la media y desviación estándar de la variable
Absences.
resumen_genero <- estudiantes %>%
group_by(Gender) %>%
summarise(
Media_Ausencias = round(mean(Absences, na.rm = TRUE), 4),
Desv_Estandar = round(sd(Absences, na.rm = TRUE), 4),
Total = n() )
print(resumen_genero)
## # A tibble: 2 × 4
## Gender Media_Ausencias Desv_Estandar Total
## <dbl> <dbl> <dbl> <int>
## 1 0 14.4 8.52 1170
## 2 1 14.7 8.41 1222
Grupo 0: Registra una media de 14.3556 ausencias con una desviación estándar de 8.5226.
Grupo 1: Registra una media de 14.7193 ausencias con una desviación estándar de 8.4139.
Ambos grupos presentan comportamientos de inasistencia prácticamente idénticos en promedio y dispersión.
boxplot(Absences ~ Gender, data = estudiantes,
main = "Comparación de Ausencias según Género",
xlab = "Género", ylab = "Número de Ausencias",
col = c("#F4A7B9", "#F7C6D0"))