/ / Quadratische euklidische Entfernung und Korrelation zwischen zwei normalisierten Variablen: ein proportionaler Faktor - r, Korrelation, Kovarianz, euklidische Entfernung

Squared Euklidischer Abstand und Korrelation zwischen zwei normalisierten Variablen: ein proportionaler Faktor? - r, Korrelation, Kovarianz, euklidische Distanz

Ich verwende das eingebaute iris Dataset, ich habe die Daten bereits auf die numerischen Spalten reduziert und ein skaliertes Dataset erstellt:

scaled <- scale(iris[1:4])

Aber ich bin verirrt, wenn ich Folgendes tun möchte:

Berechnen Sie die euklidischen Abstände zwischen den Spalten von scaled verwenden dist() Funktion. Zeigen Sie, dass die Quadrate dieser euklidischen Abstände proportional sind zu den (1 - correlation)s. Welchen Wert hat der Proportionalfaktor hier?

Ich habe es versucht dist(), aber glaube nicht, dass ich die korrekte Ausgabe bekomme:

dist(scaled)

Dies druckt eine massive Ausgabe aus, die ich nicht binvöllig sicher, was mit zu tun ist. Ich weiß nicht, wie ich das sonst angehen soll. Ich weiß gar nicht, was es bedeutet, wenn gefragt wird, was der Wert des Proportionalfaktors ist. Ich bin mir ziemlich sicher, dass die Korrelationen, mit denen ich es vergleichen möchte, sind

cor(scaled)
#             Sepal.Length Sepal.Width Petal.Length Petal.Width
#Sepal.Length    1.0000000  -0.1175698    0.8717538   0.8179411
#Sepal.Width    -0.1175698   1.0000000   -0.4284401  -0.3661259
#Petal.Length    0.8717538  -0.4284401    1.0000000   0.9628654
#Petal.Width     0.8179411  -0.3661259    0.9628654   1.0000000

Aber wie vergleiche ich den massiven Output von dist() dazu?

Antworten:

0 für die Antwort № 1

Dies druckt eine riesige Ausgabe aus, mit der ich nicht ganz sicher bin, was ich damit machen soll.

Sie wollen dist(t(scaled)) weil dist() nimmt Abstand zwischen den Reihen. Betrachten Sie Ihr skaliertes Dataset scaled. Die euklidische Abstandsmatrix im Quadrat zwischen den Spalten lautet:

## I have used `c()` outside to coerce it into a plain vector
d <- c(dist(t(scaled)) ^ 2)
# [1] 333.03580  38.21737  54.25354 425.67515 407.10553  11.06610

Das untere Dreieck der Korrelationsmatrix lautet (wir möchten ein niedrigeres Dreieck, weil die Entfernungsmatrix einen unteren dreieckigen Teil ergibt)

corr <- cor(scaled)[lower.tri(diag(4))]
# [1] -0.1175698  0.8717538  0.8179411 -0.4284401 -0.3661259  0.9628654

Wir tun dann einfach, was Ihre Frage zum Vergleich auffordert:

d / (1 - corr)
# [1] 298 298 298 298 298 298

iris Datensatz hat 150 Zeilen, sollten Sie das erkennen 298 = 2 * (150 - 1).


Aktualisieren

theoretische Begründung