简单的统计数据 – 用于计算均值,标准差等的Java包
你可以请build议任何简单的Java统计包?
我不一定需要任何先进的东西。 我很惊讶,似乎没有一个函数来计算在java.lang.Math
包中的平均值…
你们为此用什么?
编辑
关于:
写一个计算均值和标准差的简单类有多困难?
好吧,不难。 我只是在手工编码后才问这个问题。 但是,这只会增加我的Java挫败感,而不是在我需要这些最简单的function的时候。 我不记得用心计算stdev的公式:)
Apache Commons Math ,特别是DescriptiveStatistics和SummaryStatistics 。
只是回答这个问题的这一部分:
我很惊讶,似乎没有一个函数来计算在java.lang.Math包中的平均值…
我不觉得我很惊讶,发现这一点。 Java类库没有实现很多“有用的algorithm”。 他们没有实现一切。 在这方面,它们与其他编程语言没有什么不同。
事实上,如果Sun在J2SE中尝试实现太多,那将是一件坏事:
-
这将需要更多的devise人员/开发人员/技术logging员时间……而没有明确的“投资回报”。
-
这将增加Java的足迹; 例如“rt.jar”的大小。 (或者,如果他们试图减轻这一点,会导致更多的平台复杂性…)
-
对于math领域的东西,您经常需要以不同的方式(使用不同的API)来实现algorithm,以满足不同的需求。
-
对于复杂的事情,Sun最好不要尝试对API进行“标准化”,而应该让其他感兴趣的/熟练的团队去做; 例如Apache的人。
自Java SE 8以来,平台中增加了许多类:
- java.util.DoubleSummaryStatistics
- java.util.IntSummaryStatistics
- java.util.LongSummaryStatistics
我觉得在java中没有直接的方法和类。 我们必须为自己build造它。 为了您的要求,这段代码将帮助你。 在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); } }