我正在使用Apache Commons Math计算向量的SD。问题:我得到的价值与手工不同

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]。 SD应该为52.067,但Commons Math = 55.662。

我究竟做错了什么?

最佳答案

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

08-27 23:32