Python numpy.var返回错误的值

时间:2014-10-09 02:49:50

标签: python numpy statistics

我正在尝试对一组3个数字进行简单的方差计算:

numpy.var([0.82159889, 0.26007962, 0.09818412])

返回

0.09609366366174843

但是,当你计算方差时,它应该实际上是

0.1441405

似乎这么简单,但我还没有找到答案。

2 个答案:

答案 0 :(得分:7)

正如documentation所解释的那样:

ddof : int, optional
    "Delta Degrees of Freedom": the divisor used in the calculation is
    ``N - ddof``, where ``N`` represents the number of elements. By
    default `ddof` is zero.

所以你有:

>>> numpy.var([0.82159889, 0.26007962, 0.09818412], ddof=0)
0.09609366366174843
>>> numpy.var([0.82159889, 0.26007962, 0.09818412], ddof=1)
0.14414049549262264

这两种惯例都很常见,您总是需要检查您使用的任何软件包使用哪种语言。

答案 1 :(得分:1)

默认情况下,

np.var会计算人口差异。

平方误差之和可以按如下方式计算:

>>> vals = [0.82159889, 0.26007962, 0.09818412]
>>> mean = sum(vals)/3.0
>>> mean
0.3932875433333333
>>> sum((mean-val)**2 for val in vals)
0.2882809909852453
>>> sse = sum((mean-val)**2 for val in vals)

这是人口差异:

>>> sse/3 
0.09609366366174843
>>> np.var(vals)
0.09609366366174843

这是样本差异:

>>> sse/(3-1)
0.14414049549262264
>>> np.var(vals, ddof=1)
0.14414049549262264

You can read more about the difference here.