我正在尝试一次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()
计算的修改 我想它必须这样做,后者是样本方差而不是方差。任何人都可以解释它的区别吗?
答案 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可以得出均值的最小方差估计值,它比无偏估计值更接近真实均值,并且更简单一些。