Numpy 1自由度

时间:2015-08-07 21:21:08

标签: python numpy statistics

在下面的代码中,我对第三行的含义感到困惑。 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**)

4 个答案:

答案 0 :(得分:0)

自由度是一个重要的概念,你可能想要look it up,但计算差异实际上是直截了当的,请考虑以下几点:

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

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

答案 1 :(得分:0)

它指的是分母自由度

在某些情况下(例如使用人口水平数据),分母为N.在其他情况下(例如样本水平数据),您的分母为N-1(或者您的ddof值设置为)。

所以这里的差异是你想要除以N,还是除以N-ddof?除以每个地方的时间和地点是更具域名/背景的问题

在numpy中,默认值是ddof = 0(除以N),所以如果你想要一个不同的分母值,你必须手动指定它

答案 2 :(得分:0)

ddof = 1指的是Degrees of Freedom

这是一个统计概念。

人口标准差的公式:

enter image description here

但大多数时候,我们正在尝试使用样本标准偏差来估计真实的人口标准差。上面的公式是一个向下偏差的估计,使用N-1而不是N给我们一个修正。

检查wiki:https://en.wikipedia.org/wiki/Standard_deviation#Corrected_sample_standard_deviation以获取更多信息

答案 3 :(得分:0)

先读the documentation

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

搜索Degrees of Freedom,然后说明统计概念(强调我的意思):

统计参数的估计可以基于不同的 信息或数据量。独立件数 进入参数估计的信息称为 自由程度。一般而言,估算的自由度 参数的个数等于独立得分的数量 减去估算值减去用作中间参数的数量 参数本身的估算步骤(大多数情况下, 样本方差具有N − 1自由度,因为它是经过计算的 从N个随机分数减去唯一的1个参数估计为 中间步骤,即样本均值)。