方差、标准差和协方差三者之间的定义与计算

理解三者之间的区别与联系,要从定义入手,一步步来计算,同时也要互相比较理解,这样才够深刻。

方差

方差是各个数据与平均数之差的平方的平均数。在概率论和数理统计中,方差(英文Variance)用来度量随机变量和其数学期望(即均值)之间的偏离程度。在许多实际问题中,研究随机变量和均值之间的偏离程度有着很重要的意义。

标准差

方差开根号。

协方差

在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。

可以通俗的理解为:两个变量在变化过程中是否同向变化?还是反方向变化?同向或反向程度如何?

你变大,同时我也变大,说明两个变量是同向变化的,这是协方差就是正的。

你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的。

如果我是自然人,而你是太阳,那么两者没有相关关系,这时协方差是0。

从数值来看,协方差的数值越大,两个变量同向程度也就越大,反之亦然。

可以看出来,协方差代表了两个变量之间的是否同时偏离均值,和偏离的方向是相同还是相反。

公式:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值,即为协方差。

方差,标准差与协方差之间的联系与区别:

1. 方差和标准差都是对一组(一维)数据进行统计的,反映的是一维数组的离散程度;而协方差是对2组数据进行统计的,反映的是2组数据之间的相关性。

2. 标准差和均值的量纲(单位)是一致的,在描述一个波动范围时标准差比方差更方便。比如一个班男生的平均身高是170cm,标准差是10cm,那么方差就是10cm^2。可以进行的比较简便的描述是本班男生身高分布是170±10cm,方差就无法做到这点。

3. 方差可以看成是协方差的一种特殊情况,即2组数据完全相同。

4. 协方差只表示线性相关的方向,取值正无穷到负无穷。

利用实例来计算方差、标准差和协方差

样本数据1:沪深300指数2017年3月份的涨跌额(%), [0.16,-0.67,-0.21,0.54,0.22,-0.15,-0.63,0.03,0.88,-0.04,0.20,0.52,-1.03,0.11,0.49,-0.47,0.35,0.80,-0.33,-0.24,-0.13,-0.82,0.56]

1. 计算沪深300指数2017年3月份的涨跌额(%)的方差

# Sample Date - SH000300 Earning in 2017-03

datas = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

mean1 = sum(datas)/len(datas) # result =  0.0060869565217391355

square_datas = []

for i in datas:

square_datas.append((i-mean1)*(i-mean1))

variance = sum(square_datas)/len(square_datas)

print(str(variance))

# result = 0.25349338374291114

# 当然如果你使用了numpy,那么求方差将会十分的简单:

import numpy as np

datas = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

variance = np.var(datas)

print(str(variance))

# result = 0.253493383743

2. 计算沪深300指数2017年3月份的涨跌额(%)的标准差

import math

# Sample Date - SH000300 Earning in 2017-03

datas = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

mean1 = sum(datas)/len(datas)

square_datas = []

for i in datas:

    square_datas.append((i-mean1)*(i-mean1))

variance = sum(square_datas)/len(square_datas)

standard_deviation = math.sqrt(variance)

print(str(standard_deviation))

# result = 0.5034812645401129

#当然如果你使用了numpy,那么求标准差将会十分的简单:

import numpy as np

# Sample Date - SH000300 Earning in 2017-03

datas = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

standard_deviation2 = np.std(datas, ddof = 0)

print(str(standard_deviation2))

# result =0.50348126454

请注意  ddof = 0 这个参数,这个是很重要的,只是稍后放在文末说明,因为虽然重要,但是却十分好理解。

3.  计算沪深300指数2017年3月份的涨跌额(%)与 格力电器(SZ:000651) 2017年3月份的涨跌额(%)之间的协方差

协方差是计算两组数据之间的关系,所以要引入第二个样本,即格力电器(SZ:000651) 2017年3月份的涨跌额(%)

import math

# Sample Date - SH000300 Earning in 2017-03

datas_sh000300 = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

datas_sz000651 = [0.07, -0.55, -0.04, 3.11, 0.28, -0.50, 1.10, 1.97, -0.31, -0.55, 2.06, -0.24, -1.44, 1.56, 3.69, 0.53, 2.30, 1.09, -2.63, 0.29, 1.30, -1.54, 3.19]

mean_sh000300 = sum(datas_sh000300) / len(datas_sh000300)

mean_sz000651 = sum(datas_sz000651) / len(datas_sz000651)

temp_datas = []

for i in range(0, len(datas_sh000300)):

    temp_datas.append((datas_sh000300[i] - mean_sh000300) * (datas_sz000651[i] - mean_sz000651))

cov = sum(temp_datas)/len(temp_datas)

print(str(cov))

# result = 0.4385294896030246

当然如果你使用了numpy,那么求协方差将会十分的简单:

import numpy as np

# Sample Date - SH000300 Earning in 2017-03

datas_sh000300 = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

datas_sz000651 = [0.07, -0.55, -0.04, 3.11, 0.28, -0.50, 1.10, 1.97, -0.31, -0.55, 2.06, -0.24, -1.44, 1.56, 3.69, 0.53, 2.30, 1.09, -2.63, 0.29, 1.30, -1.54, 3.19]

cov2 = np.cov(datas_sh000300, datas_sz000651, ddof=0)[1][0]

print(str(cov2))

# result = 0.438529489603

请注意  ddof = 0 这个参数,这个是很重要的,只是稍后放在文末说明,因为虽然重要,但是却十分好理解。

从这个例子可以看出来,格力个股在2017年3月份是和沪深300指数正相关的,即指数涨,格力也大多是上涨的,只是 值偏小,两者之间偏离各自均值的幅度也不同,即,我们知道了2者正相关,但是不知道正相关的幅度是大是小,这个需要引入下一个名词,文章下面会介绍:相关系数

ddof = 0 参数的说明

如果你从网上查找方差的公式,你会发现有2个公式!

 和 

那么哪个是正确的呢?又有什么区别呢?这里就要说下贝赛尔修正

在上面的方差公式和标准差公式中,存在一个值为N的分母,其作用为将计算得到的累积偏差进行平均,从而消除数据集大小对计算数据离散程度所产生的影响。不过,使用N所计算得到的方差及标准差只能用来表示该数据集本身(population)的离散程度;如果数据集是某个更大的研究对象的样本(sample),那么在计算该研究对象的离散程度时,就需要对上述方差公式和标准差公式进行贝塞尔修正,将N替换为N-1:

简单的说,是除以 N 还是 除以 N-1,则要看样本是否全,比如,我要统计全国20岁男性的平均身高,这时间你肯定拿不到全部20岁男性的身高,所以只能随机抽样 500名,这时间要除以 N-1,因为只是部分数据;但是我们算沪深300在2017年3月份的涨跌幅,我们是可以全部拿到3月份的数据的,所以我们拿到的是全部数据,这时间就要除以 N。

相关系数

在我们的例子中,求的沪深300在2017年3月份的方差为0.253493383743,标准差为0.5034812645401129。

那么我们该如何理解呢?

方差:如果 股票 B 的方差是 0.1,那么我们可以说 沪深300的离散度更大,因为沪深300 的方差>股票B的方差。

标准差:沪深300的均值是:mean1 = sum(datas)/len(datas) = 0.0060869565217391355,即平均每天上涨 0.006%,那么我们描述,沪深300指数在2017年3月份平均日波动区间为[ 0.006%-0.50%,  0.006%+0.50% ]

而协方差呢,如果我只有格力和沪深300的数据,我拿到的协方差值是0.438529489603,这个值只能表明是正相关的,但是正相关的程度呢,是沪深300上涨1%,格力也上涨1%,还是沪深300上涨1%,格力涨2%呢?我们从协方差的值中无从得知。

这时间就需要另外一个变量来描述相关度的大小了:相关系数

协方差的相关系数,不仅表示线性相关的方向,还表示线性相关的程度,取值[-1,1]。也就是说,相关系数为正值,说明一个变量变大另一个变量也变大;取负值说明一个变量变大另一个变量变小,取0说明两个变量没有相关关系。同时,相关系数的绝对值越接近1,线性关系越显著。

计算公式为:就是用X、Y的协方差除以X的标准差乘以Y的标准差。

用 Python + Numpy 来实现代码如下:

import numpy as np

import math

# Sample Date - SH000300 Earning in 2017-03

datas_sh000300 = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]

datas_sz000651 = [0.07, -0.55, -0.04, 3.11, 0.28, -0.50, 1.10, 1.97, -0.31, -0.55, 2.06, -0.24, -1.44, 1.56, 3.69, 0.53, 2.30, 1.09, -2.63, 0.29, 1.30, -1.54, 3.19]

cov = np.cov(datas_sh000300, datas_sz000651, ddof=0)[1][0]

standard_deviation_sh000300 = np.std(datas_sh000300, ddof=0)

standard_deviation_sz000651 = np.std(datas_sz000651, ddof=0)

ppcc = cov/(standard_deviation_sh000300*standard_deviation_sz000651)

