话不多说直接上式子,c是一个n维的随机变量。方差求的时候用的无偏估计
python实现:
import numpy as np
# x = np.random.rand(2,4)
x = np.array([[0, -1], [1, 1], [2, 2],[3,3]]).T
# 自己编写的函数
mean = np.mean(x,axis=1,keepdims=True)
ccc = np.dot((x-mean),(x-mean).T)/(x.shape[1]-1)
print(ccc)
# 自带的函数
cov = np.cov(x)
print(cov)
其中x就是随机变量, 这是一个2维的随机变量,可以想像成两个数据源的时间序列,随着时间波动而变化,对于这两个变量。可以求协方差矩阵
x =
[[ 0 1 2 3]
[-1 1 2 3]]
cov =
[[1.66666667 2.16666667]
[2.16666667 2.91666667]]
x=
[[0 1 2 3]
[3 2 1 0]]
cov =
[[ 1.66666667 -1.66666667]
[-1.66666667 1.66666667]]
注意看对角元素代表了相应随机变量的方差,斜对角元素代表了两个变量之间的相关程度,如果把第二个数据源换成递减的就可以看到他们负相关。