8

我正在使用 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。

我究竟做错了什么?

4

2 回答 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
于 2015-07-15T09:43:21.933 回答
6

Apache 为您提供“标准偏差”,但您正在寻找“人口标准偏差”

也许你可以使用getPopulationVariance()然后自己取平方根?我在 DS 库中没有看到此功能。

于 2013-03-09T01:48:56.690 回答