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
:
Este df
es 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 h
parámetro cutree
hasta 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
, ?hclust
y ?cutree
sin é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 merge
valor de hcluster
ayuda 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é:
- La forma correcta de calcular la altura de este paso
- Lo que realmente significa cada una de esas alturas.