Análisis cluster en R Commander (Multivariante I)

El objetivo del Análisis de Conglomerados o Análisis Cluster (en terminología anglosajona) es el de formar grupos con los que se puedan clasificar las observaciones. En este capítulo mantendremos el nombre de Análisis cluster, ya que es mundialmente conocido de este modo y además también está incorporado en el ambiente estadístico en castellano. Con este análisis se busca observar que los datos de los grupos identificados sean los más similares posibles, mientras que los grupos como tal sean lo más diferentes posibles. De este modo, a partir de un simple vistazo somos capaces de identificar y comprender los datos que proceden de entornos multivariantes (Figura 74).

Figura 74: Proceso secuencial de aglomeración de las observaciones según la distancia entre puntos.

El análisis cluster es un procedimiento analítico robusto, puesto que no asume la normalidad ni la homocedasticidad de los datos, y puede ser utilizado tanto para variables cuantitativas como cualitativas.

6.1 Fases de un análisis cluster

Cualquier análisis cluster, independientemente del tipo que sea, sigue dos etapas que son estrictamente necesarias:

  1. A partir de la matriz de datos se construye la matriz de distancias o similaridades (globalmente conocida como matriz de proximidades).
  2. A partir de la matriz de proximidades se realiza el proceso de aglomeración o agrupamiento, es decir, la generación de los conglomerados o clusters.

Resumido de un modo sencillo, a partir de los datos ordenados de todas nuestras variables y observaciones se construye una matriz de distancias que es la que se usa para obtener los clusters. Estas medidas de distancia representan la proximidad presente entre los objetos de todas las variables. Cuanta mayor sea la distancia, mayor será la diferencia presente entre los objetos.

Hasta ahora no hemos definido qué es un cluster o conglomerado. Un cluster no es otra cosa que la agrupación de individuos en base a las semejanzas que tengan las medidas de sus observaciones. Puede ser un poco abstracto inicialmente, pero observando la Figura 75 puede que resulte un poco más sencillo. Ésta representa tres situaciones en la existe implícita una noción de distancia entre los puntos. Por un lado se habla de la cohesión interna (homogeneidad) y externa (separación).

Figura 75: Patrones que pueden ser identificados a nivel visual y que podrían ser traducidos a diferentes grupos (clusters).

A la hora de realizar un análisis cluster, es necesario tener en consideración los siguientes puntos:

  1. En vez de usar todas las variables que tengamos en nuestro análisis, es recomendable que se reduzca su número. Esto se puede realizar, por ejemplo, ejecutando un Análisis de Componentes Principales (PCA, de su acrónimo inglés Principal Component Analysis) antes de iniciar un análisis cluster. El PCA será tratado en el siguiente capítulo del libro.
  2. No se recomienda dar pesos diferentes a las variables.
  3. Comprobar los resultados usando diferentes tipos de agrupamientos.
  4. Es recomendable incluir tres individuos control, dos de los cuáles sepamos que deben agruparse conjuntamente y otro no. De este modo podemos tener más certeza a la hora de interpretar y valorar nuestros dendrogramas.

6.2 Tipos de análisis cluster

Según los elementos que agrupemos podemos distinguir 2 tipos de análisis de conglomerados de tipo exploratorio, que son el jerárquico aglomerativo y el cluster por el algoritmo k-medias:

  • Análisis cluster jerárquicos aglomerativos:
    • Análisis cluster de casos: se agrupan individuos. Lo desarrollaremos ampliamente en el siguiente capítulo.
    • Análisis cluster de variables: se agrupan variables, siendo muy útil cuando queremos reducir su número. Los medidas de distancias más utilizadas para realizar un análisis cluster de variables son el coeficiente de correlación y el valor absoluto de la correlación. Como distancias entre las variables se suele usar algún ángulo entre ellas, como son el arcoseno del coeficiente de correlación y el ángulo agudo correspondiente al arcoseno del valor absoluto de la correlación. Sin embargo, debido a que otros análisis, como el análisis de componente de principales o el factorial, buscan las variables con más peso, este tipo de cluster es muy poco utilizado y no lo desarrollaremos en este capítulo.
    • Análisis cluster de bloques: se agrupan individuos y variables, combinando el análisis cluster de casos y variables.
  • Análisis cluster de optimización por k-medias.

6.3 Análisis de conglomerados jerárquico de casos

En este análisis se agrupan los individuos observados que han generado la matriz de datos inicial. El análisis cluster de casos es uno de los análisis cluster más comunes. Su principal objetivo es el de agrupar objetos basados en sus características, por lo que se considera al análisis cluster como una técnica multivariante de clasificación.

Este análisis cluster se hace secuencialmente. En una primera fase se considera cada dato como un cluster separado, en una segunda fase se agrupan los cluster generados en la primera. Así hasta generar un cluster que agrupe a la totalidad de los datos. Se construyen por tanto para que los objetos dentro de un cluster tenga más similitudes que los objetos de otros clusters. El tipo de agrupamiento que determina dichos cluster puede ser diferente y se especifican en un apartado posterior. Una vez hecho el cluster, se representa gráficamente mediante un dendrograma.

Dependiendo del análisis cluster que estemos realizando y del problema en cuestión, tendremos que seleccionar entre varios tipos de distancias entre individuos (con la que se realizará el proceso de agrupamiento que originará la matriz de distancias) y posteriormente tendremos que seleccionar el tipo de agrupamiento.

6.3.1 Tipos de distancias entre individuos

Dependiendo del tipo de variables de la matriz original (cuantitativos, cualitativos o rango de observaciones), podemos definir las distancias idóneas para realizar un análisis cluster. El objetivo de seleccionar el tipo de distancia a nuestros datos es para poder obtener la matriz de distancias (o proximidades). A continuación mostraremos los tipos de datos y distancias asociadas (Figura 76):

Figura 77: Definición gráfica de la distancia Euclídea y distancia de Manhattan.

  • Datos cuantitativos en una escala lineal: incluyen variables con valores numéricos de tipo cuantitativo. Es importante la tipificación o estandarización de las escalas de las variables. Existen dos tipos principales (Figura 76):
    • Distancia Euclídea (o Euclidiana). Es la distancia más corta situada entre dos objetos definidos en el espacio por variables usadas en el análisis. Normalmente es la distancia más apropiada y usada cuando se trata de variables cuantitativas.
    • Distancia de Manhattan. Es la distancia entre dos puntos siguiendo el reticulado de la cuadrícula. Mientras que en la distancia Euclídea solo hay una recta posible, en la distancia Manhattan pueden haber varias rutas con la misma longitud, tal y como se muestra en la Figura 87, en la que ambas rutas mostradas presentan una distancia de 8 unidades entre A y B.
  • Datos que son rangos de observaciones:
    • Distancia Euclídea
    • Distancia de Manhattan
  • Datos cuantitativos en una escala no lineal: se refiere a variables cuyos datos no siguen un modelo lineal, como por ejemplo una exponencial. Suele ocurrir en variables como el crecimiento de una colonia de bacterias. El método a seguir consiste en transformar los datos hasta conseguir una relación de tipo lineal (por ejemplo, con logaritmos). Posteriormente se tipifican los datos y se procede como en Datos cuantitativos en una escala lineal.
  • Datos cualitativos: por ejemplo, sexo, color de ojos, materia prima, etc.
    • Coeficiente de emparejamiento simple (simple matching coefficient): cuando los datos son binarios simétricos. Es decir, pueden tomar dos valores y ambos valores son igual de importantes. Un ejemplo es presencia o ausencia de un cierto carácter, que se puede tipificar como 0 (ausencia) y 1 (presencia).
    • Coeficiente de Jaccard: cuando los datos son binarios asimétricos. Es decir, pueden tomar dos valores y ambos valores no son igual de importantes.
  • Datos en los que aparecen variables de varios tipos.

Figura 76: Tipos de distancias a la hora de generar la matriz de distancias en un análisis de conglomerados.

