2013-03-09 115 views
5

我正在使用Apache Commons Math计算矢量的SD。问题:我得到不同的值比手工与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。 SD应该是52.067,但Commons Math = 55.662。

我在做什么错?

回答

5

Apache是​​给你的“标准差”,但你正在寻找的“人口标准偏差”

也许你可以使用getPopulationVariance(),然后把自己的平方根是多少?我在DS库中看不到这个功能。

+0

是的,就是这样。谢谢。 – dotwin 2013-03-09 02:07:14

6

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