Wolfram 和 numpy 的相同输入的不同标准差
2022-09-04 08:07:06
我目前正在努力重新实现一些用Python编写的Java算法。一个步骤是计算值列表的标准偏差。原始实现使用Apache Math 1.1库中的DevialmentalStatistics.getStandardDeviation
。我使用numpy 1.5的标准偏差。问题是,它们为相同的输入给出(非常)不同的结果。我拥有的示例是这样的:
[0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842]
我得到以下结果:
numpy : 0.10932134388775223
Apache Math 1.1 : 0.12620366805397404
Wolfram Alpha : 0.12620366805397404
我与Wolfram Alpha进行了核对,以获得第三种意见。我不认为这种差异可以仅用精确度来解释。有没有人知道为什么会发生这种情况,以及我能做些什么?
编辑:在Python中手动计算它会得到相同的结果:
>>> from math import sqrt
>>> v = [0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842]
>>> mu = sum(v) / 4
>>> sqrt(sum([(x - mu)**2 for x in v]) / 4)
0.10932134388775223
另外,关于不正确使用它:
>>> from numpy import std
>>> std([0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842])
0.10932134388775223