6.3.2 Tipos de agrupamiento

Una vez conocemos cuál es la distancia a aplicar según el tipo de datos que contenga nuestra matriz, tenemos que especificar cómo queremos que se agrupen (Figura 78). Estos agrupamientos se diferencian principalmente en el modo en que se calculan las distancias entre los clusters.

  • Agrupamiento simple (single linkage o nearest neighbour). Utiliza los puntos más próximos entre dos grupos. Este método es simple, pero tiende a producir clusters alargados y desordenados, produciendo dendrogramas no equilibrados. Esto se podría definir como la tendencia a incorporar datos intermedios a dos clusters a uno de ellos, en vez de crear un nuevo cluster. Sin embargo, si el grupo original ocupa un espacio multidimencional alargado, este agrupamiento funcionaría muy bien identificando esos clusters.
  • Agrupamiento completo (complete linkage o furthest neighbour). Se define como la mayor distancia presente entre los puntos más distantes de los grupos. Tiene precisamente la influencia contraria al agrupamiento simple. Tiene un sesgo hacia la producción de clusters de igual diámetro, siendo igualmente muy sensible a la presencia de outliers.
  • Agrupamiento promedio (group average clustering). Utiliza la media de las distancias entre todos los puntos de los grupos. Este método es uno de los preferidos por muchos investigadores, tanto por la consideración de que todas las observaciones influyen a lo hora de determinar el punto medio y porque se considera que funciona bien en la práctica. Sin embargo, está de algún modo sesgado en la producción de clusters de igual varianza.
  • Agrupamiento centroide (centroid linkage). Utiliza los puntos centroides de los dos grupos. Este agrupamiento no es equivalente al del agrupamiento promedio. Cuando se calculan los centroides, tratamos implícitamente a los datos como si estuviesen en un espacio euclídeo, es decir, donde sólo se pudieran tomar distancias euclídeas. Este agrupamiento es robusto para la presencia de outliers, pero no parece que se comporte tan bien como el agrupamiento promedio o el método de Ward.
  • Método de Ward. Trabaja de un modo muy diferente a los otros agrupamientos mencionados arriba. En cada etapa de agrupamiento se unen los dos clusters para los cuales exista el menor incremento en el valor total de la suma de los cuadrados de las diferencias. Es decir, une los casos buscando minimizar la varianza dentro de cada grupo. En la práctica, es uno de los métodos más empleados, ya que posee casi todas las ventajas del método promedio y suele ser más discriminativo en la determinación de los niveles de agrupación.

Figura 78: Tipos de agrupamientos para realizar un análisis de conglomerados.

6.3.3 Resolución en R Commander

Existe un interés por conocer cuáles son los elementos con los que se realizaban las cerámicas en el Antiguo Egipto, y ver con ello si existen diferencias entre las regiones de producción y obtención (Mallory-Greenough, Greenough, and Owen 1998). Para ello, a partir del ICP-MS se obtuvieron las concentraciones de los elementos traza de dos regiones diferenciadas: Karnak y Mendes. Los datos de la publicación los podéis descargar desde la página https://goo.gl/Z2gCp8 (Mallory-Greenough et al., 1998. Antiguo Egipto Cerámicas.txt). Nosotros hemos llamado al conjunto de datos cargado en R Commander como egipto.

En R Commander es muy sencillo llevar a cabo un análisis cluster jerárquico. Tenemos que seguir la siguiente ruta (Figura 79): Statistics - Dimensional analysis - Cluster analysis - Hierarchical cluster analysis....

Figura 79: Modo de llevar a cabo un análisis de conglomerados jerárquico en R Commander.

En la ventana que nos aparece tenemos que fijarnos que tenemos dos pestañas: Data y Options. En la pestaña Data, seleccionamos las variables que queremos incluir en el análisis cluster jerárquico, escribiendo el nombre como queramos identificar al cluster. Automáticamente te aparece el nombre de HClust.1. En la pestaña Options tenemos que seleccionar el tipo de distancia (Distance Measure) y el tipo de agrupamiento (Clustering Method). Igualmente, si deseamos observar el dendrograma, dejamos marcada la opción Plot Dendrogram.

