【问题标题】:Standard deviation in numpy [duplicate]numpy的标准偏差[重复]
【发布时间】:2015-12-02 18:39:50
【问题描述】:

这是我的代码:

import numpy as np
print(np.std(np.array([0,1])))

它产生0.5

我确信这是不正确的。我做错了什么?

【问题讨论】:

  • 这是正确的。 std = RMS(data - mean)。在这种情况下:std = sqrt((0.5^2 + 0.5^2) / 2) = sqrt(0.25) = 0.5
  • @MadPhysicist,谢谢,我只是对样本和总体标准有点困惑。 Google 电子表格使用标准差下的样本标准差。
  • 将可选的ddof参数设置为1以获取人口标准:docs.scipy.org/doc/numpy/reference/generated/numpy.std.html
  • 顺便说一句,感谢顶部的导入。大多数人都忽略了它,使他们的代码更难复制粘贴到控制台中。

标签: python numpy standard-deviation


【解决方案1】:

默认情况下,numpy.std 返回总体标准差,在这种情况下,np.std([0,1]) 被正确报告为0.5。如果您正在寻找样本标准差,您可以向std() 提供一个可选的ddof 参数:

>>> np.std([0, 1], ddof=1)
0.70710678118654757

ddof 修改样本减去均值的平方和的除数。除数是N - ddof,从结果中可以看出,默认ddof0

【讨论】:

  • 我认为numpy的默认值是population标准差,也就是N,样本标准差是N-1。
  • 我承认我的术语可能是倒退的。
  • 已修复。谢谢指正。
  • 好的,这很令人困惑,因为同一个术语(“样本标准差”)用于两个相反的事物。与关于标准偏差的文章相反,关于贝塞尔校正的文章说 “这种校正非常普遍,以至于术语“样本方差”和“样本标准偏差”经常用于表示校正后的估计量(无偏样本变异,小于有偏差的样本标准差),使用 n - 1。”.
  • 解释为“只有样本时使用的标准差”或“样本的标准差”。但我认为,不是模棱两可的是术语“总体标准差”。 numpy 不会返回那个值,而是样本的标准偏差(即未校正的)。
猜你喜欢
  • 2013-08-05
  • 1970-01-01
  • 2014-09-16
  • 2013-06-20
  • 2016-11-28
  • 2015-06-27
  • 1970-01-01
  • 2020-12-24
  • 2019-09-11
相关资源
最近更新 更多