使用maths3函数进行简单的数据统计性描述;
使用场景:本地,直接运行就可以;
具体后面有个性化的需求,可以再修改~
1 package com; 2 3 import org.apache.commons.lang.math.Range; 4 import org.apache.commons.lang3.StringUtils; 5 import org.apache.commons.math3.stat.StatUtils; 6 import org.apache.commons.math3.stat.descriptive.moment.StandardDeviation; 7 import org.apache.commons.math3.stat.descriptive.rank.Median; 8 9 /* 10 * @description:简单的数据统计分析 11 * */ 12 13 public class MathYsf { 14 public static void main(String[] args){ 15 double[] values = new double[] { 0.33, 1.33,0.27333, 0.3, 0.501, 16 0.444, 0.44, 0.34496, 0.33,0.3, 0.292, 0.667 }; 17 double[] values2 = new double[] { 0.89, 1.51,0.37999, 0.4, 0.701, 18 0.484, 0.54, 0.56496, 0.43,0.3, 0.392, 0.567 }; 19 20 //计数 21 System.out.println("计算样本个数为:" +values.length); 22 //mean--算数平均数 23 System.out.println("平均数:" + StatUtils.mean(values)); 24 //sum--和 25 System.out.println("所有数据相加结果为:" + StatUtils.sum(values)); 26 //max--最小值 27 System.out.println("最小值:" + StatUtils.min(values)); 28 //max--最大值 29 System.out.println("最大值:" + StatUtils.max(values)); 30 //范围 31 System.out.println("范围是:" + (StatUtils.max(values)-StatUtils.min(values))); 32 //标准差 33 StandardDeviation standardDeviation =new StandardDeviation(); 34 System.out.println("一组数据的标准差为:" + standardDeviation.evaluate(values)); 35 //variance--方差 36 System.out.println("一组数据的方差为:" + StatUtils.variance(values)); 37 //median--中位数 38 Median median= new Median(); 39 System.out.println("中位数:" + median.evaluate(values)); 40 //mode--众数 41 double[] res = StatUtils.mode(values); 42 System.out.println("众数:" + res[0]+","+res[1]); 43 for(int i = 0;i<res.length;i++){ 44 System.out.println("第"+(i+1)+"个众数为:"+res[i]); 45 } 46 //geometricMean--几何平均数 47 System.out.println("几何平均数为:" +StatUtils.geometricMean(values)); 48 //meanDifference-- 平均差,平均概率偏差 49 System.out.println("平均差为:"+StatUtils.meanDifference(values, values2)); 50 //normalize--标准化 51 double[] norm = StatUtils.normalize(values2); 52 for(int i = 0;i<res.length;i++){ 53 System.out.println("第"+(i+1)+"个数据标准化结果为:" + norm[i]); 54 } 55 //percentile--百分位数 56 System.out.println("从小到大排序后位于80%位置的数:" + StatUtils.percentile(values, 70.0)); 57 //populationVariance--总体方差 58 System.out.println("总体方差为:" + StatUtils.populationVariance(values)); 59 //product--乘积 60 System.out.println("所有数据相乘结果为:" + StatUtils.product(values)); 61 //sumDifference--和差 62 System.out.println("两样本数据的和差为:" + StatUtils.sumDifference(values,values2)); 63 //sumLog--对数求和 64 System.out.println("一组数据的对数求和为:" + StatUtils.sumLog(values)); 65 //sumSq--计算一组数值的平方和 66 System.out.println("一组数据的平方和:" + StatUtils.sumSq(values)); 67 //varianceDifference --方差差异性。 68 System.out.println("一组数据的方差差异性为:" + StatUtils.varianceDifference(values,values2,StatUtils.meanDifference(values, values2))); 69 } 70 }
个人认为,使用这些函数关键是知道他的公式和用法,能准确定位,有一些方法,我也找不到它的公式,只是罗列上了,欢迎批评指正~