两个归一化变量之间的平方欧氏距离和相关性:比例因子?
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)
.
更新
我正在使用内置的 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)
.
更新