Seite 1 von 1

Distanzmatrix für hierarchische Clusteranalyse

Verfasst: Di Okt 20, 2020 11:42 am
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

Re: Distanzmatrix für hierarchische Clusteranalyse

Verfasst: Mi Okt 21, 2020 9:38 am
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...