Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算


Posted in Python onDecember 28, 2018

使用numpy可以做很多事情,在这篇文章中简单介绍一下如何使用numpy进行方差/标准方差/样本标准方差/协方差的计算。

variance: 方差

方差(Variance)是概率论中最基础的概念之一,它是由统计学天才罗纳德·费雪1918年最早所提出。用于衡量数据离散程度,因为它能体现变量与其数学期望(均值)之间的偏离程度。具有相同均值的数据,而标准差可能不同,而通过标准差的大小则能更好地反映出数据的偏离度。

计算:一组数据1,2,3,4,其方差应该是多少?

计算如下:

均值=(1+2+3+4)/4=2.5
方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/4 = (2.25+0.25+0.25+2.25)/4 = 1.25

python的numpy库中使用var函数即可求解,代码&执行如下:

liumiaocn:tmp liumiao$ cat np-5.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("variance of [1,2,3,4]:", np.var(arr))
liumiaocn:tmp liumiao$ python np-5.py 
('variance of [1,2,3,4]:', 1.25)
liumiaocn:tmp liumiao$

standard deviation: 标准偏差

标准偏差=方差的开放,所以:

计算: 一组数据1,2,3,4,其标准偏差应该是多少?

计算就很简单了,对其求出的方差1.25进行开方运算即可得到大约1.118

可以使用numpy库中的std函数就可以非常简单的求解,代码&执行如下:

liumiaocn:tmp liumiao$ cat np-6.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("variance of [1,2,3,4]:", np.var(arr))
print("sqrt of variance [1,2,3,4]:",np.sqrt(np.var(arr)))
print("standard deviation: np.std()", np.std(arr))
liumiaocn:tmp liumiao$ python np-6.py 
('variance of [1,2,3,4]:', 1.25)
('sqrt of variance [1,2,3,4]:', 1.118033988749895)
('standard deviation: np.std()', 1.118033988749895)
liumiaocn:tmp liumiao$

sample standard deviation: 样本标准偏差

标准偏差是对总体样本进行求解,如果有取样,则需要使用样本标准偏差,它也是一个求开方的运算,但是对象不是方差,方差使用是各个数据与数学均值的差的求和的均值,简单来说除的对象是N,样本偏差则是N-1。

计算: 一组数据1,2,3,4,其样本标准偏差应该是多少?
计算如下:
均值=(1+2+3+4)/4=2.5
样本标准偏差的方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/3 = (2.25+0.25+0.25+2.25)/4 = 5/3
所以对5/3开方运算所得到的就是样本标准偏差为:1.29

同样适用numpy的std函数就可以做到这点,只需要将其一个Optional的参数设定为1即可,代码&执行如下:

liumiaocn:tmp liumiao$ cat np-7.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("sample standard deviation: np.std()", np.std(arr, ddof=1))
liumiaocn:tmp liumiao$ python np-7.py 
('sample standard deviation: np.std()', 1.2909944487358056)
liumiaocn:tmp liumiao$

注意:matlab中的std实际指的是样本标准偏差,这点需要注意,如果你的代码从matlab上copy过来,请注意其实际的意义是标准偏差还是样本标准偏差

Covariance:协方差

协方差和方差较为接近,区别在于除数为N-1。

计算: 一组数据1,2,3,4,其协方差应该是多少?

计算如下:

均值=(1+2+3+4)/4=2.5
方差=((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 +(4-2.5)^2)/(4-1) = (2.25+0.25+0.25+2.25)/3 = 1.66667

使用numpy的cov函数即可简单求出,代码和执行结果如下:

liumiaocn:tmp liumiao$ cat np-8.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("Covariance: np.cov()", np.cov(arr))
liumiaocn:tmp liumiao$ python np-8.py 
('Covariance: np.cov()', array(1.66666667))
liumiaocn:tmp liumiao$

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python实现的Kmeans++算法实例
Apr 26 Python
在Django的视图(View)外使用Session的方法
Jul 23 Python
Python数据结构之翻转链表
Feb 25 Python
TensorFlow损失函数专题详解
Apr 26 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
python实现键盘控制鼠标移动
Nov 27 Python
python判断完全平方数的方法
Nov 13 Python
基于python plotly交互式图表大全
Dec 07 Python
Python实现密码薄文件读写操作
Dec 16 Python
Eclipse配置python默认头过程图解
Apr 26 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
Python编程深度学习绘图库之matplotlib
Dec 28 #Python
对pandas写入读取h5文件的方法详解
Dec 28 #Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 #Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 #Python
python 检查是否为中文字符串的方法
Dec 28 #Python
浅谈python3发送post请求参数为空的情况
Dec 28 #Python
python3使用flask编写注册post接口的方法
Dec 28 #Python
You might like
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
vuex直接赋值的三种方法总结
2018/09/16 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
python 异常处理总结
2016/10/18 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python实现简单http服务器功能
2018/09/17 Python
python简单验证码识别的实现方法
2019/05/10 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
幼儿教师思想汇报
2014/01/10 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
学生请假条格式
2014/04/11 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
庆六一开幕词
2015/01/29 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python