Matlab中皮尔逊系数和协方差的计算

发布于 2024-11-01 03:01:14 字数 508 浏览 10 评论 0原文

我想在Matlab中计算皮尔逊相关系数(不使用Matlab的corr 函数)。

简单地说,我有两个向量 A 和 B(每个向量都是 1x100),我正在尝试计算皮尔逊系数,如下所示:

P = cov(x, y)/std(x, 1)std(y,1)

我正在使用 Matlab 的 covstd 函数。我不明白的是,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

这样的小城市 2024-11-08 03:01:14

我认为您只是对协方差和协方差矩阵感到困惑,数学符号和 MATLAB 的函数输入看起来确实很相似。在数学中,cov(x,y) 表示协方差 两个变量 xy。在 MATLAB 中,cov(x,y) 计算协方差矩阵x 和 y 的 a>。这里 cov 是一个函数,xy 是输入。

为了更清楚起见,让我用 C 来表示协方差。 MATLAB 的 cov(x,y) 返回以下形式的矩阵

C_xx    C_xy
C_yx    C_yy

正如 RichC 指出的,您需要非对角线 C_xy (请注意,C_xy=C_yx< /code> 代表实数变量 xy)。为您提供两个变量 xy 的 Pearson 系数的 MATLAB 脚本为:

C=cov(x,y);
p=C(2)/(std(x)*std(y));

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 variables x and y. In MATLAB, cov(x,y) calculates the covariance matrix of x and y. Here cov is a function and x and y are the inputs.

Just to make it clearer, let me denote the covariance by C. MATLAB's cov(x,y) returns a matrix of the form

C_xx    C_xy
C_yx    C_yy

As RichC pointed out, you need the off-diagonals, C_xy (note that C_xy=C_yx for real variables x and y). A MATLAB script that gives you the Pearson's coefficient for two variables x and y, is:

C=cov(x,y);
p=C(2)/(std(x)*std(y));
苍白女子 2024-11-08 03:01:14

来自文档:

cov(X,Y),其中 X 和 Y 是矩阵
具有相同数量的元素,是
等价于 cov([X(:) Y(:)])。

使用:

C = cov(X,Y);
coeff = C(1,2) / sqrt(C(1,1) * C(2,2))

From the docs:

cov(X,Y), where X and Y are matrices
with the same number of elements, is
equivalent to cov([X(:) Y(:)]).

use:

C = cov(X,Y);
coeff = C(1,2) / sqrt(C(1,1) * C(2,2))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文