Matlab中皮尔逊系数和协方差的计算
我想在Matlab中计算皮尔逊相关系数(不使用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(皮尔逊系数)数。我错过了什么?
I want to calculate Pearson's correlation coefficent in Matlab (without using Matlab's corr
function).
Simply, I have two vectors A and B (each of them is 1x100) and I am trying to calculate the Pearson's coefficient like this:
P = cov(x, y)/std(x, 1)std(y,1)
I am using Matlab's cov
and std
functions. What I don't get is, the cov function returns me a square matrix like this:
corrAB =
0.8000 0.2000
0.2000 4.8000
But I expect a single number as the covariance so I can come up with a single P (pearson's coefficient) number. What is the point I'm missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您只是对协方差和协方差矩阵感到困惑,数学符号和 MATLAB 的函数输入看起来确实很相似。在数学中,
cov(x,y)
表示协方差 两个变量x
和y
。在 MATLAB 中,cov(x,y)
计算协方差矩阵x 和y
的 a>。这里cov
是一个函数,x
和y
是输入。为了更清楚起见,让我用 C 来表示协方差。 MATLAB 的
cov(x,y)
返回以下形式的矩阵正如 RichC 指出的,您需要非对角线
C_xy
(请注意,C_xy=C_yx< /code> 代表实数变量
x
和y
)。为您提供两个变量x
和y
的 Pearson 系数的 MATLAB 脚本为:I think you're just confused with covariance and covariance matrix, and the mathematical notation and MATLAB's function inputs do look similar. In math,
cov(x,y)
means the covariance of the two variablesx
andy
. In MATLAB,cov(x,y)
calculates the covariance matrix ofx
andy
. Herecov
is a function andx
andy
are the inputs.Just to make it clearer, let me denote the covariance by
C
. MATLAB'scov(x,y)
returns a matrix of the formAs RichC pointed out, you need the off-diagonals,
C_xy
(note thatC_xy=C_yx
for real variablesx
andy
). A MATLAB script that gives you the Pearson's coefficient for two variablesx
andy
, is:来自文档:
使用:
From the docs:
use: