Simple statistics - Java packages for calculating mean, standard deviation, etc
JavaMathStatisticsPackagesJava 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
Apache Commons Math, specifically DescriptiveStatistics and SummaryStatistics.
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:
-
It would take more designer / developer / technical documenter time ... with no clear "return on investment".
-
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 ... )
-
For things in the mathematical space, you often need to implement the algorithms in different ways (with different APIs) to cater for different requirements.
-
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