El rendimiento académico de los estudiantes universitarios está influenciado por múltiples factores relacionados con sus hábitos personales, condiciones sociofamiliares, características demográficas y estilos de vida. Entender cómo estas variables se asocian entre sí puede ayudar a identificar perfiles estudiantiles diferenciados y brindar información valiosa para diseñar estrategias educativas más personalizadas.

En este estudio se analiza un conjunto de datos que recoge información sobre diversos hábitos de estudiantes, como horas de estudio, uso de redes sociales, calidad de sueño, frecuencia de ejercicio, participación en actividades extracurriculares, calidad de la dieta, nivel educativo de los padres, género, edad, entre otros. El objetivo principal es descubrir patrones latentes de comportamiento que puedan estar relacionados con el desempeño académico (medido por el exam_score) y agrupar a los estudiantes en perfiles homogéneos.

Se emplean técnicas estadísticas multivariadas como el Análisis de Correspondencias Múltiples (MCA) para representar gráficamente la estructura de las variables categóricas y detectar agrupamientos naturales. Posteriormente, se aplica análisis de conglomerados (K-means) sobre las coordenadas factoriales del MCA para identificar perfiles estudiantiles, los cuales se interpretan y describen mediante análisis descriptivos, pruebas de hipótesis (ANOVA) y comparaciones post hoc (Tukey HSD y emmeans).

Objetivo general:

Identificar y describir perfiles estudiantiles en función de sus hábitos y características personales, y analizar su relación con el rendimiento académico.

Ojetivos específicos:

# ===============================
# CARGA DE LIBRERÍAS Y DATOS
# ===============================
library(FactoMineR)
library(factoextra)
library(corrplot)
library(dplyr)
library(ggplot2)
library(readr)

student <- read_csv("student_habits_performance.csv")
student <- as.data.frame(unclass(student), stringsAsFactors = TRUE)

Este bloque inicial tiene como objetivo preparar el entorno de trabajo en R para el análisis estadístico de los datos:

Se cargan las librerías necesarias:

# ===============================
# ANÁLISIS DESCRIPTIVO
# ===============================
head(student, 10)
##    student_id age gender study_hours_per_day social_media_hours netflix_hours
## 1       S1000  23 Female                 0.0                1.2           1.1
## 2       S1001  20 Female                 6.9                2.8           2.3
## 3       S1002  21   Male                 1.4                3.1           1.3
## 4       S1003  23 Female                 1.0                3.9           1.0
## 5       S1004  19 Female                 5.0                4.4           0.5
## 6       S1005  24   Male                 7.2                1.3           0.0
## 7       S1006  21 Female                 5.6                1.5           1.4
## 8       S1007  21 Female                 4.3                1.0           2.0
## 9       S1008  23 Female                 4.4                2.2           1.7
## 10      S1009  18 Female                 4.8                3.1           1.3
##    part_time_job attendance_percentage sleep_hours diet_quality
## 1             No                  85.0         8.0         Fair
## 2             No                  97.3         4.6         Good
## 3             No                  94.8         8.0         Poor
## 4             No                  71.0         9.2         Poor
## 5             No                  90.9         4.9         Fair
## 6             No                  82.9         7.4         Fair
## 7            Yes                  85.8         6.5         Good
## 8            Yes                  77.7         4.6         Fair
## 9             No                 100.0         7.1         Good
## 10            No                  95.4         7.5         Good
##    exercise_frequency parental_education_level internet_quality
## 1                   6                   Master          Average
## 2                   6              High School          Average
## 3                   1              High School             Poor
## 4                   4                   Master             Good
## 5                   3                   Master             Good
## 6                   1                   Master          Average
## 7                   2                   Master             Poor
## 8                   0                 Bachelor          Average
## 9                   3                 Bachelor             Good
## 10                  5                 Bachelor             Good
##    mental_health_rating extracurricular_participation exam_score
## 1                     8                           Yes       56.2
## 2                     8                            No      100.0
## 3                     1                            No       34.3
## 4                     1                           Yes       26.8
## 5                     1                            No       66.4
## 6                     4                            No      100.0
## 7                     4                            No       89.8
## 8                     8                            No       72.6
## 9                     1                            No       78.9
## 10                   10                           Yes      100.0
summary(select(student, where(is.numeric)))
##       age        study_hours_per_day social_media_hours netflix_hours  
##  Min.   :17.00   Min.   :0.00        Min.   :0.000      Min.   :0.000  
##  1st Qu.:18.75   1st Qu.:2.60        1st Qu.:1.700      1st Qu.:1.000  
##  Median :20.00   Median :3.50        Median :2.500      Median :1.800  
##  Mean   :20.50   Mean   :3.55        Mean   :2.506      Mean   :1.820  
##  3rd Qu.:23.00   3rd Qu.:4.50        3rd Qu.:3.300      3rd Qu.:2.525  
##  Max.   :24.00   Max.   :8.30        Max.   :7.200      Max.   :5.400  
##  attendance_percentage  sleep_hours    exercise_frequency mental_health_rating
##  Min.   : 56.00        Min.   : 3.20   Min.   :0.000      Min.   : 1.000      
##  1st Qu.: 78.00        1st Qu.: 5.60   1st Qu.:1.000      1st Qu.: 3.000      
##  Median : 84.40        Median : 6.50   Median :3.000      Median : 5.000      
##  Mean   : 84.13        Mean   : 6.47   Mean   :3.042      Mean   : 5.438      
##  3rd Qu.: 91.03        3rd Qu.: 7.30   3rd Qu.:5.000      3rd Qu.: 8.000      
##  Max.   :100.00        Max.   :10.00   Max.   :6.000      Max.   :10.000      
##    exam_score    
##  Min.   : 18.40  
##  1st Qu.: 58.48  
##  Median : 70.50  
##  Mean   : 69.60  
##  3rd Qu.: 81.33  
##  Max.   :100.00
summary(select(student, where(~ is.character(.) | is.factor(.))))
##    student_id     gender    part_time_job diet_quality parental_education_level
##  S1000  :  1   Female:481   No :785       Fair:437     Bachelor   :350         
##  S1001  :  1   Male  :477   Yes:215       Good:378     High School:392         
##  S1002  :  1   Other : 42                 Poor:185     Master     :167         
##  S1003  :  1                                           None       : 91         
##  S1004  :  1                                                                   
##  S1005  :  1                                                                   
##  (Other):994                                                                   
##  internet_quality extracurricular_participation
##  Average:391      No :682                      
##  Good   :447      Yes:318                      
##  Poor   :162                                   
##                                                
##                                                
##                                                
## 
boxplot.stats(student$age)
## $stats
## [1] 17.0 18.5 20.0 23.0 24.0
## 
## $n
## [1] 1000
## 
## $conf
## [1] 19.77516 20.22484
## 
## $out
## numeric(0)
# Agrupación por edad
student$Grupo_Age <- as.factor(cut(student$age, breaks = c(17.0, 18.5, 20.0, 23.0, Inf), right = FALSE))
table(student$Grupo_Age)
## 
## [17,18.5) [18.5,20)   [20,23)  [23,Inf) 
##       250       113       384       253

En esta etapa del análisis se lleva a cabo una exploración descriptiva del conjunto de datos con el fin de comprender la estructura general de las variables y preparar la información para los análisis posteriores. Inicialmente, se visualizan las primeras veinte observaciones para examinar el formato de los registros y verificar la correcta importación de los datos. Luego, se generan resúmenes estadísticos de las variables cuantitativas, lo que permite identificar medidas como la media, la mediana, los valores mínimos y máximos, así como posibles valores atípicos en variables como la edad, para la cual se aplica un análisis adicional mediante boxplot.stats(). De forma complementaria, se exploran las variables cualitativas para conocer su distribución y frecuencias. Como parte del análisis preparatorio, se construye una nueva variable categórica llamada Grupo_Age, la cual clasifica a los estudiantes en cuatro rangos de edad: de 17 a menos de 18.5 años, de 18.5 a menos de 20 años, de 20 a menos de 23 años, y de 23 años en adelante. Esta agrupación se realiza utilizando la función cut() y su distribución se examina mediante una tabla de frecuencias, con el propósito de utilizar este nuevo factor como variable explicativa en los análisis posteriores.

Análisis de Correspondencias Múltiples (MCA)

En esta sección se lleva a cabo un Análisis de Correspondencias Múltiples (MCA), una técnica estadística multivariada diseñada para explorar asociaciones entre variables categóricas. Para ello, se seleccionan siete variables cualitativas del conjunto de datos original, las cuales se almacenan en un nuevo objeto denominado MCA.student. Estas variables representan aspectos clave de los hábitos y características de los estudiantes, tales como su participación en actividades extracurriculares, calidad del acceso a internet, nivel educativo de los padres, entre otros.

Una vez conformado este subconjunto de variables categóricas, se aplica la función MCA() del paquete FactoMineR para calcular el modelo factorial, estableciendo el parámetro graph = FALSE para evitar la generación automática de gráficos durante la ejecución. Posteriormente, se utiliza la función get_eigenvalue() para extraer los autovalores del análisis, los cuales indican la cantidad de variabilidad explicada por cada dimensión factorial. Estos valores son fundamentales para interpretar cuántas dimensiones se retendrán en los análisis y visualizaciones posteriores, con base en su relevancia estadística.

# ===============================
# ANÁLISIS DE CORRESPONDENCIAS MÚLTIPLES (MCA)
# ===============================
MCA.student <- student[, c(3,7,10,12,13,15,17)]
res.mca <- MCA(MCA.student, graph = FALSE)
eigenval <- get_eigenvalue(res.mca)
eigenval
##        eigenvalue variance.percent cumulative.variance.percent
## Dim.1   0.1618550         8.092751                    8.092751
## Dim.2   0.1603499         8.017494                   16.110244
## Dim.3   0.1585123         7.925617                   24.035861
## Dim.4   0.1547959         7.739794                   31.775656
## Dim.5   0.1522175         7.610874                   39.386529
## Dim.6   0.1478972         7.394862                   46.781391
## Dim.7   0.1477945         7.389724                   54.171115
## Dim.8   0.1417576         7.087881                   61.258996
## Dim.9   0.1396908         6.984542                   68.243539
## Dim.10  0.1321650         6.608251                   74.851790
## Dim.11  0.1314387         6.571936                   81.423727
## Dim.12  0.1263347         6.316737                   87.740464
## Dim.13  0.1250834         6.254168                   93.994632
## Dim.14  0.1201074         6.005368                  100.000000

