java计算方差标准差(均方差)
Posted lpp-xjj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java计算方差标准差(均方差)相关的知识,希望对你有一定的参考价值。
java计算标准差思路
1 //方差s^2=[(x1-x)^2 +...(xn-x)^2]/n 或者s^2=[(x1-x)^2 +...(xn-x)^2]/(n-1) 2 public static double Variance(double[] x) 3 int m=x.length; 4 double sum=0; 5 for(int i=0;i<m;i++)//求和 6 sum+=x[i]; 7 8 double dAve=sum/m;//求平均值 9 double dVar=0; 10 for(int i=0;i<m;i++)//求方差 11 dVar+=(x[i]-dAve)*(x[i]-dAve); 12 13 return dVar/m; 14 15 16 //标准差σ=sqrt(s^2) 17 public static double StandardDiviation(double[] x) 18 int m=x.length; 19 double sum=0; 20 for(int i=0;i<m;i++)//求和 21 sum+=x[i]; 22 23 double dAve=sum/m;//求平均值 24 double dVar=0; 25 for(int i=0;i<m;i++)//求方差 26 dVar+=(x[i]-dAve)*(x[i]-dAve); 27 28 //reture Math.sqrt(dVar/(m-1)); 29 return Math.sqrt(dVar/m); 30
1 //BigDecimal 的sqrt方法 2 private static BigDecimal sqrt(BigDecimal num) 3 if (num.compareTo(BigDecimal.ZERO) < 0) 4 return BigDecimal.ZERO; 5 6 7 BigDecimal x = num.divide(new BigDecimal("2"), MathContext.DECIMAL128); 8 while (x.subtract(x = sqrtIteration(x, num)).abs().compareTo(new BigDecimal("0.0000000000000000000001")) > 0) ; 9 return x; 10 11 12 private static BigDecimal sqrtIteration(BigDecimal x, BigDecimal n) 13 return x.add(n.divide(x, MathContext.DECIMAL128)).divide(new BigDecimal("2"), MathContext.DECIMAL128); 14
以上是关于java计算方差标准差(均方差)的主要内容,如果未能解决你的问题,请参考以下文章