web-dev-qa-db-fra.com

Statistiques simples - Java pour le calcul de la moyenne, de l'écart-type, etc.

Pourriez-vous s'il vous plaît suggérer des packages de statistiques simples Java?

Je n'ai pas nécessairement besoin des trucs avancés. J'ai été assez surpris qu'il ne semble pas y avoir de fonction pour calculer la moyenne dans le Java.lang.Math paquet...

Qu'utilisez-vous pour cela?


MODIFIER

En ce qui concerne:

Est-il difficile d'écrire une classe simple qui calcule les moyennes et les écarts-types?

Enfin, pas dur. Je n'ai posé cette question qu'après les avoir codées à la main. Mais cela n'a fait qu'ajouter à ma Java frustration de ne pas avoir ces fonctions les plus simples à portée de main quand j'en avais besoin. Je ne me souviens pas de la formule pour calculer stdev par cœur :)

65
Peter Perháč
80
John Paulett

Depuis Java SE 8 un certain nombre de classes ont été ajoutées à la plateforme:

22
Peter Perháč

Répondant simplement à cette partie de la question:

J'ai été assez surpris qu'il ne semble pas y avoir de fonction pour calculer la moyenne dans le package Java.lang.Math ...

Je ne pense pas avoir été surpris de trouver cela. Il existe de nombreux "algorithmes utiles" que les bibliothèques de classes Java ne mettent pas en œuvre. Ils ne mettent pas tout en œuvre. Et en cela, ils ne sont pas différents des autres langages de programmation.

En fait, ce serait une mauvaise chose si Sun essayait d'en implémenter trop dans J2SE:

  1. Cela prendrait plus de temps concepteur/développeur/documenteur technique ... sans "retour sur investissement" clair.

  2. Cela augmenterait le Java; par exemple la taille de "rt.jar". (Ou s'ils essayaient d'atténuer cela, cela entraînerait une plus grande complexité de la plateforme ...)

  3. Pour les choses dans l'espace mathématique, vous devez souvent implémenter les algorithmes de différentes manières (avec différentes API) pour répondre à différentes exigences.

  4. Pour les choses complexes, il peut être préférable pour Sun de ne pas essayer de "standardiser" les API, mais de laisser le soin à un autre groupe intéressé/compétent de le faire; par exemple. les gens d'Apache.

18
Stephen C
import Java.util.*;
public class stdevClass {
    public static void main(String[] args){
        int [] list = {1,-2,4,-4,9,-6,16,-8,25,-10};
        double stdev_Result = stdev(list);
        System.out.println(stdev(list));
    }

    public static double stdev(int[] list){
        double sum = 0.0;
        double mean = 0.0;
        double num=0.0;
        double numi = 0.0;
        double deno = 0.0;

        for (int i : list) {
            sum+=i;
        }
        mean = sum/list.length;

        for (int i : list) {
            numi = Math.pow((double) i - mean), 2);
            num+=numi;
        }

        return Math.sqrt(num/list.length);
    }
}
6
hodan_egal

Je pense qu'il n'y a pas de méthode et de classes directes en Java. Nous devons le construire pour nous-mêmes. Pour votre besoin, ce code vous aidera. Calculer l'écart type en Java

1
user889392