两行代码实现协方差矩阵

话不多说直接上式子,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]]

注意看对角元素代表了相应随机变量的方差,斜对角元素代表了两个变量之间的相关程度,如果把第二个数据源换成递减的就可以看到他们负相关。

你可能感兴趣的:(两行代码实现协方差矩阵)