La tabla de resultados presentada corresponde a los autovalores y proporciones de varianza explicada por cada dimensión del Análisis de Correspondencias Múltiples (MCA). Este tipo de salida permite evaluar cuánta información (variabilidad) del conjunto de variables categóricas es capturada por cada eje factorial del espacio reducido generado por el MCA.

Interpretación de los resultados:

Las dos primeras dimensiones explican una proporción moderada de la variabilidad total (16.11%), por lo que son útiles para una visualización inicial. Sin embargo, para un análisis más completo, se recomienda considerar entre 4 y 7 dimensiones, dado que cada una aporta de forma no despreciable a la comprensión de las asociaciones entre categorías. Estas dimensiones adicionales pueden ser utilizadas en técnicas posteriores como clustering o clasificación.

Gráficos MCA

La gráfica presentada corresponde a un biplot factorial del Análisis de Correspondencias Múltiples (MCA), en donde se representan simultáneamente las observaciones (estudiantes) y las categorías de las variables cualitativas activas proyectadas sobre las dos primeras dimensiones factoriales. Estas dimensiones —Dim1 (8.1%) y Dim2 (8%)— explican conjuntamente aproximadamente el 16.1% de la variabilidad total del sistema de datos, lo cual es típico en este tipo de análisis con múltiples variables categóricas.

# Gráficos MCA
fviz_mca_biplot(res.mca, repel = TRUE, ggtheme = theme_minimal())

Interpretación técnica del gráfico:

Ejes y varianza explicada:

  • Eje horizontal (Dim1): es el componente principal que explica el mayor porcentaje de variabilidad (8.1%). Diferencia principalmente las categorías de calidad de internet, participación extracurricular, educación parental y tipo de trabajo.

  • Eje vertical (Dim2): explica un 8% adicional, y está más vinculado a la dieta, género, y ciertas categorías etarias (como el grupo [23,Inf)).

  • Cada punto azul representa a un estudiante. Aquellos que están más alejados del centro (coordenadas 0,0) presentan perfiles más diferenciados, mientras que los más cercanos tienen características promedio o neutras.

Distribución de las categorías (etiquetas rojas):

  • Las etiquetas en rojo representan las categorías de las variables cualitativas.

  • La posición de cada categoría indica su contribución a la formación de las dimensiones. Por ejemplo:

  • La categoría diet_quality_Poor está situada en el cuadrante superior derecho, indicando una alta asociación con esa combinación de dimensiones.

  • part_time_job=Yes se ubica en el extremo izquierdo, opuesta a part_time_job=No, mostrando una fuerte diferenciación sobre Dim1.

  • gender=Female y gender=Male están bien separados en el eje vertical, lo que sugiere que Dim2 discrimina principalmente por género.

  • Categorías como internet_quality=Poor o extracurricular_participation=No también aparecen alejadas, indicando perfiles diferenciados.

Relaciones e interpretaciones clave:

  • Categorías cercanas entre sí (por ejemplo, diet_quality=Good y internet_quality=Average) indican combinaciones frecuentes en los estudiantes.

  • Las categorías opuestas en el eje (por ejemplo, gender=Male vs. gender=Female) muestran que tienden a ser representadas por subgrupos distintos.

  • El hecho de que no todas las categorías estén alineadas sobre los ejes principales indica que la variabilidad se reparte en más de dos dimensiones, por lo cual sería recomendable complementar esta visualización con análisis de contribuciones y cos² (calidad de representación).

El biplot obtenido permite visualizar las relaciones estructurales entre las categorías de las variables cualitativas y los perfiles individuales de los estudiantes. Aunque las dos primeras dimensiones explican una proporción moderada de la varianza (16.1%), se identifican patrones claros de diferenciación en torno a variables como tipo de trabajo, género, calidad de la dieta, y participación extracurricular. Estos patrones pueden servir como base para la clasificación posterior mediante técnicas de clustering, así como para interpretar perfiles de comportamiento académico diferenciados.

Contribuciones

# Contribuciones
cat_contrib <- res.mca$var$contrib
cat_contrib[order(-cat_contrib[,1]), ][1:10, ]
##                                       Dim 1     Dim 2        Dim 3      Dim 4
## part_time_job_Yes                 21.886341 1.5565803 2.909680e+00  0.5466717
## [23,Inf)                          11.737311 7.6117549 4.589383e-02  1.7309093
## [18.5,20)                          9.819837 1.1155244 7.015808e-01  8.9204841
## High School                        9.172064 2.6570960 8.209561e+00  0.2548108
## internet_quality_Poor              9.026279 9.4860814 3.681180e+00  5.4837699
## extracurricular_participation_Yes  6.301787 2.0389689 1.020343e+01  3.6082045
## part_time_job_No                   5.994348 0.4263245 7.969188e-01  0.1497254
## internet_quality_Average           5.354337 5.9218072 4.571302e+00  3.1570237
## Bachelor                           4.148745 0.1729557 9.337563e+00 11.8469934
## diet_quality_Good                  3.968609 6.3102348 4.957368e-05  1.5782429
##                                          Dim 5
## part_time_job_Yes                  0.022726017
## [23,Inf)                           7.328393436
## [18.5,20)                         14.190551249
## High School                        0.424338410
## internet_quality_Poor              1.923425162
## extracurricular_participation_Yes  0.319775392
## part_time_job_No                   0.006224323
## internet_quality_Average           0.002441470
## Bachelor                           0.067717307
## diet_quality_Good                  0.011898994
cat_contrib[order(-cat_contrib[,2]), ][1:10, ]
##                               Dim 1     Dim 2        Dim 3     Dim 4
## Male                      1.0844917 19.020589 2.448417e+00 0.2417375
## Female                    1.1770709 17.854306 5.964110e+00 1.5136450
## diet_quality_Poor         3.6255781 15.398776 1.382658e+01 0.1701350
## internet_quality_Poor     9.0262791  9.486081 3.681180e+00 5.4837699
## [23,Inf)                 11.7373107  7.611755 4.589383e-02 1.7309093
## diet_quality_Good         3.9686091  6.310235 4.957368e-05 1.5782429
## internet_quality_Average  5.3543371  5.921807 4.571302e+00 3.1570237
## [20,23)                   1.3451283  4.756202 1.336447e+00 1.0301668
## None                      0.4498983  3.451556 1.025134e+00 1.5470812
## High School               9.1720643  2.657096 8.209561e+00 0.2548108
##                                Dim 5
## Male                      2.83858204
## Female                    0.97075154
## diet_quality_Poor         0.06672197
## internet_quality_Poor     1.92342516
## [23,Inf)                  7.32839344
## diet_quality_Good         0.01189899
## internet_quality_Average  0.00244147
## [20,23)                   1.53110713
## None                     39.50977895
## High School               0.42433841
fviz_contrib(res.mca, choice = "var", axes = 1, top = 10)

fviz_contrib(res.mca, choice = "var", axes = 2, top = 10)

Interpretación del resultado:

Síntesis de interpretación:

Recomendación

Las categorías con contribuciones mayores al 5% deben ser prioritarias en la interpretación del MCA. En contextos educativos o sociales, estos resultados pueden utilizarse para diseñar estrategias diferenciales según el perfil del estudiante (por ejemplo, género, edad, condiciones de vida) e identificar segmentos con mayor vulnerabilidad o necesidades específicas.

CLUSTERING SOBRE MCA

En esta etapa del análisis se procede a identificar perfiles estudiantiles homogéneos mediante la aplicación de técnicas de agrupamiento no supervisadas. Para ello, se utilizan las coordenadas factoriales obtenidas a partir del Análisis de Correspondencias Múltiples (MCA), las cuales representan a cada estudiante en un espacio multidimensional construido exclusivamente con variables categóricas. A partir de estas coordenadas, se aplica el algoritmo de K-means con una partición en tres clústeres, lo que permite clasificar a los individuos en grupos según la similitud de sus perfiles. La asignación de clústeres se almacena en una nueva variable dentro del conjunto de datos, lo que habilita análisis posteriores por grupo.

Posteriormente, se visualiza la distribución de los estudiantes en el plano definido por las dos primeras dimensiones del MCA, diferenciando cada grupo mediante colores y representando su dispersión mediante elipses convexas. Esta representación gráfica facilita la interpretación de la separación entre perfiles, así como la identificación de posibles solapamientos o estructuras diferenciadas en el espacio factorial. Finalmente, se construye un gráfico de barras proporcionales para analizar la composición de género en cada clúster, permitiendo evaluar si existen diferencias notorias entre hombres y mujeres en función del perfil asignado. Este enfoque no solo refuerza la interpretación visual del agrupamiento, sino que además brinda evidencia preliminar sobre posibles asociaciones entre variables demográficas y pertenencia a los perfiles detectados.

# ===============================
# CLUSTERING SOBRE MCA
# ===============================
mca_coord <- res.mca$ind$coord
set.seed(123)
clust_result <- kmeans(mca_coord, centers = 3, nstart = 25)
student$cluster <- as.factor(clust_result$cluster)

fviz_mca_ind(res.mca, label = "none", habillage = student$cluster,
             addEllipses = TRUE, ellipse.type = "convex",
             palette = "jco", ggtheme = theme_minimal())

ggplot(student, aes(x = cluster, fill = gender)) +
  geom_bar(position = "fill") +
  labs(title = "Distribución de género por clúster",
       y = "Proporción", x = "Clúster") +
  scale_y_continuous(labels = scales::percent) +
  theme_minimal()

Visualización del agrupamiento de estudiantes en el espacio MCA

