对方差,协方差,相关系数,协方差矩阵的理解与比较

博主有相同的感觉,方差,协方差,相关系数这三个概念都很常见,对方差和相关系数的理解还好,每次碰到协方差都好像是第一次见到一样,要查阅一下他的定义公式和意义,进行新一次的学习。

这几个概念已经有很多人总结分析过,但是总要自己亲自整理输出一次,才能加深理解。

方差

一个随机变量偏离中心的离散程度。公式:

协方差

两个随机变量协同偏离中心的离散程度。公式:

仅仅观察协方差的模值可能意义不大,因为并不知道协方差的大小是有哪个变量引起的,可能因为第一个变量的方差大,也可能第二个变量的方差大,也可能是因为两个变量的方差都大。

但是,协方差的符号可以反映出一些问题:这两个变量是正相关还是负相关

如果协方差为正:说明两个变量倾向于向相同的方向偏离,都向大于均值的方向偏离,或者都向小于均值的方向偏离。

                            此时我们说两个变量正相关:一个变量变大时,另一个变量也倾向于变大;一个变量变小时,另一个变量也倾向于变小。

如果协方差为负:说明当一个变量向均值的正方向偏离时,另一个变量向均值的负方向偏离。或者反过来。

                           此时我们说两个变量负相关:当一个变量变大时,另一个变量倾向于变小;或一个变量变小时,另一个变量倾向于变大。

相关系数

协方差仅仅能判断两个变量的是正相关还是负相关,但是不能分析相关性的大小。

相关系数在协方差的基础之上定义,除了可以继承协方差,可以判断两个变量的是正相关还是负相关之外,还能分析相关性的大小

相关系数为正:正相关

相关系数为负:负相关

相关系数模值越大,相关性越大。

协方差矩阵

以上提到的协方差是针对两个单独的变量来说的,当计算协方差的对象是两个矢量时,计算得到的协方差就张成了一个矩阵:第一个向量的第i个元素和第二个向量的第j个元素计算协方差,

对于协方差矩阵中的每个元素cov(i,j),如果为正,表示这两个变量正相关,否则负相关。

求一个矩阵的协方差矩阵:多数时候,求一个矩阵的协方差矩阵,实质是求向量的协方差矩阵:把矩阵的每一列看作一个向量样本,向量样本的每一个元素都是一个随机变量。计算得到的是向量的协方差矩阵。

numpy中的协方差计算

函数原型:def cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)

参数:

  • m: 待求协方差的一组样本,是一维数组或者二维数组。

             是一维数组时,默认每个元素是一个样本

            是二维数组时,默认每一列是一个样本,每一行代表一个变量。

  • y: 与m具有一样的形式的一组数据
  • rowvar:默认为True, 含义:row-var:每一行(row)代表一个变量(var),对应的,每一列代表一个样本。为False时,则反之
  • bias:默认为False,体现在计算协方差的公式上

                  

                   bias=False: 除以n-1;

                   bias = True :除以n。其中n为样本个数。

  • ddof:类型是int,当其值非None时,bias参数作用将失效。

                 当ddof=1时,将会返回无偏估计(即除以n-1),既使指定了fweights和aweights参数;

                 当ddof=0时,则返回简单平均值(即除以n)。

  • frequency weights: 一维数组,代表在计算协方差时,每个样本被使用的次数(相当于给样本赋予权重)
  • analytic weights:(未确定)一维数组,代表观测矢量权重。对于被认为“重要”的观察,这些相对权重通常很大,而对于被认为不太重要的观察,这些相对权重较小。如果ddof = 0,则可以使用权重数组将概率分配给观测向量。

返回:

       协方差标量或矩阵

应用示例:

import numpy as np

data = [[ 0.80,  0.55,  0.22,  0.03],
        [ 0.82,  0.50,  0.23,  0.03],
        [ 0.80,  0.54,  0.22,  0.03],
        [ 0.80,  0.53,  0.26,  0.03],
        [ 0.79,  0.56,  0.22,  0.03],
        [ 0.75,  0.60,  0.25,  0.03],
        [ 0.77,  0.59,  0.22,  0.03]]
data = np.transpose(data) # 7个样本,每个样本是个4维矢量。
cov_ = np.cov(m=data, rowvar=True,fweights=[1,1,1,1,1,1,1]) # 每个样本的使用频次都是1
print(data.shape)
print(cov_.shape)
"""
(4, 7)
(4, 4)
"""

参考:方差、协方差、相关系数的理解

【Numpy学习记录】np.cov详解

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值