2013-03-09 23 views
5

Obliczam SD wektora przy użyciu Math Apache Commons. Problem: mam inne wartości niż ręcznieOdchylenie standardowe z Apache Commons Math

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

przykład przyjmować wartości [1699,0, 1819,0, 1699,0, 1719,0, 1689,0, 1709,0, 1819,0, 1689,0]. SD powinno być 52,067, ale Commons Math = 55,662.

Co robię źle?

Odpowiedz

5

Apache daje Ci „odchylenie standardowe” ale ty szukasz „Odchylenie Populacja Standard”

Być może można użyć getPopulationVariance() a następnie podjąć pierwiastek kwadratowy samodzielnie? Nie widzę dla tego funkcji w bibliotece DS.

+0

tak, że jest to. Dziękuję Ci. – dotwin

6

Klasa Apache StandardDeviation może być używana do obliczania obu wartości: "Odchylenie standardowe" i "Odchylenie standardowe populacji".

do obliczania drugiej wartości zainicjować z

StandardDeviation sd = new StandardDeviation(false); 

przykład:

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 
Powiązane problemy