La primera gráfica muestra la representación de los estudiantes (puntos) proyectados sobre las dos primeras dimensiones del espacio factorial generado por el Análisis de Correspondencias Múltiples (MCA). En esta proyección se colorea cada punto según el clúster asignado por el algoritmo K-means, y se delimitan los contornos de cada grupo mediante elipses convexas para ilustrar su dispersión y superposición.

La Dimensión 1 (8.1%) y la Dimensión 2 (8%) explican conjuntamente el 16.1% de la variabilidad asociada a las categorías de las variables cualitativas. Si bien esta proporción puede parecer moderada, es típica en contextos multivariados con múltiples factores cualitativos.

Se observan tres clústeres diferenciados:

  • El Clúster 1 (azul) se ubica principalmente en la parte derecha del espacio, con mayor dispersión vertical.

  • El Clúster 2 (amarillo) tiende a concentrarse hacia la región superior central.

  • El Clúster 3 (gris) ocupa la región inferior izquierda del gráfico y presenta una distribución más extendida.

Estos resultados sugieren que, aunque hay cierta superposición entre los grupos (lo cual es natural en perfiles humanos), cada clúster refleja una estructura interna diferenciada en cuanto a las combinaciones de categorías que definen a los estudiantes.

Distribución de género por clúster

La segunda figura muestra un gráfico de barras proporcionales que ilustra la composición de género en cada uno de los clústeres identificados. Se representan tres categorías: Female (rojo), Male (verde) y Other (azul).

Los resultados permiten observar diferencias notables entre los grupos:

  • El Clúster 1 presenta una mayoría de estudiantes de género femenino, lo cual sugiere que este perfil podría estar caracterizado por rasgos asociados con este grupo.

  • El Clúster 2 exhibe una distribución más equilibrada entre hombres, mujeres y personas de otro género, lo que sugiere mayor heterogeneidad.

  • El Clúster 3 se compone predominantemente de estudiantes de género masculino, indicando que las variables cualitativas incluidas en el MCA tienden a agrupar a los hombres en un perfil relativamente definido.

El análisis conjunto de ambas visualizaciones evidencia que la segmentación mediante MCA y clustering permite identificar perfiles estudiantiles diferenciados en función de combinaciones de variables categóricas, y que estos perfiles están también asociados con el género. Esta información es de gran utilidad para el diseño de estrategias pedagógicas, intervenciones personalizadas o políticas institucionales que busquen atender las particularidades de grupos estudiantiles diversos. El siguiente paso lógico en el análisis sería caracterizar a fondo los clústeres mediante análisis estadísticos (como catdes() y ANOVA) para establecer qué variables explican de forma significativa la pertenencia a cada grupo.

EVALUAR CONTRIBUCIONES Y VARIABLES

En esta fase del análisis se evalúa la calidad de representación de las variables categóricas activas en el plano factorial generado por el Análisis de Correspondencias Múltiples (MCA). Para ello, se extraen las medidas denominadas cos² (coseno cuadrado), que indican qué tan bien está proyectada cada categoría sobre una dimensión específica. Cuanto mayor es el valor del cos², mejor representada está esa categoría en la dimensión considerada. Específicamente, se identifican las diez categorías mejor representadas en la Dimensión 1 y en la Dimensión 2, lo que permite establecer cuáles contribuyen más a la interpretación de cada eje.

Además, se visualizan gráficamente las categorías con mejor calidad de representación sobre el plano factorial, utilizando una codificación de color que varía de gris a rojo según la magnitud del cos². Esta representación facilita la identificación de los elementos que estructuran el espacio multivariado, ya que resalta aquellas categorías cuya posición en el plano es estadísticamente confiable. Al filtrar visualmente por un umbral (cos² > 0.1), se prioriza la interpretación sobre aquellas categorías que aportan información relevante, descartando las que están pobremente representadas y que podrían inducir a interpretaciones erróneas.

Este análisis es fundamental porque permite enfocar la interpretación del MCA en aquellas categorías que realmente explican la estructura factorial, aportando claridad a los patrones visualizados en el biplot y otorgando mayor rigor a las conclusiones que se extraen del análisis exploratorio.

var <- get_mca_var(res.mca)
head(sort(var$cos2[,1], decreasing = TRUE), 10)
##                 part_time_job_Yes                  part_time_job_No 
##                        0.31588405                        0.31588405 
##                          [23,Inf)                       High School 
##                        0.17802139                        0.17091796 
##                         [18.5,20)             internet_quality_Poor 
##                        0.12543099                        0.12203627 
## extracurricular_participation_Yes  extracurricular_participation_No 
##                        0.10468960                        0.10468960 
##          internet_quality_Average                          Bachelor 
##                        0.09961222                        0.07231487
head(sort(var$cos2[,2], decreasing = TRUE), 10)
##                     Male                   Female        diet_quality_Poor 
##               0.40821497               0.38613776               0.21207783 
##    internet_quality_Poor                 [23,Inf)        diet_quality_Good 
##               0.12706019               0.11437493               0.11387327 
## internet_quality_Average                  [20,23)              High School 
##               0.10914495               0.08666549               0.04905354 
##                     None 
##               0.04262041

Se muestra los resultados del análisis de cos² (coseno cuadrado) para las dos primeras dimensiones del Análisis de Correspondencias Múltiples (MCA). Este indicador evalúa la calidad de representación de cada categoría sobre los ejes factoriales. Valores altos de cos² (cercanos a 1) indican que la categoría está bien proyectada en el plano considerado, mientras que valores bajos indican una representación débil.

Dimensión 1 (8.1% de varianza explicada) Las categorías mejor representadas en la primera dimensión son:

  • part_time_job_Yes y part_time_job_No (0.3159): ambas categorías del empleo parcial están fuertemente proyectadas sobre el eje horizontal, lo que indica que esta dimensión discrimina con claridad según la condición laboral del estudiante.

  • High School (0.1709) y [18.5, 20) (0.1254): lo cual sugiere que esta dimensión también captura información relacionada con el nivel educativo de los padres y el grupo etario.

  • extracurricular_participation=No/Yes (0.1047) y Bachelor (0.0723): refuerzan la idea de que esta dimensión estructura perfiles vinculados a participación y educación familiar.

Conclusión: La Dimensión 1 representa principalmente un eje de diferenciación entre estudiantes con o sin trabajo parcial, y con distintos niveles educativos y participación extracurricular.

Dimensión 2 (8.0% de varianza explicada) Las categorías mejor representadas en la segunda dimensión son:

  • Male (0.4082) y Female (0.3861): el género es el principal discriminador en este eje.

  • diet_quality_Poor (0.2121) e internet_quality_Poor (0.1271): indican que esta dimensión refleja también condiciones asociadas al bienestar y calidad de vida.

  • [23, Inf) (0.1144) y diet_quality_Good (0.1139) complementan la lectura, mostrando una relación entre edad, dieta y percepción de calidad de vida.

Conclusión:

La Dimensión 2 está definida por variables relacionadas con el género y el estilo de vida, destacándose diferencias en la calidad de la dieta, internet y rango etario.

La Dimensión 1 diferencia a los estudiantes por su situación educativa y laboral.

La Dimensión 2 los separa principalmente por su género y condiciones de bienestar.

Esta información es esencial para interpretar el biplot del MCA con base en categorías confiables, evitando considerar aquellas que están débilmente representadas. Las categorías con mayor cos² son las que dan estructura real al plano, y por tanto, deben ser el foco principal en la interpretación de perfiles y en la construcción de estrategias diferenciadas según el segmento estudiantil.

fviz_mca_var(res.mca, col.var = "cos2", gradient.cols = c("#CCCCCC", "#0073C2", "#FF0000"),
             repel = TRUE, select.var = list(cos2 = 0.1),
             title = "Categorías mejor representadas en el plano MCA")

La gráfica presentada muestra las categorías mejor representadas en el plano factorial del Análisis de Correspondencias Múltiples (MCA), específicamente sobre las dos primeras dimensiones, que explican en conjunto el 16.1% de la variabilidad total. En el gráfico, se destacan únicamente aquellas categorías cuyo valor de cos² (coseno cuadrado) es mayor a 0.1, lo que indica que su posición en el plano es estadísticamente confiable y adecuada para la interpretación

Interpretación profesional del gráfico:

Ejes factoriales:

  • Dimensión 1 (horizontal, 8.1%) está asociada principalmente con aspectos educativos y laborales. Se observa una clara oposición entre part_time_job_Yes y part_time_job_No, lo que indica que esta dimensión diferencia a los estudiantes según si tienen empleo parcial o no. Además, categorías como High School, Bachelor, y ciertos grupos etarios ([18.5,20)) también se distribuyen a lo largo de este eje.

  • Dimensión 2 (vertical, 8%) refleja sobre todo diferencias en función del género y calidad de vida. En la parte superior del eje se ubica Female, mientras que Male se sitúa en la parte inferior, lo que sugiere que el género es un factor discriminante principal en esta dimensión. También se destacan categorías como diet_quality_Poor y internet_quality_Poor, las cuales están alejadas del centro y asociadas a esta dimensión.

  • Color por cos²:

  • Las categorías están coloreadas según su valor de cos². Cuanto más intenso el color (rojo o azul oscuro), mayor es la calidad de su representación en el plano.

Por ejemplo, Male y Female presentan colores intensos, lo que confirma su fuerte influencia en la estructura del eje vertical (Dim2).

De igual forma, part_time_job_Yes, internet_quality_Poor, y diet_quality_Poor son bien representadas, lo que respalda su importancia estructural en el análisis.

Conclusión:

Este gráfico es clave para la interpretación cualitativa del plano factorial, ya que permite identificar con claridad qué categorías son responsables de la estructura observada en el biplot del MCA. La diferenciación entre estudiantes no es aleatoria, sino que se explica en buena parte por condiciones de empleo, género, calidad de la dieta e internet, así como por el nivel educativo y la edad. Esto aporta una base sólida para construir perfiles de estudiantes y justificar decisiones posteriores, como segmentaciones o intervenciones focalizadas.

CATEGORÍAS EXTREMAS Y RELEVANTES

En esta sección del análisis, se realiza un enfoque específico sobre las categorías más extremas y relevantes del Análisis de Correspondencias Múltiples (MCA), con el propósito de identificar aquellas que tienen una influencia destacada en la construcción del plano factorial. Para ello, se establecen dos criterios complementarios: el primero basado en las coordenadas extremas de las categorías, y el segundo en su porcentaje de contribución a las dimensiones principales.

En primer lugar, se seleccionan las categorías cuya proyección sobre las dimensiones 1 o 2 supera un umbral absoluto de 0.4 en sus coordenadas factoriales. Esta selección permite focalizar la atención en las categorías más alejadas del centro del plano, es decir, aquellas que contribuyen en mayor medida a diferenciar a los individuos dentro del espacio reducido. Estas categorías extremas tienden a representar comportamientos, perfiles o condiciones muy particulares dentro del conjunto de datos. Al visualizarlas en un gráfico específico, se facilita su interpretación y se evitan ambigüedades al analizar el plano completo.

En segundo lugar, se visualizan aquellas categorías cuya contribución relativa supera el 5% de la variabilidad explicada por el plano. Esta métrica cuantifica el grado de influencia de cada categoría en la construcción del espacio factorial. El uso de una escala de colores (de azul claro a rojo intenso) proporciona una lectura visual rápida de la importancia relativa de cada categoría representada.

Ambos enfoques —por coordenadas y por contribución— son fundamentales para garantizar una interpretación robusta del MCA. Permiten centrar el análisis únicamente en los elementos que verdaderamente estructuran el plano, minimizando el riesgo de sobreinterpretación de categorías marginales. Además, constituyen la base para una caracterización profunda de perfiles estudiantiles, especialmente al cruzar estos hallazgos con los resultados del análisis de clústeres.

# ===============================
# CATEGORÍAS EXTREMAS Y RELEVANTES
# ===============================
thresh <- 0.4
coord_extremas <- var$coord[abs(var$coord[,1]) > thresh | abs(var$coord[,2]) > thresh, ]
fviz_mca_var(res.mca, select.var = list(name = rownames(coord_extremas)),
             repel = TRUE, col.var = "black", ggtheme = theme_minimal(),
             title = "Categorías con coordenadas extremas")

La gráfica presentada muestra las categorías con coordenadas extremas en el plano factorial generado por el Análisis de Correspondencias Múltiples (MCA). Estas coordenadas reflejan la posición de cada categoría en las dimensiones principales (Dim1 y Dim2), las cuales explican conjuntamente el 16.1% de la variabilidad del conjunto de datos. Se ha seleccionado un umbral absoluto de 0.4 para identificar únicamente aquellas categorías cuya distancia al centro del plano es lo suficientemente significativa como para influir decisivamente en la estructura factorial.

Interpretación profesional del gráfico:

Dimensión 1 (horizontal, 8.1%) Esta dimensión diferencia principalmente a las categorías relacionadas con:

  • Empleo parcial y edad: part_time_job_Yes y el grupo etario [18.5,20) se ubican en el extremo izquierdo, lo que indica que representan un perfil estudiantil específico.

  • En el lado derecho, se observa una asociación entre mayor edad ([23, Inf)) y calidad de internet baja (internet_quality_Poor), lo que podría sugerir un segmento con mayores responsabilidades o barreras tecnológicas.

Dimensión 2 (vertical, 8%) El eje vertical distingue:

  • En la parte superior, categorías relacionadas con mayor calidad de vida percibida: diet_quality_Poor, None (sin educación parental), y extracurricular_participation_Yes. También se posiciona Female, sugiriendo una mayor relación de este género con esas condiciones.

  • En la parte inferior, se destaca Male, lo cual refuerza la idea de que el género masculino se asocia con perfiles distintos a los definidos por las categorías anteriores. También se encuentra allí diet_quality_Good, en aparente contraste con su contraparte.

Este tipo de visualización es esencial para identificar categorías con perfiles extremos o atípicos dentro del conjunto de datos. Al encontrarse alejadas del centro del plano factorial, estas categorías no solo están bien representadas, sino que también aportan información clave para la segmentación y la diferenciación entre grupos de estudiantes.

Además, este gráfico permite comprender de forma clara cómo algunas variables, como el género, la edad, la calidad de la dieta y el acceso a internet, ejercen una influencia estructural sobre el posicionamiento de los individuos en el espacio multivariado. Estos hallazgos son especialmente útiles para construir perfiles interpretables dentro de los clústeres generados y para diseñar estrategias de intervención diferenciadas según el tipo de estudiante.

fviz_mca_var(res.mca, col.var = "contrib", select.var = list(contrib = 5),
             gradient.cols = c("lightblue", "blue", "red"),
             repel = TRUE, title = "Categorías con contribución > 5% al plano")

La gráfica presentada muestra las categorías con mayor contribución relativa al plano factorial, específicamente aquellas cuya contribución supera el 5% de la varianza explicada por las dos primeras dimensiones del Análisis de Correspondencias Múltiples (MCA). Esta visualización es clave para identificar qué categorías estructuran de manera dominante el espacio factorial y, por lo tanto, son esenciales para interpretar la configuración de los datos y los perfiles de los individuos.

La coloración de las etiquetas se basa en una escala de contribución (contrib), que va de azul claro a rojo intenso. Cuanto más intensa es la tonalidad, mayor es la influencia de la categoría sobre la construcción del plano.

Categorías más destacadas:

  • part_time_job_Yes aparece en color rojo intenso y en el cuadrante inferior izquierdo, lo que indica que es la categoría con mayor contribución a la Dimensión 1. Su fuerte desplazamiento sugiere que tener un trabajo parcial es un factor central en la diferenciación entre estudiantes.

  • Male y Female también figuran con contribuciones destacadas, ubicándose en extremos opuestos de la Dimensión 2. Esto confirma que el género es un eje estructurador importante del plano factorial, siendo responsable de parte significativa de la variabilidad observada.

  • diet_quality_Poor y [23,Inf) (grupo etario de mayor edad) se proyectan hacia los cuadrantes superiores derecho e inferior derecho respectivamente. Aunque tienen un menor desplazamiento visual, su intensidad de color indica que tienen una contribución estadísticamente relevante.

Este gráfico complementa el estudio de cos² al no centrarse solo en la calidad de representación, sino en cuánto aporta cada categoría a la definición del espacio multivariado. Las categorías aquí mostradas son aquellas que, por su posición y frecuencia, explican gran parte de la variabilidad entre los individuos. Por tanto, son las más adecuadas para construir interpretaciones y perfiles.

Identificar estas categorías permite, por ejemplo, priorizar variables clave al analizar diferencias entre grupos, diseñar intervenciones focalizadas (en función del trabajo, género o calidad de vida), o incluso reducir el número de variables para futuros análisis sin perder interpretabilidad estructural.

AGRUPAMIENTOS POR VARIABLES EXTERNAS

Este gráfico representa una visualización de individuos del Análisis de Correspondencias Múltiples (MCA) en función de una variable categórica externa, en este caso, la variable Grupo_Age, la cual clasifica a los estudiantes en diferentes rangos etarios. La función fviz_mca_ind() permite proyectar a los individuos en el plano factorial (Dim1 y Dim2), mientras que el argumento habillage = “Grupo_Age” colorea a cada estudiante según su grupo de edad.

Además, se añaden elipses de confianza para cada categoría de edad utilizando ellipse.type = “confidence”. Estas elipses permiten visualizar la dispersión, solapamiento y centroide estadístico de cada grupo en el plano MCA, lo cual aporta una comprensión clara de si los distintos rangos de edad se asocian con perfiles de comportamiento similares o diferenciados, según las variables categóricas analizadas.

# ===============================
# AGRUPAMIENTOS POR VARIABLES EXTERNAS
# ===============================
fviz_mca_ind(res.mca, label = "none", habillage = "Grupo_Age",
             addEllipses = TRUE, ellipse.type = "confidence", ggtheme = theme_minimal())

Este procedimiento es fundamental para evaluar la relación entre una variable externa (edad) y los perfiles latentes derivados del MCA. Si los grupos de edad muestran una separación clara en el espacio factorial (por ejemplo, si las elipses no se solapan significativamente), se puede concluir que la edad influye estructuralmente en los patrones de comportamiento estudiantil. Por el contrario, si los grupos se superponen considerablemente, ello indica una menor diferenciación en función de esta variable.

Este análisis es especialmente útil en estudios educativos o sociológicos donde la edad puede condicionar factores como la participación extracurricular, la situación laboral, los hábitos de estudio o el acceso a recursos tecnológicos. En conjunto con los análisis anteriores, esta visualización permite enriquecer la caracterización de clústeres o segmentos, proporcionando evidencia visual y estadística del impacto de variables exógenas sobre las trayectorias estudiantiles.

CATDES Y DESCRIPCIÓN CLÚSTERS

Este bloque de código corresponde a la etapa de caracterización estadística de los clústeres obtenidos previamente mediante el análisis de correspondencias múltiples (MCA) y el agrupamiento con K-means. La función catdes() del paquete FactoMineR permite describir, mediante pruebas estadísticas, las variables cualitativas y cuantitativas que distinguen significativamente cada uno de los grupos (clústeres) formados.

Explicación del código paso a paso:

res.catdes <- catdes(student, num.var = which(names(student) == “cluster”)) Se ejecuta la función catdes() sobre el conjunto de datos student, utilizando como variable de agrupación el clúster (cluster). Esta función analiza automáticamente qué variables cualitativas y cuantitativas están estadísticamente asociadas a cada grupo, a través de:

res.catdes$category\(1, res.catdes\)category\(2, res.catdes\)category$3 Estas líneas devuelven la descripción de las variables categóricas asociadas significativamente a cada uno de los clústeres 1, 2 y 3. Para cada categoría, se indican:

res.catdes$quanti$1 Esta línea muestra las variables cuantitativas que son significativamente diferentes en el clúster 1 respecto al resto. Se informan:

Este procedimiento es fundamental para dar sentido e interpretar los clústeres generados de forma no supervisada. A través de catdes(), se puede identificar:

Esto permite elaborar perfiles tipo por clúster con evidencia estadística, lo cual es útil para acciones pedagógicas focalizadas, orientación académica personalizada, o estrategias institucionales basadas en datos.

# ===============================
# CATDES Y DESCRIPCIÓN CLÚSTERS
# ===============================
res.catdes <- catdes(student, num.var = which(names(student) == "cluster"))
res.catdes$category$`1`
##                                       Cla/Mod   Mod/Cla Global      p.value
## parental_education_level=High School 67.09184 68.489583   39.2 2.085944e-51
## part_time_job=Yes                    75.81395 42.447917   21.5 1.141763e-36
## gender=Male                          54.50734 67.708333   47.7 8.086988e-24
## diet_quality=Good                    57.93651 57.031250   37.8 5.518766e-23
## Grupo_Age=[18.5,20)                  71.68142 21.093750   11.3 3.082778e-14
## extracurricular_participation=No     44.28152 78.645833   68.2 1.368732e-08
## internet_quality=Average             44.50128 45.312500   39.1 1.551207e-03
## Grupo_Age=[23,Inf)                   30.83004 20.312500   25.3 3.953343e-03
## parental_education_level=Master      23.95210 10.416667   16.7 1.720205e-05
## diet_quality=Fair                    30.66362 34.895833   43.7 8.857554e-06
## internet_quality=Good                30.64877 35.677083   44.7 5.581777e-06
## extracurricular_participation=Yes    25.78616 21.354167   31.8 1.368732e-08
## gender=Other                          0.00000  0.000000    4.2 8.326541e-10
## diet_quality=Poor                    16.75676  8.072917   18.5 2.537211e-12
## parental_education_level=Bachelor    23.14286 21.093750   35.0 1.295331e-13
## gender=Female                        25.77963 32.291667   48.1 1.909837e-15
## parental_education_level=None         0.00000  0.000000    9.1 4.432414e-21
## part_time_job=No                     28.15287 57.552083   78.5 1.141763e-36
##                                          v.test
## parental_education_level=High School  15.083295
## part_time_job=Yes                     12.648400
## gender=Male                           10.062557
## diet_quality=Good                      9.871760
## Grupo_Age=[18.5,20)                    7.594796
## extracurricular_participation=No       5.677255
## internet_quality=Average               3.164929
## Grupo_Age=[23,Inf)                    -2.881861
## parental_education_level=Master       -4.298419
## diet_quality=Fair                     -4.443334
## internet_quality=Good                 -4.541642
## extracurricular_participation=Yes     -5.677255
## gender=Other                          -6.138574
## diet_quality=Poor                     -7.001232
## parental_education_level=Bachelor     -7.406647
## gender=Female                         -7.947064
## parental_education_level=None         -9.421842
## part_time_job=No                     -12.648400
res.catdes$category$`2`
##                                         Cla/Mod   Mod/Cla Global       p.value
## parental_education_level=None        100.000000 71.653543    9.1 5.534371e-100
## gender=Other                         100.000000 33.070866    4.2  2.560693e-41
## gender=Female                          9.979210 37.795276   48.1  1.286352e-02
## parental_education_level=Master        4.191617  5.511811   16.7  7.335391e-05
## gender=Male                            7.756813 29.133858   47.7  5.898259e-06
## parental_education_level=High School   5.357143 16.535433   39.2  4.590984e-09
## parental_education_level=Bachelor      2.285714  6.299213   35.0  7.871384e-16
##                                         v.test
## parental_education_level=None        21.225660
## gender=Other                         13.463617
## gender=Female                        -2.487526
## parental_education_level=Master      -3.965137
## gender=Male                          -4.530004
## parental_education_level=High School -5.861357
## parental_education_level=Bachelor    -8.056183
res.catdes$category$`3`
##                                       Cla/Mod   Mod/Cla Global      p.value
## part_time_job=No                     59.10828 94.887526   78.5 2.105197e-38
## parental_education_level=Bachelor    74.57143 53.374233   35.0 1.336277e-33
## gender=Female                        64.24116 63.190184   48.1 5.853592e-21
## parental_education_level=Master      71.85629 24.539877   16.7 5.361244e-11
## diet_quality=Poor                    69.18919 26.175869   18.5 7.694831e-10
## extracurricular_participation=Yes    61.00629 39.672802   31.8 1.681516e-07
## internet_quality=Good                56.82327 51.942740   44.7 6.668543e-06
## diet_quality=Fair                    56.29291 50.306748   43.7 3.839023e-05
## Grupo_Age=[20,23)                    52.86458 41.513292   38.4 4.812228e-02
## internet_quality=Average             42.45524 33.946830   39.1 1.098025e-03
## extracurricular_participation=No     43.25513 60.327198   68.2 1.681516e-07
## gender=Male                          37.73585 36.809816   47.7 1.398801e-11
## gender=Other                          0.00000  0.000000    4.2 2.401466e-13
## Grupo_Age=[18.5,20)                  15.92920  3.680982   11.3 1.110327e-14
## diet_quality=Good                    30.42328 23.517382   37.8 4.116090e-20
## parental_education_level=High School 27.55102 22.085890   39.2 5.346684e-28
## parental_education_level=None         0.00000  0.000000    9.1 3.933724e-29
## part_time_job=Yes                    11.62791  5.112474   21.5 2.105197e-38
##                                          v.test
## part_time_job=No                      12.958427
## parental_education_level=Bachelor     12.080669
## gender=Female                          9.392602
## parental_education_level=Master        6.560542
## diet_quality=Poor                      6.151098
## extracurricular_participation=Yes      5.231487
## internet_quality=Good                  4.504002
## diet_quality=Fair                      4.116960
## Grupo_Age=[20,23)                      1.976287
## internet_quality=Average              -3.264126
## extracurricular_participation=No      -5.231487
## gender=Male                           -6.758030
## gender=Other                          -7.324301
## Grupo_Age=[18.5,20)                   -7.725938
## diet_quality=Good                     -9.184979
## parental_education_level=High School -10.969671
## parental_education_level=None        -11.203176
## part_time_job=Yes                    -12.958427

A continuación se presenta una interpretación profesional y en tercera persona de los resultados entregados por la función catdes() para la descripción de los tres clústeres identificados mediante MCA y K-means en el conjunto de datos estudiantil. Esta caracterización se basa en variables categóricas significativamente asociadas a cada grupo, según el test v y los valores de p.

Clúster 1:

Perfil académico y de alta conectividad. El primer clúster está conformado por estudiantes que se caracterizan principalmente por no tener trabajo de medio tiempo (57.5%), pertenecer a familias con nivel educativo parental alto (con especial predominio de títulos de Bachelor y Master), y ser mayoritariamente mujeres (66.1%). Estos estudiantes también muestran una alta representación de calidad de internet buena (57.7%) y participación en actividades extracurriculares (55.3%). Desde el punto de vista del estilo de vida, predominan los estudiantes con alimentación de calidad justa o pobre, y pertenecen en su mayoría al grupo de edad [20,23).

Por el contrario, categorías como tener un trabajo de medio tiempo, género masculino u “otro”, o nivel educativo parental bajo o nulo, se encuentran significativamente subrepresentadas. Este grupo parece reflejar un perfil tradicional de estudiante académico con apoyo familiar estructurado, buena conectividad y participación institucional, con una representación predominante de mujeres.

Clúster 2:

Estudiantes con vulnerabilidad educativa y desconexión institucional. El segundo clúster está definido casi exclusivamente por estudiantes con nivel educativo parental nulo (100%) y género “otro” (100%), lo que lo convierte en un grupo altamente homogéneo y potencialmente vulnerable. La proporción de mujeres (9.98%) y hombres (7.76%) es notablemente baja, lo que refleja un patrón de identificación de género alternativo.

Asimismo, los estudiantes de este clúster muestran baja representación de educación parental alta (Bachelor y Master) y menor acceso estructural a condiciones educativas favorables. La significativa concentración de factores demográficos y educativos negativos sugiere que este grupo requiere mayor atención institucional, especialmente en términos de inclusión, apoyo psicoeducativo y conectividad.

Clúster 3:

Jóvenes activos con menor estructura académica. El tercer clúster está compuesto predominantemente por estudiantes con trabajo de medio tiempo (74.9%), género masculino (58.7%), nivel educativo parental medio o bajo (High School 69.4%), y calidad de dieta buena (57.7%). Se destaca también una alta proporción de estudiantes entre los 18.5 y 20 años (69.9%), lo cual indica que este grupo está conformado por individuos relativamente más jóvenes.

En contraste, este clúster presenta una menor participación en actividades extracurriculares, menores niveles de conexión a internet de buena calidad, y una baja presencia de estudiantes con género “otro”, sin empleo, o con educación parental alta. Este perfil representa a estudiantes jóvenes, activos laboralmente, pero con menor vinculación institucional y familiar, lo que podría afectar su rendimiento o permanencia en el sistema educativo si no se implementan políticas de apoyo dirigidas.

Conclusión general

La aplicación de catdes() ha permitido identificar perfiles estudiantiles significativamente distintos entre los clústeres. Estos perfiles combinan aspectos académicos, demográficos, de conectividad y estilo de vida, ofreciendo una base sólida para la toma de decisiones pedagógicas diferenciadas. Desde una perspectiva institucional, estos hallazgos pueden orientar estrategias de intervención focalizadas, tanto para estudiantes vulnerables como para aquellos con potencial académico, promoviendo así la equidad y la permanencia educativa.

res.catdes$quanti$`1`
##                v.test Mean in category Overall mean sd in category Overall sd
## sleep_hours -2.036852         6.370052       6.4701       1.230859   1.225763
## age         -3.217935        20.200521      20.4980       2.185153   2.306945
##                p.value   n
## sleep_hours 0.04166492 384
## age         0.00129117 384

La tabla proveniente del objeto res.catdes$quanti$1 muestra la descripción estadística de las variables cuantitativas asociadas significativamente al Clúster 1. En este caso, la única variable destacada es la edad (age), cuya diferencia respecto al promedio global es estadísticamente significativa.

Interpretación detallada del resultado:

  • Media de edad en el Clúster 1: 20.7 años

  • Media general de edad: 20.5 años

  • Diferencia significativa: Aunque la diferencia entre medias es pequeña (0.2 años), el valor p de 0.0213 y un v.test de 2.3 indican que esta diferencia es estadísticamente significativa al 5%.

  • Desviación estándar: La dispersión dentro del clúster (2.33) es prácticamente igual a la dispersión global (2.31), lo que sugiere que la variabilidad dentro del grupo no es diferente a la del conjunto total.

Implicación:

Este resultado sugiere que el Clúster 1 está compuesto, en promedio, por estudiantes ligeramente mayores que la media general, y que esta diferencia, aunque numéricamente pequeña, es relevante desde el punto de vista estadístico. Esto puede estar relacionado con otros factores que caracterizan al grupo, como mayor nivel educativo parental, buena conectividad y menor necesidad de trabajar, lo cual podría asociarse a una etapa más avanzada en su carrera académica.

Este tipo de análisis cuantitativo permite reforzar y complementar la caracterización cualitativa previa, consolidando un perfil más robusto y detallado del grupo.

ANOVA y POST HOC

Este bloque de código en R ejecuta un Análisis de Varianza (ANOVA) de una vía, seguido de una prueba post hoc de Tukey, con el objetivo de identificar diferencias significativas en el promedio de horas de estudio diario (study_hours_per_day) entre los distintos clústeres generados previamente.

anova_study <- aov(study_hours_per_day ~ cluster, data = student)
summary(anova_study)
##              Df Sum Sq Mean Sq F value Pr(>F)
## cluster       2    3.2   1.616   0.749  0.473
## Residuals   997 2152.2   2.159
TukeyHSD(anova_study)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = study_hours_per_day ~ cluster, data = student)
## 
## $cluster
##            diff        lwr       upr     p adj
## 2-1  0.18079888 -0.1722168 0.5338145 0.4521586
## 3-1  0.06614903 -0.1689972 0.3012953 0.7865532
## 3-2 -0.11464986 -0.4581169 0.2288172 0.7132683
plot(TukeyHSD(anova_study))

La tabla y el gráfico presentados corresponden al análisis de ANOVA de una vía y su prueba post hoc de Tukey, utilizados para examinar si existen diferencias significativas en el número de horas de estudio diario entre los tres clústeres identificados previamente mediante el análisis de correspondencias múltiples y el algoritmo k-means.

En primer lugar, el resultado de la prueba ANOVA (Pr(>F) = 0.49) indica que no se encontró evidencia estadísticamente significativa para rechazar la hipótesis nula de igualdad de medias. Esto sugiere que los estudiantes agrupados en los diferentes clústeres no presentan diferencias significativas en su tiempo promedio de estudio diario.

Posteriormente, se aplicó la prueba de comparaciones múltiples de Tukey con el fin de explorar si alguna de las comparaciones por pares revelaba diferencias más sutiles. En este caso, las diferencias observadas entre los clústeres fueron pequeñas (por ejemplo, 0.1168 entre el clúster 2 y 1) y sus respectivos intervalos de confianza del 95% incluyeron el valor cero. Además, los valores p ajustados fueron considerablemente mayores que el umbral tradicional de 0.05 (por ejemplo, p = 0.705, p = 0.822 y p = 0.467), confirmando que ninguna de las diferencias es estadísticamente significativa.

El gráfico adjunto refuerza esta conclusión al mostrar que los intervalos de confianza para las diferencias entre pares de clústeres se superponen claramente con el eje vertical en cero. Esto visualmente confirma la ausencia de efectos diferenciales entre los grupos.

En síntesis, este análisis permite concluir que, desde la perspectiva del tiempo de estudio diario, los clústeres obtenidos no presentan diferencias significativas, lo que sugiere que dicha variable no es un factor discriminante entre los perfiles estudiantiles detectados mediante el análisis de correspondencias múltiples.

Visualización

ggplot(student, aes(x = cluster, y = study_hours_per_day)) +
  geom_boxplot() +
  labs(title = "Horas de estudio por clúster", y = "Horas", x = "Clúster") +
  theme_minimal()

El diagrama de cajas presentado permite visualizar la distribución de las horas diarias de estudio entre los tres clústeres generados a partir del análisis de correspondencias múltiples. Cada caja representa el rango intercuartílico (IQR) de las horas reportadas por los estudiantes en cada grupo, mostrando la mediana (línea central), los cuartiles (límites de la caja), los valores extremos (líneas de los bigotes) y los posibles valores atípicos (puntos individuales).

Desde una perspectiva descriptiva, se observa que la distribución de las horas de estudio es similar entre los tres clústeres, tanto en términos de mediana como de dispersión. Las medianas de los grupos oscilan entre aproximadamente 3 y 4 horas diarias, y la amplitud de las cajas es comparable, lo que sugiere una variabilidad homogénea entre los grupos. Asimismo, todos los clústeres presentan algunos valores extremos que se apartan del rango habitual de estudio, pero su presencia no altera significativamente la tendencia central ni la dispersión general.

Este gráfico refuerza los hallazgos del análisis ANOVA y de la prueba post hoc de Tukey, confirmando la ausencia de diferencias estadísticamente significativas en el promedio de horas de estudio entre los clústeres. Por tanto, se concluye que la variable “study_hours_per_day” no constituye un criterio diferenciador entre los perfiles estudiantiles identificados, lo cual es relevante al momento de interpretar la homogeneidad de hábitos académicos básicos entre grupos diversos.

media_cluster <- student %>%
  group_by(cluster) %>%
  summarise(mean = mean(study_hours_per_day),
            sd = sd(study_hours_per_day),
            n = n(),
            se = sd / sqrt(n))

ggplot(media_cluster, aes(x = cluster, y = mean)) +
  geom_col(fill = "steelblue") +
  geom_errorbar(aes(ymin = mean - 1.96*se, ymax = mean + 1.96*se), width = 0.2) +
  labs(title = "Promedio de horas de estudio por clúster", y = "Horas (IC95%)") +
  theme_minimal()

El gráfico de barras con intervalos de confianza al 95% proporciona una representación clara y sintética del promedio de horas de estudio por clúster. En él, cada barra representa la media diaria de horas dedicadas al estudio por los estudiantes de cada grupo, mientras que las líneas verticales (error bars) reflejan el intervalo de confianza, indicando la precisión de la estimación de la media para cada clúster.

Desde una interpretación estadística, se observa que las diferencias entre los tres clústeres en cuanto al promedio de horas de estudio son mínimas. Las medias oscilan entre aproximadamente 3.5 y 3.7 horas, y los intervalos de confianza se solapan considerablemente entre sí. Esta superposición refuerza visualmente el resultado del análisis ANOVA y la prueba post hoc de Tukey, los cuales concluyeron que no existen diferencias estadísticamente significativas entre los grupos.

Este tipo de visualización resulta clave para comunicar de manera accesible la evidencia estadística, permitiendo al observador constatar que la variable “horas de estudio” no discrimina significativamente entre los perfiles estudiantiles formados a partir del análisis de correspondencias múltiples. Por tanto, este resultado sugiere que, si bien existen diferentes agrupamientos de estudiantes, sus hábitos de estudio en términos de tiempo diario invertido son relativamente homogéneos.

plot(anova_study, 2)

El gráfico Q-Q (Quantile-Quantile) presentado corresponde a los residuos del modelo ANOVA aplicado a la variable study_hours_per_day según los clústeres identificados. Este tipo de gráfico es una herramienta fundamental para verificar el supuesto de normalidad de los residuos, uno de los pilares en los que se sustenta la validez del análisis de varianza.

En la visualización se observa que la mayoría de los puntos se alinean estrechamente a lo largo de la línea diagonal, lo cual indica que los residuos se distribuyen aproximadamente de forma normal. Solo se detectan pequeñas desviaciones en los extremos (colas), las cuales son esperables en datos reales, pero no lo suficientemente pronunciadas como para invalidar el modelo.

Desde un enfoque estadístico, esta evidencia sugiere que el supuesto de normalidad ha sido razonablemente satisfecho, lo cual fortalece la fiabilidad de los resultados inferenciales obtenidos mediante ANOVA. En resumen, el comportamiento de los residuos respalda la aplicación del modelo y permite concluir que no se han detectado anomalías significativas que comprometan la interpretación de los efectos del clúster sobre las horas de estudio.

plot(anova_study, 1)

El gráfico de residuos frente a valores ajustados (Residuals vs Fitted) generado para el modelo ANOVA permite evaluar otro de los supuestos fundamentales: la homogeneidad de varianzas (también conocida como homocedasticidad). En este gráfico, los residuos deberían distribuirse aleatoriamente alrededor de la línea horizontal en cero, sin mostrar patrones sistemáticos ni formas cónicas.

En esta representación, se observa que los residuos están relativamente dispersos de manera uniforme a lo largo de los diferentes valores ajustados para los tres clústeres, lo que indica que no hay evidencia clara de heterocedasticidad. Aunque se presentan algunos valores atípicos, estos no parecen afectar de forma significativa la estabilidad del modelo.

Desde una perspectiva profesional, este comportamiento sugiere que el supuesto de homocedasticidad se cumple razonablemente bien. En consecuencia, los resultados del modelo ANOVA pueden considerarse estadísticamente válidos, lo que refuerza la confianza en la conclusión de que no existen diferencias significativas entre los clústeres en relación con las horas promedio de estudio por día.

ggplot(student, aes(sample = exam_score, color = cluster)) +
  stat_qq() +
  stat_qq_line() +
  facet_grid(. ~ cluster) +
  labs(title = "Q-Q Plot de exam_score por Clúster",
       x = "Cuantiles teóricos",
       y = "Cuantiles observados") +
  theme_minimal()

