8 votes

Écart-type avec Apache Commons Math

Je calcule le SD d'un vecteur en utilisant Apache Commons Math. Le problème : j'obtiens des valeurs différentes de celles obtenues à la main.

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

Par exemple, prenez les valeurs [1699.0, 1819.0, 1699.0, 1719.0, 1689.0, 1709.0, 1819.0, 1689.0]. SD devrait être 52.067 mais Commons Math = 55.662.

Qu'est-ce que je fais de mal ?

13voto

octavian1001 Points 314

L'Apache StandardDeviation peut être utilisée pour calculer ces deux valeurs : "Écart-type" et "Écart-type de la population".

Pour calculer la deuxième valeur, initialiser avec

    StandardDeviation sd = new StandardDeviation(false);

Ejemplo:

    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

6voto

Brad Points 603

Apache vous donne l'"écart-type" mais vous cherchez l'"écart-type de la population".

Vous pourriez peut-être utiliser getPopulationVariance() et ensuite prendre la racine carrée vous-même ? Je ne vois pas de fonction pour cela dans la bibliothèque DS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X