Clusteranalyse Distanzmatrix programmieren

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Clusteranalyse Distanzmatrix programmieren

Beitrag von jogo »

Ich hatte auch an apply() oder sogar an outer() gedacht, aber es gibt diesmal mindestens einen kleinen Haken:
man kann bei Nutzung dieser Funktionen die Eigenschaft, dass die Ergebnismatrix symmetrisch ist, schlecht in die Berechnung einfließen lassen.

Deshalb habe ich mich diesmal für die klassische doppelte for-Schleife entschieden.

Code: Alles auswählen

set.seed(42)
Dat <- data.frame(StreckenID = 1:400, Laenge = runif(400, 1,1000), MaxSteigung = 10*rbeta(400,1,8), 
    Hoehenmeter = abs(rnorm(400,100,20)), AnteilSchotterwege = rbeta(400, 4,4))

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2)^2))
X <- as.matrix(Dat[-1])
n <- nrow(Dat)
myDistMat <- matrix(0, n, n)
for (i in 1:(n-1)) for (j in (i+1):n) { 
  myDistMat[i,j] <- euc.dist(X[i,], X[j,])
  myDistMat[j,i] <- myDistMat[i,j]
}

D2 <- sapply(1:n, function(i) sapply(1:n, function(j) euc.dist(X[i,], X[j,])))
identical(myDistMat, D2)

D3 <- apply(X, 1, function(x1) sapply(1:n, function(j) euc.dist(x1, X[j,])))
identical(myDistMat, D3)

D4 <- apply(X, 1, function(x2) apply(X, 1, euc.dist, x2=x2))
identical(myDistMat, D4)
Eine Lösung mit outer() erscheint mir schwierig auf Grund der Arbeitsweise von outer().

Gruß, Jörg
habicht-44
Beiträge: 7
Registriert: So Mai 19, 2019 6:30 pm

Re: Clusteranalyse Distanzmatrix programmieren

Beitrag von habicht-44 »

Hallo,

nein, die Aufgabe ist offen. Mir ist apply eingefallen, weil man das ja zeilenweise anwenden kann und das könnte eventuell zu der Matrix mit den Merkmalspaaren passen.

Hier ist die Aufgabe:

a) Verschaffen Sie sich über Streudiagramme eine Grundvorstellung hinsichtlich möglicher Zusammenhänge der einzelnen Merkmale der gefahrenen Strecken.
b) Definieren Sie anhand der Darstellung der Grundmerkmale eine sinnvolle Abstandsfunktion zwischen verschiedenen Strecken für eine Clusteranalyse.
c) Die Clusteranzahl ist für HaMa-Cycle nicht absehbar. Führen Sie deshalb eine hierarchische Clusteranalyse durch und ermitteln Sie hierüber eine sinnvolle Clusteranzahl sowie die dazugehörigen Cluster. Vergeben Sie auch passende Clusternamen.
d) Sind Ausreißer erkennbar?
Antworten