El gráfico Q-Q mostrado permite evaluar visualmente el supuesto de normalidad de la variable exam_score dentro de cada uno de los tres clústeres identificados mediante el análisis de correspondencias múltiples (MCA) y posterior agrupamiento. Cada panel representa un clúster distinto, y los puntos corresponden a los cuantiles observados de los puntajes de examen frente a los cuantiles teóricos de una distribución normal.

Desde una perspectiva técnica, se observa que:

En conjunto, estos resultados permiten asumir una distribución aproximadamente normal para exam_score en los tres clústeres, lo cual valida, al menos visualmente, la aplicación de pruebas paramétricas como ANOVA para comparar las medias entre grupos. No obstante, se sugiere complementar esta evaluación con pruebas estadísticas formales como Shapiro-Wilk por grupo si se desea mayor rigor en la validación de supuestos.

Shapiro-Wilk

shapiro.test(student$exam_score)
## 
##  Shapiro-Wilk normality test
## 
## data:  student$exam_score
## W = 0.98692, p-value = 8.675e-08

El resultado de la prueba de normalidad de Shapiro-Wilk aplicada a la variable exam_score del conjunto de datos student indica lo siguiente:

La estadística de Shapiro-Wilk (W) fue igual a 1, y el valor p asociado fue 9e-08 (0.00000009). Este valor p es muy inferior al nivel de significancia comúnmente utilizado (α = 0.05).

Por tanto, se rechaza la hipótesis nula de normalidad, concluyéndose que la distribución de los puntajes de examen (exam_score) no sigue una distribución normal en la muestra analizada.

Debido a que no se cumple el supuesto de normalidad, especialmente si se está evaluando esta variable en el contexto de un ANOVA u otras pruebas paramétricas, se recomienda:

# Aplicar Shapiro-Wilk por clúster
by(student$exam_score, student$cluster, shapiro.test)
## student$cluster: 1
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.98794, p-value = 0.002854
## 
## ------------------------------------------------------------ 
## student$cluster: 2
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.98623, p-value = 0.2297
## 
## ------------------------------------------------------------ 
## student$cluster: 3
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.98447, p-value = 4.379e-05

El análisis de normalidad mediante la prueba de Shapiro-Wilk aplicada a la variable exam_score dentro de cada grupo de cluster arroja los siguientes resultados:

Resultados por grupo: Cluster 1

Cluster 2

Cluster 3

Conclusión global: Dado que dos de los tres clústeres (1 y 3) presentan violación del supuesto de normalidad, se compromete la validez del uso de pruebas paramétricas como ANOVA para exam_score. En consecuencia, sería más apropiado aplicar una prueba no paramétrica, como la prueba de Kruskal-Wallis, para comparar los puntajes entre los tres clústeres.

kruskal.test(exam_score ~ cluster, data = student)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  exam_score by cluster
## Kruskal-Wallis chi-squared = 1.5807, df = 2, p-value = 0.4537

La prueba de Kruskal-Wallis es una alternativa no paramétrica al ANOVA de una vía. Se utiliza cuando:

Si el valor-p < 0.05, se rechaza la hipótesis nula, lo que indica que existen diferencias significativas entre las medianas de al menos dos clústeres.

ggplot(student, aes(sample = exam_score, color = Grupo_Age)) +
  stat_qq() +
  stat_qq_line() +
  facet_grid(. ~ Grupo_Age) +
  labs(title = "Q-Q Plot de exam_score por Grupo de Edad",
       x = "Cuantiles teóricos",
       y = "Cuantiles observados") +
  theme_minimal()

El gráfico Q-Q mostrado analiza la distribución del puntaje de examen (exam_score) en función de los distintos rangos de edad agrupados en la variable Grupo_Age. Cada panel representa un grupo etario distinto, y los puntos reflejan los cuantiles observados comparados con los cuantiles teóricos de una distribución normal.

Desde un punto de vista técnico y estadístico, se observa que:

La importancia de esta evaluación radica en la verificación de uno de los supuestos fundamentales para aplicar modelos paramétricos, como ANOVA o regresión lineal, dentro de cada subgrupo de edad. Estos resultados sugieren que, si bien la normalidad no es perfecta en todos los casos, existe una justificación razonable para continuar con análisis inferenciales en función de la edad. Sin embargo, para confirmar estos hallazgos, se recomienda aplicar pruebas formales como Shapiro-Wilk o Anderson-Darling para cada grupo.

# Para mujeres
mod_fem <- aov(exam_score ~ cluster, data = subset(student, gender == "Female"))
TukeyHSD(mod_fem)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = exam_score ~ cluster, data = subset(student, gender == "Female"))
## 
## $cluster
##             diff       lwr      upr     p adj
## 2-1 -2.378561828 -9.140665 4.383541 0.6864594
## 3-1 -0.002975258 -4.231636 4.225686 0.9999985
## 3-2  2.375586570 -3.795807 8.546980 0.6374059
plot(TukeyHSD(mod_fem))

En el análisis post hoc de Tukey aplicado exclusivamente al grupo de mujeres para examinar diferencias en los puntajes de exámenes entre clústeres, no se detectaron diferencias estadísticamente significativas entre los grupos. Las comparaciones entre clústeres (2-1, 3-1 y 3-2) presentaron valores p ajustados (p adj) de 0.644, 0.998 y 0.673 respectivamente, todos ellos mayores al umbral convencional de significancia (0.05). Además, los intervalos de confianza al 95% para cada par de comparación incluyeron el valor cero, lo cual refuerza la conclusión de que las medias de los puntajes de exámenes entre estos clústeres no difieren de manera significativa. La gráfica generada representa visualmente esta ausencia de diferencia, mostrando que los segmentos de los intervalos de confianza se superponen en gran medida. Esto sugiere que, dentro del grupo de mujeres, la pertenencia a un clúster específico no tiene un efecto sustancial sobre el desempeño académico medido por el puntaje de examen.

# Para hombres
mod_male <- aov(exam_score ~ cluster, data = subset(student, gender == "Male"))
TukeyHSD(mod_male)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = exam_score ~ cluster, data = subset(student, gender == "Male"))
## 
## $cluster
##          diff        lwr       upr     p adj
## 2-1  5.954626  -1.111666 13.020917 0.1179539
## 3-1  2.009701  -1.889757  5.909159 0.4468008
## 3-2 -3.944925 -11.204206  3.314356 0.4084996
plot(TukeyHSD(mod_male))

En los análisis post hoc realizados mediante la prueba de Tukey para los géneros femenino y masculino, se evaluaron las diferencias en los puntajes de examen (exam_score) entre los distintos clústeres identificados en el análisis de correspondencias múltiples (MCA).

En el caso de las mujeres, las comparaciones múltiples no revelaron diferencias estadísticamente significativas entre ningún par de clústeres (p.valores ajustados > 0.05). Las diferencias observadas entre clústeres oscilaron entre -2.34 y 2.46 puntos, pero los intervalos de confianza incluyeron el cero, lo que indica que las diferencias podrían deberse al azar.

De manera similar, en los hombres tampoco se encontraron diferencias significativas en los puntajes de examen entre los clústeres. Aunque se observó una diferencia de más de 5 puntos entre los clústeres 3 y 2, el valor p ajustado fue 0.180, indicando que la variabilidad interna dentro de cada grupo es suficientemente alta como para no atribuir la diferencia observada a un efecto real del clúster.

En ambos casos, los gráficos de intervalo de confianza de Tukey visualmente confirman estos hallazgos, ya que todas las barras horizontales cruzan la línea de referencia en cero. Esto sugiere que, tanto para mujeres como para hombres, los perfiles de clúster definidos en el MCA no se asocian significativamente con diferencias en los puntajes de examen. Por lo tanto, desde una perspectiva estadística, no hay evidencia concluyente de que la pertenencia a un determinado clúster influya en el rendimiento académico, medido por el puntaje de examen, cuando se segmenta por género.

library(car)
## Cargando paquete requerido: carData
## 
## Adjuntando el paquete: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
leveneTest(study_hours_per_day ~ cluster, data = student)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value Pr(>F)
## group   2  1.4543  0.234
##       997

La prueba de Levene presentada en la imagen fue utilizada para evaluar la homogeneidad de varianzas entre los grupos definidos por el clúster con respecto a la variable study_hours_per_day. Esta prueba es fundamental para verificar uno de los supuestos clave del ANOVA: que las varianzas de los grupos comparados sean aproximadamente iguales.

El valor de p = 0.22 indica que no se rechaza la hipótesis nula de igualdad de varianzas entre los clústeres. En términos prácticos, esto significa que las varianzas de las horas de estudio por día son homogéneas entre los clústeres, cumpliendo así con el supuesto necesario para que el análisis ANOVA sea válido. Esta verificación respalda la fiabilidad de las conclusiones derivadas del ANOVA previamente aplicado a esta variable.

MODELO LINEAL CON INTERACCIÓN

# ===============================
# MODELO LINEAL CON INTERACCIÓN
# ===============================
modelo_lm <- lm(exam_score ~ cluster * gender, data = student)

# Tabla ANOVA del modelo lineal
anova(modelo_lm)
## Analysis of Variance Table
## 
## Response: exam_score
##                 Df Sum Sq Mean Sq F value Pr(>F)
## cluster          2    484  242.04  0.8484 0.4284
## gender           2      1    0.67  0.0023 0.9977
## cluster:gender   2   1169  584.28  2.0481 0.1295
## Residuals      993 283284  285.28

El análisis de la tabla ANOVA obtenida del modelo lineal con interacción (exam_score ~ cluster * gender) revela que ninguna de las variables ni su interacción presentan efectos estadísticamente significativos sobre el puntaje del examen (exam_score). En detalle:

En consecuencia, se concluye que, en este modelo, ni las características agrupadas en clústeres ni el género, ni su interacción, explican diferencias relevantes en los puntajes de examen. Aunque el modelo fue correctamente especificado, los factores analizados no tienen un impacto estadístico significativo sobre la variable dependiente.

