本文首次在公众号【零妖阁】上发表,为了方便阅读和分享,我们将在其他平台进行自动同步。由于不同平台的排版格式可能存在差异,为了避免影响阅读体验,建议如有排版问题,可前往公众号查看原文。感谢您的阅读和支持!
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])]2E{(x−E[x])(y−E[y])}=σxσyE{(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+myn∗}=E{xnyn−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−11i=1∑N(Ai−μA)∗(Bi−μB)
当 cov 的输入只有一个矩阵( M × N M\times N M×N)时,返回矩阵中不同列向量之间的协方差矩阵,大小为 N × N N\times N N×N。文章来源:https://www.toymoban.com/news/detail-441163.html
当 cov 的输入有两个矩阵时,计算这两个矩阵对应的列向量之间的协方差矩阵,返回矩阵大小为 2 × 2 2\times 2 2×2 。文章来源地址https://www.toymoban.com/news/detail-441163.html
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);
到了这里,关于计算两个或多个向量之间的相关性(Matlab 实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!