Descripción general del dataset

El conjunto de datos seleccionado se denomina Mushroom Classification y está disponible en https://www.kaggle.com/datasets/uciml/mushroom-classification. Contiene un total de 8124 registros correspondientes a distintas setas, que especifican, mediante 22 distintas variables cualitativas, las características de cada hongo y una columna que indica si es venenoso o comestible.

Especificación de las variables

Selección de variables

Para el ACM se seleccionó algunas variables del dataset ya que incluir las 22 generaría demasiadas modalidades, gráficos saturados y ruido en el análisis con resultados difíciles de interpretar. La elección de las variables se hizo analizando cúales realmente diferencian a los hongos, además que tengan un número no muy grande de categorías y que no son redundantes entre sí. Estas permiten captar patrones claros sin distorsionar el análisis. La variable class (comestible/venenoso) se utiliza como suplementaria a fin de permitir interpretar la relación entre las características y la clase sin afectar la estructura del análisis.

Variables escogidas para ACM

Las variables seleccionadas como activas tienen un número manejable de categorías, lo que evita saturar el análisis y permite que cada una aporte información clara sobre diferencias reales entre los hongos. Además, sus frecuencias están bien distribuidas, sin modalidades extremadamente raras o dominantes. Por otro lado, la variable class (comestible/venenoso) se usa como suplementaria porque, aunque está bien balanceada, no debe intervenir en la formación de los ejes.

Análisis de Correspondencia Múltiple

Valores propios y varianza explicada por cada dimensión
Varianza % Varianza % Acumulado
dim 1 0.500 13.633 13.633
dim 2 0.348 9.495 23.127
dim 3 0.314 8.562 31.690
dim 4 0.284 7.745 39.435
dim 5 0.269 7.326 46.760
dim 6 0.259 7.057 53.818
dim 7 0.203 5.539 59.357
dim 8 0.170 4.642 63.999
dim 9 0.167 4.545 68.544
dim 10 0.167 4.545 73.090
dim 11 0.157 4.280 77.370
dim 12 0.147 4.021 81.391
dim 13 0.126 3.423 84.814
dim 14 0.120 3.275 88.089
dim 15 0.102 2.790 90.879
dim 16 0.085 2.329 93.208
dim 17 0.083 2.275 95.483
dim 18 0.059 1.607 97.090
dim 19 0.043 1.172 98.261
dim 20 0.032 0.866 99.127
dim 21 0.024 0.642 99.770
dim 22 0.008 0.230 100.000

La Dimensión 1 explica el 13.63% de la inercia total, mientras que la Dimensión 2 aporta un 9.49% y la Dimensión 3 un 8.56%. En conjunto, las tres primeras dimensiones suman un acumulado de varianza del 31.6%. Aunque es un porcentaje bajo, en técnicas como el ACM es normal que cada dimensión explique muy poca varianza, ya que existen varias variables categóricas y a su vez cada una, con muchas modalidades. Por lo tanto, en ACM se prioriza la interpretación de las categorías en vez del acumulado de varianza explicada dado que no es un criterio fuerte. Para este caso en particular se seleccionan las primeras tres dimensiones que tienen mejor capacidad interpretativa.

Biplot Representación Simultánea

El biplot de representación simultánea permite visualizar:

Interpretación mediante contribuciones y cosenos cuadrados

Las modalidades que más aportan a la dimensión 1 son estrechas, prados, pescado, con moretones, entre otros, todas por encima delpromedio. Esta dimensión captura diferencias importantes relacionadas con el olor del hongo, el tamaño de las láminas, el hábitat y la presencia de moretones. Estas características son las que más ayudan a distinguir a unos hongos de otros.

El heatmap permite ver qué individuos aportan más a la construcción de cada dimensión del ACM. En general, se observa que las dimensiones 1 y 2 tienen contribuciones bastante bajas, lo que indica que muchos individuos influyen un poco, pero ninguno domina claramente esos ejes. En cambio, la dimensión 3 muestra contribuciones más altas, donde sobresalen individuos con perfiles muy extremos o inusuales.

Respecto a las gráficas anteriores, que muestran los cosenos cuadrados de los individuos en los planos que se forman entre dimensiones, se puede resaltar que:

Clustering

Dado que el conjunto de datos es muy grande y consta de 8124 individuos no es adecuado usar Clasificación jerárquica clásica porque no es posible visualizar gráficamente a los individuos. Por esta razón se selecciona el método de clustering llamado CLARA (Clustering Large Applications). De esta manera se reduce el tiempo de cálculo y se puede representar de mejor manera los cluster y los individuos.

Estimación del número de clústeres

Para determinar el número óptimo de clústeres se utiliza el método denominado Silhouette Promedio, mediante un índica Silhouette que va desde -1 a 1:

En este caso se observa que la gráfica no muestra un codo claramente definido para determinar el k apropiado, por lo cual para elegir k se mira donde el incremento empieza a ser menor, en este caso en k = 5.

Mapa factorial de individuos (ACM) con elipses de concentración por clúster de CLARA

En el gráfico anterior se observa lo siguiente:

  • Cada clúster es representado por una elipse, cada una de ellas es compacta y representa la zona del plano donde se concentra la mayor parte de los individuos de cada clúster.

  • La superposición de los elipses indica la dispersión de los datos. Se evidencia que todos tienen superposición parcial con los demás, esto quiere decir que los clústeres comparten características similares en las dos primeras dimensiones.

  • El clúster 5, el más pequeño, representa individuos con características muy específicas.

  • Por otro lado, los clústeres alargados como el 2 y 3, indican mayor variabilidad.

Valores Test

Resultado chi-cuadrado

CLARA internamente asigna cada individuo al clúster que pertenece y esto lo hace creando una variable denominada clúster. Con esta variable y las variables activas utilizadas en el ACM, se realiza la prueba chi-cuadrado:

Prueba Chi-cuadrado entre la variable Cluster y cada variable activa
Prueba Chi-cuadrado
Variable p-value df
odor 0 32
bruises 0 4
gill.size 0 4
stalk.shape 0 4
population 0 20
habitat 0 24

En la anterior tabla se ven todos los valores p-value en cero. Esto significa que p-value es muy pequeño y por tanto extremadamente significativo. Esto indica que las variables activas influyen en cómo se formaron los clústeres y de esta manera cada clúster tiene un perfil particular.

Tablas de valores-test por categoría

A continuación se presentan las tablas de valores-test por categoría para conocer que categorías o modalidades de las variables activas están significativamente asociadas a cada clúster:

Cluster 1
Cla/Mod Mod/Cla Global p.value v.test
habitat=praderas 63.501 80.998 26.440 0 Inf
population=disperso 64.103 47.506 15.362 0 37.223
population=abundante 100.000 22.803 4.727 0 35.741
odor=picante 100.000 15.202 3.151 0 28.832
habitat=urbano 86.957 19.002 4.530 0 28.126
odor=ninguno 28.231 59.145 43.427 0 14.559
gill.size=anchas 24.590 81.948 69.079 0 13.324
bruises=sin_moretones 24.768 69.834 58.444 0 10.797
odor=mohoso 0.000 0.000 0.443 0 -3.685
population=solitario 15.421 15.677 21.073 0 -6.255
habitat=baldios 0.000 0.000 2.363 0 -9.246
odor=creosota 0.000 0.000 2.363 0 -9.246
bruises=con_moretones 15.047 30.166 41.556 0 -10.797
habitat=prados 0.000 0.000 3.594 0 -11.537
population=agrupado 0.000 0.000 4.185 0 -12.501
gill.size=estrechas 12.102 18.052 30.921 0 -13.324
population=numeroso 0.000 0.000 4.924 0 -13.619
odor=anis 0.000 0.000 4.924 0 -13.619
odor=almendra 0.000 0.000 4.924 0 -13.619
odor=pescado 0.000 0.000 7.090 0 -16.517
odor=especiado 0.000 0.000 7.090 0 -16.517
habitat=hojarasca 0.000 0.000 10.241 0 -20.105
habitat=senderos 0.000 0.000 14.082 0 -23.913
population=varios 5.842 14.014 49.729 0 -34.372
habitat=bosques 0.000 0.000 38.749 0 -Inf
Cluster 2
Cla/Mod Mod/Cla Global p.value v.test
population=numeroso 100.000 45.249 4.924 0.000 Inf
stalk.shape=ensanchado 25.142 100.000 43.279 0.000 Inf
odor=anis 88.000 39.819 4.924 0.000 37.689
odor=almendra 88.000 39.819 4.924 0.000 37.689
habitat=prados 100.000 33.032 3.594 0.000 37.229
bruises=con_moretones 21.919 83.710 41.556 0.000 27.342
gill.size=anchas 15.752 100.000 69.079 0.000 26.349
habitat=praderas 23.091 56.109 26.440 0.000 19.892
population=disperso 28.205 39.819 15.362 0.000 18.973
odor=mohoso 0.000 0.000 0.443 0.016 -2.417
habitat=senderos 8.392 10.860 14.082 0.003 -2.994
habitat=baldios 0.000 0.000 2.363 0.000 -6.372
odor=creosota 0.000 0.000 2.363 0.000 -6.372
odor=picante 0.000 0.000 3.151 0.000 -7.449
population=solitario 5.607 10.860 21.073 0.000 -8.418
population=agrupado 0.000 0.000 4.185 0.000 -8.679
habitat=urbano 0.000 0.000 4.530 0.000 -9.056
population=abundante 0.000 0.000 4.727 0.000 -9.265
odor=pescado 0.000 0.000 7.090 0.000 -11.515
odor=especiado 0.000 0.000 7.090 0.000 -11.515
habitat=hojarasca 0.000 0.000 10.241 0.000 -14.041
odor=ninguno 5.102 20.362 43.427 0.000 -15.220
odor=fetido 0.000 0.000 26.588 0.000 -24.036
gill.size=estrechas 0.000 0.000 30.921 0.000 -26.349
bruises=sin_moretones 3.033 16.290 58.444 0.000 -27.342
habitat=bosques 0.000 0.000 38.749 0.000 -30.442
population=varios 0.891 4.072 49.729 0.000 -31.680
stalk.shape=adelgazado 0.000 0.000 56.721 0.000 -Inf
Cluster 3
Cla/Mod Mod/Cla Global p.value v.test
population=varios 40.396 100.000 49.729 0.000 Inf
stalk.shape=adelgazado 35.417 100.000 56.721 0.000 Inf
gill.size=estrechas 64.968 100.000 30.921 0.000 Inf
odor=pescado 100.000 35.294 7.090 0.000 Inf
odor=especiado 100.000 35.294 7.090 0.000 Inf
bruises=sin_moretones 32.350 94.118 58.444 0.000 36.033
habitat=hojarasca 69.231 35.294 10.241 0.000 33.018
habitat=senderos 33.566 23.529 14.082 0.000 11.631
habitat=bosques 21.347 41.176 38.749 0.025 2.246
odor=fetido 17.778 23.529 26.588 0.002 -3.155
odor=mohoso 0.000 0.000 0.443 0.000 -3.610
odor=anis 12.000 2.941 4.924 0.000 -4.364
odor=almendra 12.000 2.941 4.924 0.000 -4.364
habitat=baldios 0.000 0.000 2.363 0.000 -9.076
odor=creosota 0.000 0.000 2.363 0.000 -9.076
odor=picante 0.000 0.000 3.151 0.000 -10.569
habitat=prados 0.000 0.000 3.594 0.000 -11.329
population=agrupado 0.000 0.000 4.185 0.000 -12.276
habitat=urbano 0.000 0.000 4.530 0.000 -12.799
population=abundante 0.000 0.000 4.727 0.000 -13.090
population=numeroso 0.000 0.000 4.924 0.000 -13.375
population=disperso 0.000 0.000 15.362 0.000 -24.646
population=solitario 0.000 0.000 21.073 0.000 -29.475
habitat=praderas 0.000 0.000 26.440 0.000 -33.694
bruises=con_moretones 2.844 5.882 41.556 0.000 -36.033
stalk.shape=ensanchado 0.000 0.000 43.279 0.000 -Inf
gill.size=anchas 0.000 0.000 69.079 0.000 -Inf
odor=ninguno 0.000 0.000 43.427 0.000 -Inf
Cluster 4
Cla/Mod Mod/Cla Global p.value v.test
stalk.shape=ensanchado 54.949 87.978 43.279 0.000 Inf
odor=fetido 62.222 61.202 26.588 0.000 Inf
bruises=sin_moretones 39.848 86.157 58.444 0.000 32.441
population=agrupado 100.000 15.483 4.185 0.000 30.386
habitat=senderos 58.042 30.237 14.082 0.000 24.055
habitat=baldios 100.000 8.743 2.363 0.000 22.546
odor=creosota 100.000 8.743 2.363 0.000 22.546
odor=mohoso 100.000 1.639 0.443 0.000 9.468
population=varios 31.485 57.923 49.729 0.000 9.002
gill.size=anchas 28.867 73.770 69.079 0.000 5.620
habitat=hojarasca 30.769 11.658 10.241 0.011 2.535
habitat=bosques 23.761 34.062 38.749 0.000 -5.304
gill.size=estrechas 22.930 26.230 30.921 0.000 -5.620
habitat=urbano 13.043 2.186 4.530 0.000 -6.607
odor=picante 0.000 0.000 3.151 0.000 -12.604
habitat=prados 0.000 0.000 3.594 0.000 -13.504
population=abundante 0.000 0.000 4.727 0.000 -15.590
population=numeroso 0.000 0.000 4.924 0.000 -15.928
odor=anis 0.000 0.000 4.924 0.000 -15.928
odor=almendra 0.000 0.000 4.924 0.000 -15.928
odor=ninguno 17.687 28.415 43.427 0.000 -16.865
habitat=praderas 13.408 13.115 26.440 0.000 -17.398
population=disperso 7.692 4.372 15.362 0.000 -18.477
odor=pescado 0.000 0.000 7.090 0.000 -19.305
odor=especiado 0.000 0.000 7.090 0.000 -19.305
bruises=con_moretones 9.005 13.843 41.556 0.000 -32.441
stalk.shape=adelgazado 5.729 12.022 56.721 0.000 -Inf
Cluster 5
Cla/Mod Mod/Cla Global p.value v.test
habitat=bosques 54.892 100 38.749 0 Inf
stalk.shape=adelgazado 37.500 100 56.721 0 Inf
bruises=con_moretones 51.185 100 41.556 0 Inf
odor=ninguno 48.980 100 43.427 0 Inf
gill.size=anchas 30.791 100 69.079 0 38.347
population=solitario 50.467 50 21.073 0 31.069
odor=mohoso 0.000 0 0.443 0 -3.748
habitat=baldios 0.000 0 2.363 0 -9.387
odor=creosota 0.000 0 2.363 0 -9.387
odor=picante 0.000 0 3.151 0 -10.928
habitat=prados 0.000 0 3.594 0 -11.712
population=agrupado 0.000 0 4.185 0 -12.690
habitat=urbano 0.000 0 4.530 0 -13.230
population=abundante 0.000 0 4.727 0 -13.530
population=numeroso 0.000 0 4.924 0 -13.825
odor=anis 0.000 0 4.924 0 -13.825
odor=almendra 0.000 0 4.924 0 -13.825
odor=pescado 0.000 0 7.090 0 -16.764
odor=especiado 0.000 0 7.090 0 -16.764
habitat=hojarasca 0.000 0 10.241 0 -20.406
habitat=senderos 0.000 0 14.082 0 -24.271
population=disperso 0.000 0 15.362 0 -25.469
habitat=praderas 0.000 0 26.440 0 -34.829
odor=fetido 0.000 0 26.588 0 -34.947
gill.size=estrechas 0.000 0 30.921 0 -38.347
stalk.shape=ensanchado 0.000 0 43.279 0 -Inf
bruises=sin_moretones 0.000 0 58.444 0 -Inf

Finalmente el clúster 5 reune hongos muy particulares que habitan principalmente en los bosques, con tallos delgados, olores neutros, láminas anchas, que viven en solitario y que presentan moretones cuando se manipulan. Esto hace que se distingan claramente de los demás clústeres.