在下面的代码中,我对第三行的含义感到困惑。 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**)
答案 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
在大多数语言(R
,SAS
等)中,默认为返回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。
这是一个统计概念。
人口标准差的公式:
但大多数时候,我们正在尝试使用样本标准偏差来估计真实的人口标准差。上面的公式是一个向下偏差的估计,使用N-1而不是N给我们一个修正。
检查wiki:https://en.wikipedia.org/wiki/Standard_deviation#Corrected_sample_standard_deviation以获取更多信息
答案 3 :(得分:0)
表示Delta自由度。用于的除数 计算为
N - ddof
,其中N
表示元素数。 默认情况下,ddof
为零。
搜索Degrees of Freedom,然后说明统计概念(强调我的意思):
统计参数的估计可以基于不同的 信息或数据量。独立件数 进入参数估计的信息称为 自由程度。一般而言,估算的自由度 参数的个数等于独立得分的数量 减去估算值减去用作中间参数的数量 参数本身的估算步骤(大多数情况下, 样本方差具有
N − 1
自由度,因为它是经过计算的 从N个随机分数减去唯一的1个参数估计为 中间步骤,即样本均值)。