Angesichts des folgenden Datenrahmens:
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))
So dass
> 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
Ich möchte diese 12 Personen anhand hierarchischer Cluster und anhand der Korrelation als Abstandsmaß gruppieren. Das habe ich also getan:
clus <- hcluster(df, method = 'corr')
Und das ist die Handlung von clus
:
Dies df
ist tatsächlich einer von 69 Fällen, für die ich eine Clusteranalyse durchführe. Um einen Grenzwert zu erhalten, habe ich mir mehrere Dendogramme angesehen und mit dem h
Parameter herumgespielt, cutree
bis ich mit einem Ergebnis zufrieden war, das in den meisten Fällen sinnvoll war. Diese Nummer war k = .5
. Das ist also die Gruppierung, mit der wir später gelandet sind:
> 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
In diesem Fall habe ich jedoch Probleme, den Grenzwert .5 zu interpretieren. Ich habe mich im Internet umgesehen, einschließlich der Hilfeseiten ?hcluster
, ?hclust
und ?cutree
, aber ohne Erfolg. Am weitesten bin ich gekommen, um den Prozess zu verstehen:
Zuerst schaue ich mir an, wie die Zusammenführung durchgeführt wurde:
> 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
Das heißt, alles begann mit dem Verbinden der Beobachtungen 9 und 11, dann mit den Beobachtungen 8 und 10, dann mit den Schritten 1 und 2 (dh dem Verbinden von 9, 11, 8 und 10) usw. Das Lesen des merge
Werts von hcluster
hilft, die obige Matrix zu verstehen.
Jetzt schaue ich mir die Höhe jedes Schritts an:
> 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
Dies bedeutet, dass das Clustering erst im letzten Schritt gestoppt wurde, als die Höhe schließlich über 0,5 stieg (wie das Dendogramm bereits gezeigt hatte, übrigens).
Hier ist meine Frage: Wie interpretiere ich die Höhen? Ist es der "Rest des Korrelationskoeffizienten" (bitte keinen Herzinfarkt haben)? Ich kann die Höhe des ersten Schritts (Zusammenfügen der Beobachtungen 9 und 11) folgendermaßen reproduzieren:
> 1 - cor(as.numeric(df[9, ]), as.numeric(df[11, ]))
[1] 1.284794e-05
Und auch für den folgenden Schritt, der die Beobachtungen 8 und 10 verbindet:
> 1 - cor(as.numeric(df[8, ]), as.numeric(df[10, ]))
[1] 0.0003423587
Aber der nächste Schritt besteht darin, diese 4 Beobachtungen zu verbinden, und ich weiß nicht:
- Die korrekte Berechnung der Höhe dieses Schritts
- Was jede dieser Höhen tatsächlich bedeutet.