Simple statistics - Java packages for calculating mean, standard deviation, etc [closed]

Could you please suggest any simple Java statistics packages?

I don't necessarily need any of the advanced stuff. I was quite surprised that there does not appear to be a function to calculate the Mean in the java.lang.Math package...

What are you guys using for this?


EDIT

Regarding:

How hard is it to write a simple class that calculates means and standard deviations?

Well, not hard. I only asked this question after having hand-coded these. But it only added to my Java frustration not to have these simplest functions available at hand when I needed them. I don't remember the formula for calculating stdev by heart :)


Apache Commons Math, specifically DescriptiveStatistics and SummaryStatistics.


Since Java SE 8 a number of classes has been added to the platform:

  • java.util.DoubleSummaryStatistics
  • java.util.IntSummaryStatistics
  • java.util.LongSummaryStatistics

Just responding to this part of the question:

I was quite surprised that there does not appear to be a function to calculate the Mean in the java.lang.Math package...

I don't think I was surprised to find this. There are a lot of "useful algorithms" that the Java class libraries do not implement. They do not implement everything. And in this, they are no different from other programming languages.

Actually It would be a bad thing if Sun did try to implement too much in J2SE:

  1. It would take more designer / developer / technical documenter time ... with no clear "return on investment".

  2. It would increase the Java footprint; e.g. the size of "rt.jar". (Or if they tried to mitigate that, it would result in more platform complexity ... )

  3. For things in the mathematical space, you often need to implement the algorithms in different ways (with different APIs) to cater for different requirements.

  4. For complex things, it may be better for Sun not to try to "standardise" the APIs, but leave it to some other interested / skilled group to do it; e.g. the Apache folks.


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);
    }
}