Python NumPy计算方差、标准差与协方差详解
本文介绍如何使用Python的NumPy库计算方差、标准差、样本标准差及协方差。通过具体代码示例,演示np.var()、np.std()及np.cov()函数的用法,重点解析ddof参数对样本标准差的影响,并对比不同统计场景下的计算差异。
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)/3 = 5/3 对5/3进行开方运算,得到的样本标准差约为1.29。
同样可以使用NumPy的std函数实现,只需将可选参数ddof设置为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复制过来的,请确认其实际意义是总体标准差还是样本标准差。
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$
总结
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对本站的支持。如果你想了解更多相关内容请查看下面相关链接
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













