这篇文章主要介绍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);
}
