这篇文章主要介绍java如何计算方差、标准差,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
java计算标准差思路
//方差s^2=[x1-x)^2 +...xn-x)^2]/n 或者s^2=[x1-x)^2 +...xn-x)^2]/n-1) public static double Variancedouble[] x) { int m=x.length; double sum=0; forint i=0;i<m;i++){//求和 sum+=x[i]; } double dAve=sum/m;//求平均值 double dVar=0; forint i=0;i<m;i++){//求方差 dVar+=x[i]-dAve)*x[i]-dAve); } return dVar/m; } //标准差σ=sqrts^2) public static double StandardDiviationdouble[] x) { int m=x.length; double sum=0; forint i=0;i<m;i++){//求和 sum+=x[i]; } double dAve=sum/m;//求平均值 double dVar=0; forint i=0;i<m;i++){//求方差 dVar+=x[i]-dAve)*x[i]-dAve); } //reture Math.sqrtdVar/m-1)); return Math.sqrtdVar/m); }
//BigDecimal 的sqrt方法 private static BigDecimal sqrtBigDecimal num) { if num.compareToBigDecimal.ZERO) < 0) { return BigDecimal.ZERO; } BigDecimal x = num.dividenew BigDecimal"2"), MathContext.DECIMAL128); while x.subtractx = sqrtIterationx, num)).abs).compareTonew BigDecimal"0.0000000000000000000001")) > 0) ; return x; } private static BigDecimal sqrtIterationBigDecimal x, BigDecimal n) { return x.addn.dividex, MathContext.DECIMAL128)).dividenew BigDecimal"2"), MathContext.DECIMAL128); }