Una vez se haya ejecutado un análisis cluster jerárquico, aparecerán desmarcadas los dos menús ocultos que se ven en la Figura 80.

Figura 80: Nuevas opciones disponibles al realizar un análisis de conglomerados jerárquico.

El análisis de conglomerados jérarquico para una distancia euclídea y agrupamiento promedio para nuestros datos del ejemplo se ve en la Figura 81. Se ha seleccionado la distancia euclídea porque funciona muy bien para datos cuantitativos y el agrupamiento promedio porque es uno de los más empleados, intentando reunir lo mejor del agrupamiento simple y el completo. Sin embargo, en la Figura 82 aparecen representados cuatros clusters jerárquicos realizados a partir de tipos de agrupamiento diferentes (Ward, simple, completo y centroide). De este modo podemos compararlos y observar cuáles son sus semejanzas y diferencias.

HClust.1 <- hclust(dist(model.matrix(~-1 + 
  Ba+Bi+Ce+Cs+Dy+Er+Eu+Gd+Hf+Ho+La+Li+Lu+Mo+Nb+Nd+Pb+Pr+Rb+Sm+Sr+Ta+Tb+Th+Tl+Tm+U+Y+Yb+Zr,
   egipto)) , method= "average")
plot(HClust.1, main= "Cluster Dendrogram for Solution HClust.1", xlab= 
  "Observation Number in Data Set egipto", 
  sub="Method=average; Distance=euclidian")

Figura 81: Dendrograma de un análisis de conglomerados utilizando una distancia euclidea y un agrupamiento promedio. Los datos se corresponden con los elementos traza de las cerámicas egipcias.

Si observamos detenidamente los número de los clusters y los contrastamos con su grupo real (observando la primera columna de los datos), podemos ver que están entremezclados las muestras de Mendes y de Karnak. Esto podría ser indicativo de que no existen diferencias entre ambas zonas geográficas, tal y como se comenta en el artículo original.

Figura 82: Dendrogramas generados con diferentes tipos de agrupamientos: Ward (arriba izquierda), simple (arriba derecha), completo (abajo izquierda) y centroide (abajo derecha).

Ahora bien, debido a la gran cantidad de datos, es recomendable en muchas ocasiones reducir su número seleccionando solo aquellas variables que tienen más influencia a la hora de distinguir entre grupos. En el artículo original se quedan sólo con 4: Pb, Li, Yb y Hf. Los datos con solo estas cuatro variables os los podéis descargar desde la página https://goo.gl/Z2gCp8 (Mallory-Greenough et al., 1998. Antiguo Egipto Cerámicas_Reducido.txt). Los cargamos en R Commander con el nombre egiptored y hacemos el cluster jerárquico euclídeo con Ward (Figura 83).

Figura 83: Dendrograma generado a partir de un análisis de conglomerados jerárquico para las 4 variables de los elementos traza de las cerámicas egipcias.

Como se puede observar en la Figura 83, existen dos grupos claramente diferenciados. Y esta diferencia se basa en el material: por un lado están las margas (Marl), a la derecha del cluster, y por otro están los limos (Silt). Dentro de los limos, vemos a la derecha un cluster diferenciado, caracterizado porque son los únicos que proceden de Karnak.

Es necesario mencionar que el análisis cluster es simplemente un método para observar y explorar cómo se distribuyen los datos de una matriz. En ningún caso se están realizando contrastes de hipótesis que avalen plenamente la formación de esos clusters. Es más, a partir de la visualización y análisis de los clusters jerárquicos podemos establecer hipótesis concretas en base a las evidencias observadas en esos grupos. Por eso es importante jugar con los diferentes tipos de distancias y agrupamientos. Y con esta evidencia observada, basada en el análisis exploratorio de los datos, es cuando sí se pueden realizar contrastes de hipótesis concretas y específicas para los datos seleccionados.

