Cómo interpretar la altura del dendrograma para la agrupación por correlación


8

Dado el siguiente marco de datos:

df <- data.frame(x1 = c(26, 28, 19, 27, 23, 31, 22, 1, 2, 1, 1, 1),
                 x2 = c(5, 5, 7, 5, 7, 4, 2, 0, 0, 0, 0, 1),
                 x3 = c(8, 6, 5, 7, 5, 9, 5, 1, 0, 1, 0, 1),
                 x4 = c(8, 5, 3, 8, 1, 3, 4, 0, 0, 1, 0, 0),
                 x5 = c(1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0),
                 x6 = c(2, 3, 1, 0, 1, 1, 3, 37, 49, 39, 28, 30))

Tal que

> df
   x1 x2 x3 x4 x5 x6
1  26  5  8  8  1  2
2  28  5  6  5  1  3
3  19  7  5  3  1  1
4  27  5  7  8  1  0
5  23  7  5  1  1  1
6  31  4  9  3  0  1
7  22  2  5  4  1  3
8   1  0  1  0  0 37
9   2  0  0  0  0 49
10  1  0  1  1  0 39
11  1  0  0  0  0 28
12  1  1  1  0  0 30

Me gustaría agrupar a estos 12 individuos usando grupos jerárquicos y usando la correlación como medida de distancia. Entonces esto es lo que hice:

clus <- hcluster(df, method = 'corr')

Y esta es la trama de clus:

dendograma

Este dfes en realidad uno de los 69 casos en los que estoy haciendo análisis de clúster. Para llegar a un punto de corte, he mirado varios dendogramas y jugué con el hparámetro cutreehasta que estuve satisfecho con un resultado que tenía sentido para la mayoría de los casos. Ese número fue k = .5. Entonces esta es la agrupación con la que terminamos después:

> data.frame(df, cluster = cutree(clus, h = .5))
   x1 x2 x3 x4 x5 x6 cluster
1  26  5  8  8  1  2       1
2  28  5  6  5  1  3       1
3  19  7  5  3  1  1       1
4  27  5  7  8  1  0       1
5  23  7  5  1  1  1       1
6  31  4  9  3  0  1       1
7  22  2  5  4  1  3       1
8   1  0  1  0  0 37       2
9   2  0  0  0  0 49       2
10  1  0  1  1  0 39       2
11  1  0  0  0  0 28       2
12  1  1  1  0  0 30       2

Sin embargo, tengo problemas para interpretar el corte de .5 en este caso. He echado un vistazo a Internet, incluidas las páginas de ayuda ?hcluster, ?hclusty ?cutreesin éxito. Lo más lejos que he llegado a comprender el proceso es haciendo esto:

Primero, miro cómo se realizó la fusión:

> clus$merge
      [,1] [,2]
 [1,]   -9  -11
 [2,]   -8  -10
 [3,]    1    2
 [4,]  -12    3
 [5,]   -1   -4
 [6,]   -3   -5
 [7,]   -2   -7
 [8,]   -6    7
 [9,]    5    8
[10,]    6    9
[11,]    4   10

Lo que significa que todo comenzó uniendo las observaciones 9 y 11, luego las observaciones 8 y 10, luego los pasos 1 y 2 (es decir, uniendo 9, 11, 8 y 10), etc. Leer sobre el mergevalor de hclusterayuda a comprender la matriz anterior.

Ahora miro la altura de cada paso:

> clus$height
[1] 1.284794e-05 3.423587e-04 7.856873e-04 1.107160e-03 3.186764e-03 6.463286e-03 
6.746793e-03 1.539053e-02 3.060367e-02 6.125852e-02 1.381041e+00
> clus$height > .5
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE

Lo que significa que la agrupación se detuvo solo en el paso final, cuando la altura finalmente supera los 0,5 (como ya había señalado el Dendograma, por cierto).

Ahora, aquí está mi pregunta: ¿cómo interpreto las alturas? ¿Es el "resto del coeficiente de correlación" (no sufra un ataque cardíaco)? Puedo reproducir la altura del primer paso (unión de las observaciones 9 y 11) así:

> 1 - cor(as.numeric(df[9, ]), as.numeric(df[11, ]))
[1] 1.284794e-05

Y también para el siguiente paso, que une las observaciones 8 y 10:

> 1 - cor(as.numeric(df[8, ]), as.numeric(df[10, ]))
[1] 0.0003423587

Pero el siguiente paso implica unir esas 4 observaciones, y no sé:

  1. La forma correcta de calcular la altura de este paso
  2. Lo que realmente significa cada una de esas alturas.

1
Es posible que pueda obtener información de mi respuesta aquí: Determinar usuarios similares a partir de la agrupación jerárquica .
gung - Restablece a Monica

Respuestas:


5

Recuerde que en la agrupación jerárquica, debe definir una métrica de distancia entre las agrupaciones. Por ejemplo, en la agrupación de enlaces promedio jerárquica (probablemente la opción más popular), la distancia entre grupos se define como la distancia promedio entre todos los pares entre grupos. La distancia entre pares también debe definirse y podría ser, por ejemplo, la distancia euclidiana (o la distancia de correlación en su caso). Entonces, la distancia entre grupos es una forma de generalizar la distancia entre pares.

En el dendrograma, el eje y es simplemente el valor de esta métrica de distancia entre grupos. Por ejemplo, si ve dos grupos combinados a una alturax, significa que la distancia entre esos grupos era x.


Intrigante. ¿Cómo calcularía entonces la distancia de correlación entre los grupos {9, 11} y {8, 10}, en mi caso?
Waldir Leoncio

2
Si está utilizando un enlace promedio, entonces eso sería 0.25(d(9,8)+d(9,10)+d(11,8)+d(11,10)), dónde d(a,b) es la distancia (distancia de correlación) entre instancias a y b.
Bitwise
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.