python中的numpy var()和statistics variance()有什么区别?

时间:2016-12-18 00:29:36

标签: python numpy

我正在尝试一次Dataquest练习,并且我发现我得到的差异对于这两个包来说是不同的..

例如[1,2,3,4]

from statistics import variance
import numpy as np
print(np.var([1,2,3,4]))
print(variance([1,2,3,4]))
//1.25
//1.6666666666666667

练习的预期答案是使用np.var()

计算的

修改 我想它必须这样做,后者是样本方差而不是方差。任何人都可以解释它的区别吗?

2 个答案:

答案 0 :(得分:13)

使用此

print(np.var([1,2,3,4],ddof=1))

1.66666666667

Delta自由度:计算中使用的除数为N - ddof,其中N表示元素的数量。默认情况下,ddof为零。

平均值通常计算为x.sum() / N,其中N = len(x)。但是,如果指定ddof,则使用除数N - ddof

在标准统计实践中,ddof=1提供了假设无限种群方差的无偏估计。 ddof=0为正态分布变量提供方差的最大似然估计。

像numpy这样的统计库使用方差 n 来表示var或variance和标准差

有关更多信息,请参阅此文档:numpy doc

答案 1 :(得分:1)

除以N-1给出均值的无偏估计是正确的,这可能给人的印象是除以N-1进行除较复杂外,其精度稍高。经常没有说的是,除以N可以得出均值的最小方差估计值,它比无偏估计值更接近真实均值,并且更简单一些。