【发布时间】:2023-03-14 11:15:01
【问题描述】:
我想在 Matlab 中计算 Pearson's correlation coefficent(不使用 Matlab 的 corr 函数)。
简单地说,我有两个向量 A 和 B(它们都是 1x100),我正在尝试像这样计算皮尔逊系数:
P = cov(x, y)/std(x, 1)std(y,1)
我正在使用 Matlab 的 cov 和 std 函数。我不明白的是,cov 函数返回一个像这样的方阵:
corrAB =
0.8000 0.2000
0.2000 4.8000
但我希望一个数字作为协方差,所以我可以得出一个 P(皮尔逊系数)数字。我错过了什么?
【问题讨论】:
-
你的意思是
P = cov(x,y)/sqrt(var(x)*var(y));?对角线应该是 1。非对角线就是你想要的。 -
你说得对,我更新了问题。上例中的“非对角线”是 0.2000 和 0.2000 吗?那么我应该对它们进行另一个计算还是只使用 0.2?
-
在你的例子中,0.2 是非对角线。但是,0.8 和 4.8 都应该是 1。所以你的计算有问题。只需执行 corr(x,y) 即可检查。阅读帮助以了解它返回矩阵的原因。第一次也出乎我的意料。
-
我的数组是这样的:x = [4 5 5 3 5],y = [4 4 0 0 0]。也许正因为如此,才有像 4.8 这样的值。我会阅读文档,谢谢。
-
@RichC:对角线不必为 1。只有当两个样本的方差完全相同时,才会为 1。
标签: matlab correlation pearson