为什么R中'cor'函数计算的相关性与向量之间角度的余弦不同

问题描述 投票:0回答:1

我试图证明向量之间角度的余弦与它们之间的相关系数相同。然而,R 中的 cor 函数和我从角度余弦的点积定义得到的值是不同的。

data("anscombe")


x <- matrix(anscombe$x1)
y <- matrix(anscombe$y1)

cor(x,y)

(t(x)%*%y) / ((norm(x, type = 'f') * norm(y, type = 'f')))

如果您能指出我的代码中的任何错误或对此问题的任何想法,我们将不胜感激。

r correlation dot-product
1个回答
1
投票

我相信你必须将向量居中以得到向量之间角度的余弦才能获得相同的答案。皮尔逊相关性是 centered 向量之间的余弦相似度,因此如果您将向量居中并执行余弦相似度,它会产生相同的答案。

data("anscombe")


x <- matrix(anscombe$x1)
y <- matrix(anscombe$y1)
z <- x - mean(x)
aa <- y - mean(y)

cor(x,y)


(t(z)%*%aa) / ((norm(z, type = 'f') * norm(aa, type = 'f')))
© www.soinside.com 2019 - 2024. All rights reserved.