現在、PythonでJavaで書かれたアルゴリズムを再実装しようとしています。 1つのステップは、値リストの標準偏差を計算することです。元の実装では、このためにApache Math 1.1ライブラリのDescriptiveStatistics.getStandardDeviation
が使用されています。私はnumpy 1.5の標準偏差を使用します。問題は、同じ入力に対して(非常に)異なる結果を与えることです。Wolframとnumpyからの同じ入力に対する標準偏差が異なる
numpy : 0.10932134388775223
Apache Math 1.1 : 0.12620366805397404
Wolfram Alpha : 0.12620366805397404
が、私は第三の意見を得るためにWolfram Alphaでチェック:私は次のような結果を得る
[0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842]
:私が持っているサンプルはこれです。私はそのような違いが単なる精度で説明できるとは思わない。なぜこれが起こっているのか誰にも分かりませんが、私はそれについて何ができるでしょうか?
編集は約右のそれを使用しない、また
>>> 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
ApacheとWolframが正しいとお伝えしますか?そしてナンシーが間違っているとは思わない。あなたはおそらくそれを正しく使用していないでしょう。郵便番号? –