6.3.4 Personalizar los dendrogramas

En la sección anterior hemos visto y aprendido cómo realizar un análisis cluster de casos, representando gráficamente los dendrogramas según las funciones predeterminadas que ofrece R Commander. Pero hay muchísimas más posibilidades que no son accesibles desde los menús de nuestra interfaz gráfica. Y ello requiere que modifiquemos código. Pero estaros tranquilos, aquí os explicaré paso a paso cómo conseguir personalizar dendrogramas satisfactoriamente a través del código. Vamos a por ello.

6.3.4.1 Nivelar las ramas

Si nos fijamos en los dendrogramas anteriores, nos llama la atención que las ramas del árbol no acaban todas en el mismo punto. Acaban, como podemos comprobar, a diversas alturas, haciendo que sea algo irregular el dendrograma. Es más, el hecho de que estén cada una en una posición, hace que las etiquetas o siglas de cada rama estén formando una especie de escalera, haciéndolo visualmente poco atractivo. Entonces… ¿cómo podemos hacer para que todas las ramas acaben a la misma altura? Pues muy fácil, añadiendo al código el siguiente argumento: hang = -1.

plot(HClust.2, main= "Cluster Dendrogram for Solution HClust.2", xlab= 
  "Observation Number in Data Set egipto", 
  sub="Method=ward; Distance=euclidian", hang = -1)

Para ver su funcionamiento, retomemos el ejemplo con los datos ya empleados anteriormente de Mallory-Greenough et al., 1998. Antiguo Egipto Cerámicas.txt. Nosotros hemos mantenido el nombre de conjunto de datos como egipto. Al realizar un análisis cluster en R Commander, nos aparece el código que utiliza para realizar el dendrograma. Añadiendo el argumento hang = -1 al código de la figura y ejecutándolo, conseguimos que esté todo nivelado. En la Figura 96 podréis ver el resultado en varios dendrogramas.

Figura 83: Dendrograma generado a partir de un análisis de conglomerados jerárquico para las 4 variables de los elementos traza de las cerámicas egipcias.

6.3.4.2 Cambiar los colores

Personalizar el dendrograma modificando los colores implica que nos metamos de lleno en codificación. Pero no os asustéis, que os explicaré todo lo que se requiere para controlar la personalización del cluster. Nuestro análisis cluster se llama HClust.3, y es en el que se ha empleado la distancia euclidea y el agrupamiento simple.

op=par(bg="lightyellow")
plot(HClust.3, col="red", col.main ="green", col.lab="blue", lwd=3, lty=3, sub="", hang=-1, axes=FALSE)
axis(side=2, at= seq(0, 500, 100), col="pink", labels=FALSE, lwd=2)
mtext(seq(0, 500, 100), side=2, at=seq(0, 500, 100), line=1, col="purple", las=2)

Figura 84: Dendrograma con los colores modificados.

En la Figura 84 vemos el resultado de ejecutar todo el código anterior. Hemos visto cómo es el dendrograma después de ejecutar el código. Pero vayamos a entender el código que hemos ejecutado. Para ello lo hemos dividido en 4 líneas:

  1. op. Esta función define el color de fondo del cluster (bg="lightyellow")
  2. plot. Esta función define los colores del dendrograma como tal.
    1. Hay que definir sobre qué análisis cluster se va a hacer el dendrograma (HClust.3),
    2. el color de las líneas del árbol (col="red"),
    3. el color del título del cluster (col.main="green"),
    4. el color del título del eje izquierdo y del modelo situado abajo (col.lab="blue"),
    5. el grosor de las líneas del árbol (lwd=3),
    6. el tipo de línea, en nuestro caso discontinua (lty=3),
    7. el subtítulo del cluster, que en nuestro caso no hemos puesto nada (sub="").
    8. hang=-1. Lo describimos en la sección anterior,
  3. axis. Esta función define lo relacionado con el eje del cluster,
    1. definiendo su posición, en nuestro caso a la izquierda (side=2),
    2. la secuencia del intervalo (at=seq(0,500,100)). Esto se interpreta del siguiente modo: que los límites del eje sea entre los valores 0 y 500, marcando los intervalos cada 100,
    3. el color del eje (col="pink"),
    4. el grosor del eje (lwd=2),
    5. y las etiquetas de los números (labels=FALSE). En este caso, si pusiéramos TRUE aparecerían los números pero no nos permitiría personalizarlos. Aparecerían de modo predeterminado en negro y escritos en vertical. Como nuestra intención es modificarlos (y aquí viene la siguiente función, mtext), lo dejamos en FALSE.
  4. mtext. Está relacionado con el texto del margen asociado con el eje,
    1. definiendo la secuencia de números (at=seq(0,500,100)),
    2. la posición de los números, a la izquierda (side=2),
    3. el color de los números (col="purple"),
    4. la separación respecto al eje (line=1),
    5. y la orientación del texto, en nuestro caso horizontal (las=2). Si lo quisiéramos vertical sería las=3.

