Numpy 1 自由度

bug*_*syb 6 python statistics numpy

在下面的代码中,我对第三行的含义感到困惑。ddof = 1 的作用是什么?我试着查了一下,但我仍然不太明白这个概念或目的。如果有人能指出我正确的方向,我将非常感激。

谢谢

data = stats.binom.rvs(n = 10, p = 0.3, size = 10000)
print "Mean: %g" % np.mean(data)
print "SD: %g" % np.std(data, **ddof=1**)
Run Code Online (Sandbox Code Playgroud)

CT *_*Zhu 3

自由度是一个重要的概念,您可能需要查找它,但计算差异实际上很简单,请考虑以下因素:

In [20]:

x = np.array([6,5,4,6,6,7,2])
In [21]:

np.std(x)
Out[21]:
1.5518257844571737

#default is ddof=0, what this actually does:
In [22]:

np.sqrt((((x-x.mean())**2)/len(x)).sum())
Out[22]:
1.5518257844571737
In [23]:

np.std(x, ddof=1)
Out[23]:
1.6761634196950517

#what ddof=1 does:
In [24]:

np.sqrt((((x-x.mean())**2)/(len(x)-1)).sum())
Out[24]:
1.6761634196950517
Run Code Online (Sandbox Code Playgroud)

在大多数语言(RSAS)中,默认返回 ddof=1 的 std。numpy的默认值是 ddof=0,这是值得注意的。