2013-03-09 107 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