6.3.4.3 Dendrogramas con formas de triángulo

Esta es una modificación sustancial de la forma de los dendrogramas que hemos visto anteriormente. En vez de ser con líneas horizontales y verticales, en esta ocasión se van a generar estructuras más similares a triángulos que a cuadrados. Pero para ello, tenemos que modificar ligeramente el código. Siguiendo con los datos de las cerámicas del Antiguo Egipto, y a partir del código que se ejecuta al realizar un cluster con distancia euclídea y agrupamiento simple (HClust.3) tenemos que escribir el siguiente código.

clustertriangulo=as.dendrogram(HClust.3)
plot(clustertriangulo,type="triangle")

Figura 85: Dendrograma con distancia euclidea y agrupamiento simple, utilizando la forma de triángulos.

Para poder generar la visualización en triángulo del cluster, tenemos que generar un objeto (que nosotros hemos llamado clustertriangulo), en el que convertimos HClust.3 en un dendrograma. Finalmente, generamos el dendrograma con el comando plot, poniendo cuál es el objeto de dendrograma (clustertriangulo) y el modo de visualización que queremos (type="triangle"). Podéis ver el resultado de este dendrograma con la forma de triángulos en la Figura 85.

6.4 Análisis cluster por k-medias

El análisis cluster por k-medias es un método no jerárquico, por lo que no genera un dendrograma, sino que simplemente identifica los clusters.

Esta técnica requiere, como paso previo, definir el número de grupos (o clusters) en base a una hipótesis concreta. La agrupación en clusters lo realiza siguiendo la reubicación iterativa (iterative relocation), basado en un algoritmo que clasifica los casos en tantos clusters como grupos definidos previamente por el investigador. Esta reubicación lo que hace es ir cambiando de cluster de un modo progresivo y paso a paso (iterativo) cada observación, y calculando la variabilidad presente.

El objetivo es que el algoritmo encuentre la variabilidad mínima dentro del cluster, y máxima entre clusters. Es decir, busca la mayor homogeneidad dentro de cada uno de los clusters y la mayor heterogeneidad entre los clusters. Para eso va recolocando cada observación en clusters diferentes y analizando las variabilidades presentes.

El empleo de este análisis es limitado, ya que requiere partir de un número determinado de clusters. Sin embargo, si no es conocido el número potencial de clusters, es recomendable realizar previamente un análisis cluster jerárquico para evaluar cuántos clusters debemos indicar en el análisis por k-medias. Una vez evaluados con este análisis cuántos clusters pueden ser identificados, podemos realizar el cluster por k-medias.

Figura 86: Ejemplo de conglomerado de k-medias en el que se marcan que hay tres grupos, cada uno con su centroide y a su vez con un centroide general (azul).

En la Figura 86 aparece a la izquierda un conjunto de 300 datos. Simplemente observando cómo se distribuyen podemos sugerir la presencia de 3 clusters, ¿verdad? Al indicarle al algoritmo de k-medias que son 3 grupos, éste nos pinta cada uno de un color, tal y como se puede ver en la imagen del centro. Cada uno de estos clusters está definido en torno a un centroide (puntos verdes). A su vez, el centroide general de todos los datos se marca como un punto en color azul en la figura de la derecha.

