计算两个或多个向量之间的相关性(Matlab 实现) 您所在的位置:网站首页 x与x的相关系数怎么算 计算两个或多个向量之间的相关性(Matlab 实现)

计算两个或多个向量之间的相关性(Matlab 实现)

2023-09-23 23:16| 来源: 网络整理| 查看: 265

本文首次在公众号【零妖阁】上发表,为了方便阅读和分享,我们将在其他平台进行自动同步。由于不同平台的排版格式可能存在差异,为了避免影响阅读体验,建议如有排版问题,可前往公众号查看原文。感谢您的阅读和支持!

corr:Pearson 线性相关系数矩阵

两个随机变量 x x x、 y y y 的 Pearson 线性相关系数的计算公式为 ρ = E { ( x − E [ x ] ) ( y − E [ y ] ) } E [ ( x − E [ x ] ) ] 2 E [ ( y − E [ y ] ) ] 2 = E { ( x − μ x ) ( y − μ y ) } σ x σ y \begin{aligned} \rho &= \frac{ E\left\{( x - E[ x]) ( y - E[ y])\right\} } { \sqrt{ E[( x - E[ x])]^2 E[( y - E[ y])]^2 } } \\ &= \frac{ E\left\{( x - \mu_x) ( y - \mu_y)\right\} } { \sigma_x \sigma_y } \end{aligned} ρ​=E[(x−E[x])]2E[(y−E[y])]2 ​E{(x−E[x])(y−E[y])}​=σx​σy​E{(x−μx​)(y−μy​)}​​

corr 用于计算 Pearson 线性相关系数,其语法如下:

rho = corr(X) % = corr(X, X) rho = corr(X, Y)

X \bf X X、 Y \bf Y Y 为观测值矩阵,矩阵大小分别为 n × k 1 n\times k_1 n×k1​ 和 n × k 2 n\times k_2 n×k2​。

Pearson 线性相关系数矩阵 rho 的第 ( a , b ) (a, b) (a,b) 个元素为 X \bf X X 第 a a a 个列向量( X a \mathbf X_a Xa​)和 Y \bf Y Y 第 b b b 个列向量( Y b \mathbf Y_b Yb​)之间的 Pearson 线性相关系数,对应的计算公式为 KaTeX parse error: Expected group after '_' at position 26: … = \frac{ \sum_̲\limits{i=1}^{n…

相关系数的值的范围是从 –1 到 +1。 –1 表示完全负相关,而 +1 表示完全正相关。 0 表示列之间没有相关性。

corr 的功能也可用下面的代码实现 X = rand(5, 3) + 1j*rand(5, 3); Y = rand(5, 3) + 1j*rand(5, 3); rho1 = corr(X, Y) rho2 = my_corr(X, Y) function rho = my_corr(X, Y) N = size(X, 1); X1 = (X - mean(X)) ./ std(X); Y1 = (Y - mean(Y)) ./ std(Y); rho = (X1'*Y1)./(N-1); corrcoef:Pearson 线性相关系数

当 corrcoef 的输入只有一个矩阵时,其结果与 corr 一致。

X = randn(5, 3); rho1 = corr(X) rho2 = corrcoef(X) % rho1 = rho2

当 corrcoef 的输入有两个矩阵时,计算这两个矩阵对应的列向量的相关系数矩阵,返回矩阵大小为 2 × 2 2\times 2 2×2。

X = randn(5, 3); Y = randn(5, 3); rho3 = corr(X(:), Y(:)) rho4 = corrcoef(X, Y) rho5 = corrcoef([X(:), Y(:)]) % rho4 = rho5

rho4 的非对角线元素等于 rho3,对角线元素为 1 。

xcorr:计算互相关或自相关 r = xcorr(x, y) r = xcorr(x)

xcorr 的结果可以解释为两个随机序列之间的相关性估计,也可以解释为两个确定性信号之间的确定相关性。

两个联合平稳随机过程 x n x_n xn​ 和 y n y_n yn​ 的互相关序列由下式给出 R x y ( m ) = E { x n + m y n ∗ } = E { x n y n − m ∗ } R_{xy}(m) = E\{x_{n+m}y_n^*\} = E\{x_{n}y_{n-m}^*\} Rxy​(m)=E{xn+m​yn∗​}=E{xn​yn−m∗​}

一般情况下,相关性函数需要归一化来生成准确的估计,可以通过使用输入参数 scaleopt 来控制相关性的归一化。

xcorr 的功能也可用下面的代码实现 x = rand(5, 1) + 1j*rand(5, 1); [c1, lags1] = xcorr(x) [c2, lags2] = my_xcorr(x) function [c, lags] = my_xcorr(x) N = size(x, 1); c = zeros(2*N-1, 1); for idx = -N+1:N-1 y = circshift(x, idx); c(idx+N) = y'*x; end lags = -N+1:N-1; cov:计算协方差矩阵

两个随机变量 A A A 和 B B B 的协方差定义为 c o v ( A , B ) = 1 N − 1 ∑ i = 1 N ( A i − μ A ) ∗ ( B i − μ B ) \mathrm{cov}(A, B) = \frac{1}{N-1} \sum\limits_{i=1}^{N} (A_i-\mu_A)^* (B_i-\mu_B) cov(A,B)=N−11​i=1∑N​(Ai​−μA​)∗(Bi​−μB​)

当 cov 的输入只有一个矩阵( M × N M\times N M×N)时,返回矩阵中不同列向量之间的协方差矩阵,大小为 N × N N\times N N×N。

当 cov 的输入有两个矩阵时,计算这两个矩阵对应的列向量之间的协方差矩阵,返回矩阵大小为 2 × 2 2\times 2 2×2 。

X = rand(5, 3); Y = rand(5, 3); C1 = cov(X, Y) C2 = cov([X(:), Y(:)]) % C1 和 C2 结果相同 cov 的功能也可用下面的代码实现 X = rand(5, 3) + 1j*rand(5, 3); C1 = cov(X) C2 = my_cov(X) function C = my_cov(X) N = size(X, 1); X1 = X - mean(X); C = (X1'*X1)./(N-1);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有