使用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 }
個人認為,使用這些函數關鍵是知道他的公式和用法,能准確定位,有一些方法,我也找不到它的公式,只是羅列上了,歡迎批評指正~