Analizando un poco más en detalle las variabilidades respecto a los centroides, podremos hacernos una idea de cómo funciona este análisis cluster por k-medias. Los tipos de variabilidades se explican gráficamente en la Figura 87.

Figura 87: Variabilidad intragrupal (o intracluster) e intergrupal (o intercluster). La figura está simplificada para no llenarla de cientos de flechas. Por ejemplo, las flechas rojas deberían ser 100, comenzando cada una en una observación de un punto del cluster rojo hacia su centroide. Ídem con el cluster verde y negro. Igualmente, deberían de haber 300 flechas de color amarillo, yendo cada una desde un punto de la observación hasta el centroide general de la figura, de color azul.

Los resultados que ofrece R Commander al realizar un análisis cluster por k-medias tienen varias partes, relacionadas con la variabilidad observable en la distribución de los puntos (Figura 87):

  • Variabilidad intracluster (withinss). Se refiere a la variabilidad presente dentro de cada uno de los clusters entre sus observaciones y su centroide. Habrá tantas variabilidades como clusters hayamos seleccionado. La suma de todas estas variabilidades intracluster se observa con tot.withinss.
  • Variabilidad intercluster (betweenss). Se refiere a la variabilidad presente entre cada uno de los clusters con el centroide general.
  • Variabilidad total (totss). Se refiere a la variabilidad de cada observación con el centroide general. Es el resultado de la suma de withinss y betweenss.

Uno de los elementos más importantes de este análisis por k-medias es el de la asignación a cada una de las observaciones a un cluster en concreto. Todos estos conceptos serán mejor comprendidos en los dos ejemplos siguientes.

6.4.1 Resolución en R Commander

En un nivel estratigráfico de un yacimiento arqueológico han aparecido diferentes mandíbulas de cérvidos, y se sospecha que pueden pertenecer a dos especies o grupos diferentes. Se sabe que pueden diferenciarse por las dimensiones de sus molares, concretamente a través de la longitud y anchura. Según estos parámetros, observando directamente las mandíbulas, podríamos sospechar que hay dos grupos. ¿Sería posible asignar a cada una de las mandíbulas a un grupo en particular?

La descripción de este ejemplo nos indica que podríamos clasificar en un cluster todas las mandíbulas. Como se sospecha que son dos especies, no es necesario que realicemos un análisis cluster jerárquico, puesto que asumimos que debemos obtener dos grupos. Esto hace que el análisis cluster por k-medias tenga todo su potencial aquí.

Nos descargamos los datos desde la página https://goo.gl/Z2gCp8 (Dos grupos de cervidos, k-means.txt), y los cargamos en R Commander. Nosotros hemos llamado al conjunto de datos como cervidos. En R Commander tenemos que seguir la siguiente ruta para realizar un análisis cluster por k-medias (Figura 88): Statistics - Dimensional analysis - Cluster analysis - k-means cluster analysis....

Figura 88: Ruta para realizar un análisis de conglomerados por k-medias en R Commander.

La ventana que se abre tiene dos pestañas. En la primera de ellas (Data) se seleccionan todas las variables que queramos incluir en el análisis cluster por k-medias. En la segunda pestaña (Options), se selecciona el número de clusters (Number of clusters), que en nuestro caso es 2. Se dejan con el valor de 10 tanto el número de semillas iniciales (Number of starting seeds) y el número máximo de iteraciones (Maximum iterations).

El número de iteraciones y de semillas iniciales se usan para facilitar y dar unos límites a la hora de buscar la asignación más óptima de cada una de las mandíbulas a su grupo. De un modo generalizado, la modificación de esos valores no afecta en absoluto los resultados numéricos. Es más, en este ejemplo hemos probado la modificación de ambos tiradores, y los resultados numéricos han permanecido invariables.