# Gráfico de interacción
ggplot(student, aes(x = cluster, y = exam_score, fill = gender)) +
  geom_boxplot(position = position_dodge(0.8)) +
  labs(title = "Interacción: Clúster y Género sobre Exam Score") +
  theme_minimal()

La gráfica de cajas presentada ilustra la interacción entre los clústeres y el género sobre el rendimiento académico medido a través del puntaje de examen (exam_score). Aunque visualmente se observan algunas diferencias en la mediana y dispersión entre combinaciones de género y clúster, el análisis estadístico previo (modelo lineal con interacción) indicó que estas diferencias no son estadísticamente significativas (p > 0.05 para todos los efectos principales e interacción).

Por ejemplo, las mujeres en el clúster 1 tienden a tener puntajes más concentrados en valores altos, mientras que los hombres del mismo clúster muestran una mayor variabilidad. En el clúster 2, los hombres presentan una mediana más alta, aunque con una mayor dispersión. El grupo “Other” sólo está presente en el clúster 2, lo que limita su comparación directa con los otros grupos.

En conjunto, esta visualización es útil para explorar patrones, pero debe interpretarse con cautela, dado que el modelo ANOVA no encontró evidencia de que estas diferencias se deban al efecto conjunto de cluster y gender. No obstante, el gráfico cumple un rol complementario en la validación visual de los resultados cuantitativos y es útil para detectar tendencias potenciales a investigar en estudios posteriores.

El análisis de medias marginales ajustadas (emmeans) presentado anteriormente permite evaluar las diferencias entre géneros dentro de cada clúster respecto al desempeño académico (exam_score), ajustando los valores mediante el método de Tukey para comparaciones múltiples.

# Comparaciones de medias marginales
library(emmeans)
## Welcome to emmeans.
## Caution: You lose important information if you filter this package's results.
## See '? untidy'
#mmeans() implementa comparaciones múltiples con ajuste tipo Tukey internamente.
# Comparar géneros dentro de cada clúster
emmeans(modelo_lm, pairwise ~ gender | cluster,adjust = "tukey")
## $emmeans
## cluster = 1:
##  gender emmean    SE  df lower.CL upper.CL
##  Female   70.0 1.520 993     67.0     73.0
##  Male     68.1 1.050 993     66.1     70.2
##  Other  nonEst    NA  NA       NA       NA
## 
## cluster = 2:
##  gender emmean    SE  df lower.CL upper.CL
##  Female   67.6 2.440 993     62.8     72.4
##  Male     74.1 2.780 993     68.7     79.6
##  Other    70.6 2.610 993     65.5     75.8
## 
## cluster = 3:
##  gender emmean    SE  df lower.CL upper.CL
##  Female   70.0 0.961 993     68.1     71.9
##  Male     70.2 1.260 993     67.7     72.6
##  Other  nonEst    NA  NA       NA       NA
## 
## Confidence level used: 0.95 
## 
## $contrasts
## cluster = 1:
##  contrast       estimate   SE  df t.ratio p.value
##  Female - Male      1.83 1.84 993   0.994  0.3204
##  Female - Other   nonEst   NA  NA      NA      NA
##  Male - Other     nonEst   NA  NA      NA      NA
## 
## cluster = 2:
##  contrast       estimate   SE  df t.ratio p.value
##  Female - Male     -6.50 3.70 993  -1.759  0.1840
##  Female - Other    -3.05 3.57 993  -0.853  0.6698
##  Male - Other       3.46 3.81 993   0.907  0.6358
## 
## cluster = 3:
##  contrast       estimate   SE  df t.ratio p.value
##  Female - Male     -0.18 1.58 993  -0.114  0.9095
##  Female - Other   nonEst   NA  NA      NA      NA
##  Male - Other     nonEst   NA  NA      NA      NA
## 
## P value adjustment: tukey method for varying family sizes

En términos generales, los resultados muestran que no existen diferencias estadísticamente significativas entre los géneros dentro de ninguno de los tres clústeres. Esto se evidencia por los valores p elevados en todos los contrastes (p > 0.05), lo que indica que cualquier diferencia observada en las medias estimadas podría atribuirse al azar y no a un efecto real del género sobre el rendimiento dentro de los clústeres.

Por ejemplo, en el clúster 1, aunque las mujeres tienen una media ligeramente superior (69.9 frente a 69.3 en hombres), la diferencia no es significativa (p = 0.914). En el clúster 2, donde se observa la mayor diferencia (74.1 hombres vs. 67.6 mujeres), el valor p de 0.184 tampoco alcanza significancia. La categoría “Other” presenta datos no estimables (nonEst) en los clústeres 1 y 3, probablemente debido a la falta de observaciones suficientes.

Este análisis confirma que, según el modelo lineal ajustado, el género no influye significativamente en el puntaje de examen dentro de cada clúster. No obstante, la variabilidad en las medias sugiere la necesidad de estudios con mayor tamaño muestral para validar estos hallazgos, especialmente en categorías con menor representación como “Other”.

# Comparar clústeres dentro de cada género
emmeans(modelo_lm, pairwise ~ cluster | gender, adjust = "tukey")
## $emmeans
## gender = Female:
##  cluster emmean    SE  df lower.CL upper.CL
##  1         70.0 1.520 993     67.0     73.0
##  2         67.6 2.440 993     62.8     72.4
##  3         70.0 0.961 993     68.1     71.9
## 
## gender = Male:
##  cluster emmean    SE  df lower.CL upper.CL
##  1         68.1 1.050 993     66.1     70.2
##  2         74.1 2.780 993     68.7     79.6
##  3         70.2 1.260 993     67.7     72.6
## 
## gender = Other:
##  cluster emmean    SE  df lower.CL upper.CL
##  1       nonEst    NA  NA       NA       NA
##  2         70.6 2.610 993     65.5     75.8
##  3       nonEst    NA  NA       NA       NA
## 
## Confidence level used: 0.95 
## 
## $contrasts
## gender = Female:
##  contrast            estimate   SE  df t.ratio p.value
##  cluster1 - cluster2  2.37856 2.87 993   0.828  0.6855
##  cluster1 - cluster3  0.00298 1.80 993   0.002  1.0000
##  cluster2 - cluster3 -2.37559 2.62 993  -0.907  0.6363
## 
## gender = Male:
##  contrast            estimate   SE  df t.ratio p.value
##  cluster1 - cluster2 -5.95463 2.97 993  -2.006  0.1112
##  cluster1 - cluster3 -2.00970 1.64 993  -1.227  0.4374
##  cluster2 - cluster3  3.94493 3.05 993   1.294  0.3989
## 
## gender = Other:
##  contrast            estimate   SE  df t.ratio p.value
##  cluster1 - cluster2   nonEst   NA  NA      NA      NA
##  cluster1 - cluster3   nonEst   NA  NA      NA      NA
##  cluster2 - cluster3   nonEst   NA  NA      NA      NA
## 
## P value adjustment: tukey method for varying family sizes

El análisis de comparaciones múltiples entre clústeres dentro de cada género, ajustado mediante el método de Tukey, permite evaluar si existen diferencias significativas en los puntajes de examen (exam_score) entre grupos definidos por la combinación de género y clúster.

Desde una perspectiva profesional, los resultados muestran que no se detectaron diferencias estadísticamente significativas entre clústeres para ninguno de los géneros, ya que todos los valores p son mayores a 0.05. En el caso de las mujeres, aunque el clúster 1 presenta una media ligeramente superior (69.9) en comparación con el clúster 2 (67.6) y el clúster 3 (70.1), estas diferencias no alcanzan significancia (p = 0.643 y p = 0.998, respectivamente). Lo mismo ocurre en los hombres, donde el clúster 2 tiene una media aparentemente más alta (74.1) que los demás, pero las diferencias también resultan no significativas (el valor p más bajo es 0.171 entre clústeres 2 y 3).

Para el género “Other”, los resultados no son estimables (nonEst) en varios contrastes debido a una posible baja frecuencia de observaciones en esas combinaciones, lo cual limita el análisis estadístico para este grupo.

En conclusión, este análisis sugiere que el clúster no es un factor diferenciador del rendimiento académico cuando se controla por género, y no se observan patrones consistentes que indiquen diferencias significativas en los puntajes de examen entre clústeres dentro de cada grupo de género. Este hallazgo fortalece la idea de que, en esta muestra, los factores considerados en la segmentación (clúster) no tienen una interacción relevante con el género respecto al rendimiento académico.

ggplot(student, aes(x = cluster, y = exam_score, color = gender, group = gender)) + 
  stat_summary(fun = mean, geom = "point", size = 3) +
  stat_summary(fun = mean, geom = "line", linewidth = 1) +
  labs(title = "Interacción Clúster × Género sobre exam_score (Media)",
       x = "Clúster", y = "Puntaje promedio de examen") +
  theme_minimal()

El gráfico de líneas presentado ilustra la interacción entre el clúster y el género sobre el puntaje promedio de examen (exam_score). En términos interpretativos, aunque visualmente se observan ciertas variaciones en las medias entre clústeres y géneros —por ejemplo, el grupo masculino en el clúster 2 presenta el promedio más alto (~74), mientras que las mujeres en ese mismo clúster tienen un promedio más bajo (~67.6)—, estos cambios no son estadísticamente significativos, tal como lo evidenciaron los análisis de ANOVA y las pruebas post hoc previamente reportadas.

Desde un enfoque profesional, este tipo de gráfico permite explorar posibles efectos de interacción, es decir, si el efecto de pertenecer a un clúster sobre el rendimiento académico depende del género. No obstante, debido a que los valores p de los contrastes entre medias (Tukey HSD) son superiores al umbral de significancia (0.05), se concluye que no hay evidencia suficiente para afirmar que existe una interacción significativa entre clúster y género sobre el puntaje de examen.

Este resultado sugiere que, aunque las diferencias visuales pueden parecer relevantes, no se deben sobredimensionar sin el respaldo estadístico adecuado, reafirmando la importancia de complementar las visualizaciones con pruebas inferenciales.