JAVA 标准差,斜率,平方和

  //获取平均值
    public double getAverage(double[] arr) {
        double sum = 0;
        int number = arr.length;
        for (int i = 0; i < number; i++) {
            sum += arr[i];
        }
        return sum / number;
    }

    //获取标准差
    public double getStandardDevition(double[] arr) {
        double sum = 0;
        int number = arr.length;
        double avgValue = getAverage(arr);//获取平均值
        for (int i = 0; i < number; i++) {
            sum += Math.pow((arr[i] - avgValue), 2);
        }

        return Math.sqrt((sum / (number - 1)));
    }



    //两个数组对应差的平方和
    public double getSUMXMY2(double[] arrX, double[] arrY) {
        double sum = 0;
        int number = arrX.length >= arrY.length ? arrY.length : arrX.length;
        for (int i = 0; i < number; i++) {
            sum += Math.pow((arrX[i] - arrY[i]), 2);
        }
        return sum;
    }

    ////slope  斜率
    ////公式:slope =∑((arrx(n) – arrx mean) * (arry(n) – arry mean))/ ∑((arrx(n) – arrx mean) ²)
    //// arrx mean =∑(arrx(n)) /n    arrx算术平均值
    ////arry mean =∑(arry(n)) /n    arry算术平均值

    public double getSlop(double[] y, double[] x) {
        double slopeValue = 0;
        double avgx = getAverage(x);
        double avgy = getAverage(y);
        int number = y.length >= x.length ? x.length : y.length;

        //存∑((arrx(n) – arrx mean) * (arry(n) – arry mean))值
        double sum1 = 0;
        //存∑((arrx(n) – arrx mean) ²值
        double sum2 = 0;

        for (int i = 0; i < number; i++) {
            sum1 += ((x[i] - avgx)*(y[i] - avgy));
            sum2 += Math.pow((x[i] - avgx), 2);
        }
        slopeValue = sum1 / sum2;
        return slopeValue;
    }

猜你喜欢

转载自lovesave.iteye.com/blog/2381407