首页 > 编程 > Java > 正文

java计算方差、标准差(均方差)实例代码

2019-11-26 08:40:09
字体:
来源:转载
供稿:网友

java计算标准差思路

//方差s^2=[(x1-x)^2 +...(xn-x)^2]/n 或者s^2=[(x1-x)^2 +...(xn-x)^2]/(n-1)  public static double Variance(double[] x) {     int m=x.length;    double sum=0;    for(int i=0;i<m;i++){//求和      sum+=x[i];    }    double dAve=sum/m;//求平均值    double dVar=0;    for(int i=0;i<m;i++){//求方差      dVar+=(x[i]-dAve)*(x[i]-dAve);    }    return dVar/m;  }    //标准差σ=sqrt(s^2)  public static double StandardDiviation(double[] x) {     int m=x.length;    double sum=0;    for(int i=0;i<m;i++){//求和      sum+=x[i];    }    double dAve=sum/m;//求平均值    double dVar=0;    for(int i=0;i<m;i++){//求方差      dVar+=(x[i]-dAve)*(x[i]-dAve);    }        //reture Math.sqrt(dVar/(m-1));    return Math.sqrt(dVar/m);    }
//BigDecimal 的sqrt方法 private static BigDecimal sqrt(BigDecimal num) {    if (num.compareTo(BigDecimal.ZERO) < 0) {      return BigDecimal.ZERO;    }        BigDecimal x = num.divide(new BigDecimal("2"), MathContext.DECIMAL128);    while (x.subtract(x = sqrtIteration(x, num)).abs().compareTo(new BigDecimal("0.0000000000000000000001")) > 0) ;    return x;  }  private static BigDecimal sqrtIteration(BigDecimal x, BigDecimal n) {    return x.add(n.divide(x, MathContext.DECIMAL128)).divide(new BigDecimal("2"), MathContext.DECIMAL128);  }

有需要的朋友们可以测试下以上代码,感谢大家的学习和对武林网的支持。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表