print(str(ppcc))

# result = 0.554372485367

相关系数是  0.554372485367,可以看出来两者是正相关的,但是相关度很一般,至于一般的标准,就要看工作中的应用尺度了,如系数超过0.8,才存在配对交易的机会,否则,没有。

本文完,下面的文章计划介绍下协同效应的实际应用。

时间: 2024-10-17 13:27:38

方差、标准差和协方差三者之间的定义与计算的相关文章

协方差、协方差矩阵定义与计算

转自:http://blog.csdn.net/xw20084898/article/details/42077141 协方差的意义和计算公式 学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差.首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过. 均值: 标准差: 方差: 很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的, 而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均.以

[转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM对象,动态改变页面的内容,正是通过使用脚本语言来操作DOM对象实现.(通常使用getElementById/Ext.getDOM获得DOM对象) 仅仅有DOM是不够的,比如要把页面中的某一个节点移到其它位置,要给某一个节点添加阴影效果,要隐藏或显示某一个节点等,我们都需要通过几句 javascrip

你知道URL、URI和URN三者之间的区别吗

这是一个经典的技术争论,许多人都会自问:URL.URI,很可能还有URN,它们之间的区别是什么.虽然,现在我们简单地把 URN 和 URL 都看做 URI,但严格来说URI可以进一步划分为URL.URN或者这两者的组合,所以了解这三者之间的区别将会非常有趣并让人受益匪浅.如果你恰好在某个地方碰到了这些东西,那么至少应该知道它们的含义. 我认为,尽管对一般人来说,不了解这三个缩略词之间的技术差异以及它们各自的含义并不是什么问题.但是,如果你作为一个计算机科学家.一个Web开发者.一个系统管理员,或

iOS中NSNotification、delegate、KVO三者之间的区别与联系?

iOS中NSNotification.delegate.KVO三者之间的区别与联系? delegate.notification和KVO他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通知中心Notification Center: 3.键值观察key value observing,K

JSP、servlet、SQL三者之间的数据传递

JSP.servlet.SQL三者之间的数据传递 博客分类: web开发 JSPservletSQL数据库连接池web开发 前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记,web开发重点在于前台数据交互,页面美化而不要太沉溺于底层数据. 浏览器时代来到,向我们召唤出更炫.更简洁.更方便.更大气的网站. 这篇博客目的在于为大家解决web开发中最基础的数据传递操作,让大家有一个好的起点,在web开放中更加游刃有余 背景: 目前业界很流行的WVC(model-view-con

一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物. 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活.易扩展的系统,快速应对需求的变化:同时,随着用户的增加,如何保证系统的可伸缩性.高可用性,成为系统架构面临的挑战.如果你想了解大数据的学习路线,想学习

keydown,keypress,keyup三者之间的区别

最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件的默认行为来屏蔽此类字符,但是屏蔽之后所有的安检操作都会被屏蔽,文本框会变成可读的.如果只想屏蔽特定的字符,需要检测keypress事件对应的字符编码,然后决定如何响应. 但是我在利用keypree事件的时候,完全搞蒙了.因为前面看了keydown.keypress.keyup事件,它们到底怎么用呢

外发外协外包三者之间的区别与联系

1.应当贯彻顾客为中心原则,通过建立体系来控制过程,确保产品质量.不要化精力在符合标准要求上.如果您 的目标.产品的要求不切合顾客要求的话,就是符合了ISO 9001标准要求,不能满足顾客要求的,符合顾客要求了,顾客满意了,不注意质量成本,经济效益,也就不一定能赚到钱的. 2.7.4条采购要求是,如果您从质量管理体系外得到各种影响产品要求符合性的资源(过程也作为一种资源)的话,就必须对这些产品或者活动(也就是过程) 加以控制的."采购"英文是purchasing,"外包过程&

甲方、乙方、监理三者之间的关系及其在项目管理过程中的若干事项

1.甲方.乙方.监理三者之间的关系 甲方是工程项目的投资单位和受方单位,乙方是工程项目的承建单位和供方单位,监理是工程项目的监管单位和第三方单位.广义方面来讲,监理也属于乙方的范畴,是服务的提供者.从合同角度来讲,甲方与监理.甲方与乙方存在合同关系. 甲方与监理的合同关系:甲方根据合同委托和授权监理就工程项目的质量控制.进度控制.投资控制.信息管理.合同管理.安全管理.组织协调工作进行监理,监理在工程项目建设期间完成合同约定的上述工作内容. 甲方与乙方的合同关系:甲方根据合同委托和要求乙方就工程