平方欧氏距离和两个归一化变量之间的相关性:比例因子?

时间:2016-11-26 21:58:00

标签: r correlation covariance euclidean-distance

我正在使用内置的iris数据集,我已经将数据简化为数字列,并创建了一个缩放数据集:

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

但是在尝试执行以下操作时我迷失了:

计算scaled列之间的欧几里德距离 使用dist()函数。证明这些欧几里德距离的平方与(1 - correlation) s成正比。这里比例因子的价值是多少?

我尝试使用dist(),但不要以为我得到了正确的输出:

dist(scaled)

这打印出一个巨大的输出,我不完全确定如何处理。我不知道如何处理这个问题。当它询问比例因子的价值时,我甚至不知道它意味着什么。我很确定它要我与之比较的相关性是

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

但是如何比较dist()的大量输出呢?

1 个答案:

答案 0 :(得分:0)

  

这打印出一个巨大的输出,我不完全确定该怎么做。

您希望dist(t(scaled))因为dist()占用行之间的距离。考虑您的缩放数据集scaled。列之间的欧几里德距离矩阵平方为:

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

相关矩阵的下三角形是(我们想要下三角形,因为距离矩阵给出了下三角形部分):

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

然后,我们只是按照您的问题要求进行比较:

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

iris数据集有150行,您应该意识到298 = 2 * (150 - 1)

<强>更新

theoretical justification