Стандартное отклонение с 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.

Что я делаю неправильно?


person dotwin    schedule 09.03.2013    source источник


Ответы (2)


Класс 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
person octavian1001    schedule 15.07.2015

Apache дает вам «Стандартное отклонение», но вы ищете «Стандартное отклонение населения».

Может быть, вы могли бы использовать getPopulationVariance(), а затем самостоятельно извлечь квадратный корень? Я не вижу функции для этого в библиотеке DS.

person Brad    schedule 09.03.2013
comment
Да это оно. Спасибо. - person dotwin; 09.03.2013