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

JavaMathStatisticsPackages

Java Problem Overview


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 :)

Java Solutions


Solution 1 - Java

Solution 2 - Java

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

Solution 3 - Java

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.

Solution 4 - Java

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

Solution 5 - Java

I think there is no direct method and classes in java. We have to build it for our own. For your requirement this code will help you. Calculate Standard Deviation in java

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPeter PerháčView Question on Stackoverflow
Solution 1 - JavaJohn PaulettView Answer on Stackoverflow
Solution 2 - JavaPeter PerháčView Answer on Stackoverflow
Solution 3 - JavaStephen CView Answer on Stackoverflow
Solution 4 - Javahodan_egalView Answer on Stackoverflow
Solution 5 - Javauser889392View Answer on Stackoverflow