使用Apache Commons Math计算标准差

8

我正在使用Apache Commons Math计算向量的标准差。问题在于:与手动计算得到的结果不同。

DescriptiveStatistics stats = new DescriptiveStatistics();
stats.addValue(value1);
...
stats.addValue(value8);
stats.getStandardDeviation();

例如,取值为 [1699.0、1819.0、1699.0、1719.0、1689.0、1709.0、1819.0、1689.0]。标准偏差应为52.067,但Commons Math计算结果为55.662。
我做错了什么?
2个回答

13

Apache StandardDeviation类可用于计算两个值:“标准偏差”和“总体标准偏差”。

要计算第二个值,请初始化该类。

    StandardDeviation sd = new StandardDeviation(false);

例子:

    double[] v = {1.0, 2.0, 3.0, 4.0, 5.0};
    StandardDeviation sd = new StandardDeviation(false);
    sd.evaluate(v);
    // returns 1.414

    StandardDeviation sd2 = new StandardDeviation();
    sd2.evaluate(v);
    // returns 1.581

6

Apache给出的是"标准偏差",但您需要的是"总体标准偏差"

也许您可以使用getPopulationVariance(),然后自己计算平方根?我在DS库中没有找到此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接