2016-11-26 1 views
1

J'utilise le haut-iris ensemble de données, j'ai déjà réduit les données que les colonnes numériques, et a créé un ensemble de données à l'échelle:Distance Euclidienne Squared et corrélation entre deux variables normalisées: un facteur proportionnel?

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

Mais je suis perdu en essayant de faire ce qui suit:

Calculez les distances euclidiennes entre les colonnes scaled en utilisant la fonction dist(). Montrer que les carrés de ces distances euclidiennes sont proportionnels aux (1 - correlation) s. Quelle est la valeur du facteur proportionnel ici?

J'ai essayé d'utiliser dist(), mais ne pense pas que je reçois la sortie correcte:

dist(scaled) 

Ceci affiche une sortie énorme que je ne suis pas tout à fait sûr de ce qu'il faut faire avec. Je ne sais pas comment aborder cela autrement. Je ne sais même pas ce que cela veut dire quand on demande quelle est la valeur du facteur proportionnel. Je suis assez sûr que les corrélations qu'il veut le comparer à est

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 

Mais comment puis-je comparer la sortie massive de la dist() à cela?

Répondre

0

Ceci imprime une sortie massive que je ne suis pas entièrement sûr de quoi faire avec.

Vous souhaitez dist(t(scaled)) car dist() prend la distance entre les lignes. Considérez votre jeu de données mis à l'échelle scaled. La matrice au carré de la distance euclidienne entre les colonnes est:

## 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 

La triangulaire inférieure de la matrice de corrélation est (nous voulons triangulaire inférieure parce que la matrice de distance donne une partie triangulaire inférieure):

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

Nous avons alors tout faire votre question demande de comparer:

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

ensemble de données iris dispose de 150 lignes, vous devez réaliser que 298 = 2 * (150 - 1).


Mise à jour

theoretical justification