Por otra parte, marcamos las tres casillas inferiores de la pestaña Options para que nos dé la figura con la distribución de los grupos (Bi-plot of clusters), los datos numéricos del análisis (Print cluster summary), y nos asigne en una nueva variable en el conjunto de datos (que podemos cambiar el nombre, pero por defecto aparece KMeans) cada una de las mandíbulas a uno de los dos clusters que hemos marcado (Assign clusters to the data set). Los resultados pueden verse a continuación.

.cluster <-  KMeans(model.matrix(~-1 + m1lenght + m1width + m2lenght + 
  m2width + m3lenght + m3width, cervidos), centers = 2, iter.max = 10, 
  num.seeds = 10)
.cluster$size # Cluster Sizes
## [1] 13 11
.cluster$centers # Cluster Centroids
##   new.x.m1lenght new.x.m1width new.x.m2lenght new.x.m2width new.x.m3lenght
## 1       24,60000      13,60000       19,22308     11,738462       17,26923
## 2       20,48182      11,68182       15,50000      9,536364       13,88182
##   new.x.m3width
## 1     10,476923
## 2      8,518182
.cluster$withinss # Within Cluster Sum of Squares
## [1] 51,12462 23,03091
.cluster$tot.withinss # Total Within Sum of Squares
## [1] 74,15552
.cluster$betweenss # Between Cluster Sum of Squares
## [1] 325,6861
biplot(princomp(model.matrix(~-1 + m1lenght + m1width + m2lenght + m2width 
  + m3lenght + m3width, cervidos)), xlabs = as.character(.cluster$cluster))
cervidos$KMeans <- assignCluster(model.matrix(~-1 + m1lenght + m1width + 
  m2lenght + m2width + m3lenght + m3width, cervidos), cervidos, 
  .cluster$cluster)
remove(.cluster)

Figura 89: Representación gráfica del cluster por k-medias, indicando cómo están distribuidos los dos cluster indicados (1 y 2). Las flechas rojas indican la influencia de cada variable y su dirección como factores para discriminar en los grupos.

Como podemos observar, al principio se indica cuántas mandíbulas se asignan a cada cluster (cluster$size) para después indicar los números de los centroides (cluster$centers). A continuación ya comentan las variabilidades, tantos intracluster (cluster$withinss y cluster$tot.withinss) como intercluster (cluster$betweenss). Finaliza con una representación gráfica (Figura 89) y la inclusión de cada mandíbula a un cluster en particular de los dos marcados inicialmente (Tabla 19).

m1lenghtm2lenghtm3lenghtm1widthm2widthm3widthKMeans
19,214,712,811,19,17,82
19,414,312,511,09,27,82
19,714,513,511,38,88,22
20,015,314,111,49,68,32
20,715,813,611,610,28,92
20,815,413,811,59,68,72
20,915,914,312,010,08,52
21,016,714,612,09,79,32
21,115,614,412,49,68,82
21,216,114,811,89,49,02
21,316,214,312,49,78,42
23,117,716,312,811,19,71
23,117,816,212,711,210,21
23,117,916,013,011,09,31
23,918,516,113,010,710,01
24,319,217,313,111,410,31
24,419,417,813,812,210,61
24,819,016,713,611,39,81
25,219,717,713,712,211,11
25,420,017,514,711,911,11
25,420,218,013,912,711,11
25,419,617,513,812,010,21
25,820,418,714,212,811,31
25,920,518,714,512,111,51

Tabla 19: Datos de los cérvidos donde se observa la última columna (KMeans), asignando cada observación a un grupo u otro.

Referencias

Mallory-Greenough, Leanne M., John D. Greenough, and J. Victor Owen. 1998. “New Data for Old Pots: Trace-Element Characterization of Ancient Egyptian Pottery Using ICP-MS.” Journal of Archaeological Science 25 (1): 85–97. https://doi.org/10.1006/jasc.1997.0202.

#DATACAMP Los mejores cursos interactivos de CIENCIA DE DATOS y DATA SCIENTIST del mundo / #R #PYTHON #SQL #SHELL y más! ♥️

X