使用Python计算方差,协方差和相关系数

数学定义

期望

设随机变量X只取有限个可能值a_i (i=0, 1, ..., m),其概率分布为P (X = a_i) = p_i. 则X的数学期望,记为E(X)或EX,定义为:

E(X) = \sum\limits_ia_ip_i

方差

设X为随机变量,分布为F,则

Var(X) = E(X-EX)^2

称为X(或分布F)的方差,其平方根\sqrt{Var(X)}称为X(或分布F)的标准差.

方差和标准差是刻画随机变量在其中心位置附近散布程度的数字特征。

注意:样本方差和总体方差的区别

统计学上对于样本方差的无偏估计使用如下公式计算:

s^2 = \frac{1}{n-1} \sum\limits_{i=1}^n(x_i -\bar{x})^2

前面有一个系数\frac{1}{n-1},当时当样本数量很大的时候,\frac{n}{n-1}近似为1,可以直接使用总体方差公式进行计算。

协方差

协方差用来刻画两个随机变量$X, Y$之间的相关性,定义为

Cov(X, Y) = E[(X - EX)(Y-EY)]

如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高

相关系数

相关系数可以理解为标准化以后的协方差,设X的标准差为\sigma_x,Y的标准差为\sigma_y定义为

\rho = \frac{Cov(X, Y)}{\sigma_x\sigma_y}

相关系数消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度

协方差矩阵

协方差只能表示两个随机变量的相关程度(二维问题),对于大于二维的随机变量,可以使用协方差矩阵表示.

协方差矩阵的每一个值就是对应下标的两个随机变量的协方差

对于三维协方差矩阵,C=\begin{bmatrix}Cov(X, X) & Cov(X, Y) & Cov(X, Z) \\ Cov(Y, X) & Cov(Y, Y) & Cov(X, Y) \\ Cov(Z, X) & Cov(Z, Y) & Cov(Z, Z)\end{bmatrix}

使用NumPy包计算import numpy as np

# 随机生成两个样本

x = np.random.randint(0, 9, 1000)

y = np.random.randint(0, 9, 1000)

# 计算平均值

mx = x.mean()

my = y.mean()

# 计算标准差

stdx = x.std()

stdy = y.std()

# 计算协方差矩阵

covxy = np.cov(x, y)

print(covxy)

# 我们可以手动进行验证

# covx等于covxy[0, 0], covy等于covxy[1, 1]

# 我们这里的计算结果应该是约等于,因为我们在计算的时候是使用的总体方差(总体方差和样本方差是稍微有点区别的)

covx = np.mean((x - x.mean()) ** 2)

covy = np.mean((y - y.mean()) ** 2)

print(covx)

print(covy)

# 这里计算的covxy等于上面的covxy[0, 1]和covxy[1, 0],三者相等

covxy = np.mean((x - x.mean()) * (y - y.mean()))

print(covxy)

# 下面计算的是相关系数矩阵(和上面的协方差矩阵是类似的)

coefxy = np.corrcoef(x, y)

print(coefxy)

一组可能的输出结果:[[6.83907508 0.10925926]

[0.10925926 6.53390891]]

6.832236

6.527375

0.10914999999999989

[[1. 0.01634455]

[0.01634455 1. ]]

python方差的计算公式_使用Python计算方差协方差相关系数相关推荐

  1. python方差的计算公式_用numpy计算均值,方差,标准差

    numpy自带一些函数接口,可以用来很方便的计算一组数据的均值(mean),方差(variance)和标准差(standard deviation). 均值(mean) >>> a ...

  2. python幂次方计算公式_【python】计算一个数得n次方?

    题目:给定一个数d和n,如何计算d的n次方?例如:d = 2, n = 3, d的n次方为2**3 = 8 分析:递归得方法: (1)n = 0,那么计算结果肯定为1 (2)n = 1, 那么计算结果 ...

  3. python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例

    本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) ...

  4. python方差的计算公式_Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算...

    使用numpy可以做很多事情,在这篇文章中简单介绍一下如何使用numpy进行方差/标准方差/样本标准方差/协方差的计算. variance: 方差 方差(Variance)是概率论中最基础的概念之一, ...

  5. python大数据论坛_干货 | Python+大数据计算平台,PyODPS架构手把手教你搭建

    数据分析和机器学习 大数据基本都是建立在Hadoop系统的生态上的,其实一个Java的环境.很多人喜欢用Python和R来进行数据分析,但是这往往对应一些小数据的问题,或者本地数据处理的问题.如何将二 ...

  6. 利用python进行词频统计_利用python做词频计算(word-count)

    主要针对英文文本做出词频计算,因为英文是用空格作为词语分割的.中文需要用到分词的库. 下面就用奥巴马的一片演讲做词频计算 1,分析的文本 speech_etxt = ''' My fellow cit ...

  7. python 多项式求系数_在Python中用于计算“多项式系数”的numpy / scipy函数

    是否有任何 python函数(可能来自numpy或scipy)计算扩展中x ** r的系数(1 xx ** 2 x ** 3 - x **(k-1))** n ,其中k> = 1,n> = ...

  8. python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?

    原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...

  9. python大数据免费_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

最新文章

  1. 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用
  2. DataContract 添加到 DataContractSet,因为已经存在数据协定名称也为命名空间
  3. WindowsPhone7开发简单豆瓣网应用程序之界面设计
  4. 微软CEO纳德拉拥抱Linux意欲何为?
  5. php中文本设置随机颜色,php 产生随机整数,随机字符串,随机颜色等类用法
  6. Bailian2943 小白鼠排队【排序】
  7. 《UVM实战》代码示例
  8. java8.0安装教程_jdk8安装教程详解
  9. XMPP即时通讯机制
  10. CalHypso——用于计算面积高程积分(HI)曲线的ArcGis扩展工具
  11. 网络子系统33_网桥设备的配置更新
  12. 【转载】通过搜狗站长平台查看网站的搜狗流量及搜索关键字
  13. 综合日语第一册第六课
  14. 评估EtherCAT从站节点解决方案
  15. windows c++ (3) windows获取进程PID、进程路径、进程启停及文件相关操作
  16. Excel的公式:公式基本使用、单元格地址引用、错误值利用、追踪公式利用与追踪错误
  17. 推荐使用:易企在线客服升级版
  18. 《数据挖掘导论》- 读书笔记(3)- 数据
  19. PowerBI-日期和时间函数-EOMONTH
  20. editable string 转_常见问题 | x-editable 中文网

热门文章

  1. CSAPP 3e操作环境搭建
  2. 怎样在win10上搭建自己的web服务器(详细)
  3. kubernetes临时存储 Ephemeral Storage
  4. HDOJ(HDU) 1408 盐水的故事
  5. 用Verilog实现寻找第一个1和最后一个1的位置
  6. Linux rootfs:移植Debian文件系统到IMX6ULL开发板
  7. 2021-07-03 放 暑 假 啦
  8. Docker——命令篇
  9. Linux (Ubuntu)安装SVN服务端详细篇
  10. 整蛊代码——start cmd