Distanzmatrix für hierarchische Clusteranalyse

Varianzanalyse, Diskriminanzanalyse, Kontingenzanalyse, Faktorenanalyse, Clusteranalyse, MDS, ....

Moderator: EDi

Antworten
Anna2
Beiträge: 8
Registriert: Fr Okt 16, 2020 3:19 pm

Distanzmatrix für hierarchische Clusteranalyse

Beitrag von Anna2 »

Hallo,

wie kann man eine andere Formel zur Berechnung der Distanzmatrix in die Funktion "dist" einfügen oder
wie kann man auf schnellere Art eine Distanzmatrix erzeugen?
Die Funktion "dist" mit "binary"

Code: Alles auswählen

d <- dist(tabname, method = "binary", diag = FALSE, upper = FALSE)
verwendet die Formel (b+c)/(a+b+c). Mit a (1-1) und b,c (0-1) bzw. (1-0).
Für meine Zwecke wäre z.B. (b+c)/(2a+b+c) und andere Formeln besser geeignet.

Folgende Zeilen ermöglichen zwar die Berechung einer Distanzmatrix, allerdings benötigt die Berechnung 5 Stunden für eine 1500x1500 Matrix.
Wenn es einen schnelleren Weg gibt, kann mir bitte jemand den Code zur Verfügung stellen?

Code: Alles auswählen

LW = function (x, y) {
    a.11 = sum(x == 1 & y == 1)
    b.10 = sum(x == 1 & y == 0)
    c.01 = sum(x == 0 & y == 1)
    return ((b.10 + c.01) / (2*a.11 + b.10 + c.01))
}
input.variables = tabname
d = matrix(data = NA, nrow = nrow(input.variables), ncol = nrow(input.variables))
for (x in 1:nrow(input.variables)) {
    for (y in 1:nrow(input.variables)) {
        if (y == x) {
            d[x,y] = 0
           } else if (x != y) {
            d[x,y] = LW(input.variables[x,], input.variables[y,])
        }
    }
}
colnames(d) = rownames(input.variables)
rownames(d) = rownames(input.variables)
distanzLW <- as.dist(d, diag = TRUE, upper = FALSE)
Vielen Dank.
Anna


Edit: Moderator hat code-Tags eingefügt, bigben
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Distanzmatrix für hierarchische Clusteranalyse

Beitrag von EDi »

Siehe ?vegan::vegdist.

Um das zu verallgemeinern gibt es auch ?vegan::designdist. Hab ich aber bisher nicht verwendet, kam mit den geläufigen Maßen zurecht...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten