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计算方差标准差(均方差)的主要内容,如果未能解决你的问题,请参考以下文章

标准差怎么计算 标准差的计算方法

怎么算标准差?

平均值μ;方差σ2;标准差σ

用C语言如何算平均数和方差及标准差

Pandas计算标准差

方差标准差和协方差三者之间的定义与计算