Java 方差、標准差計算


話不多說直接上代碼

/**
 * 數學相關計算工具類
 * @author gjs
 *
 */
public class MathUtil {
    
    /**
     * 傳入一個數列x計算平均值
     * @param x
     * @return 平均值
     */
    public static double average(double[] x) {
        int n = x.length;            //數列元素個數
        double sum = 0;
        for (double i : x) {        //求和
            sum+=i;
        }
        return sum/n;
    }
    
    /**
     * 傳入一個數列x計算方差
     * 方差s^2=[(x1-x)^2+(x2-x)^2+......(xn-x)^2]/(n)(x為平均數)
     * @param x 要計算的數列
     * @return 方差
     */
    public static double variance(double[] x) {
        int n = x.length;            //數列元素個數
        double avg = average(x);    //求平均值
        double var = 0;
        for (double i : x) {
            var += (i-avg)*(i-avg);    //(x1-x)^2+(x2-x)^2+......(xn-x)^2
        }
        return var/n;
    }
    
    /**
     * 傳入一個數列x計算標准差
     * 標准差σ=sqrt(s^2),即標准差=方差的平方根
     * @param x 要計算的數列
     * @return 標准差
     */
    public static double standardDiviation(double[] x) {
        return  Math.sqrt(variance(x));
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM