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

Squared Euclidean distance and correlation between two normalized variables: a proportional factor?

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

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

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

计算scaled的列之间的欧氏距离 使用 dist() 函数。表明这些欧氏距离的平方与 (1 - correlation) 成正比。这里的比例系数是多少?

我尝试使用 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() 的大量输出呢?

This prints out a massive output that I am not entirely sure what to do with.

你想要 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).


更新