编辑代码


public class LinearRegression {
    public static void main(String[] args) {
        double[] y = {3.82,4.88,5.46,5.9,6.15,6.05,6.29,5.63,6.06,4.61,5.82,6.29};
        double[] x = {3702,6957,6957,7089,7485,8092,9435,9441,9568,10424,12960,13292};
        
        if (x.length != y.length) {
            System.out.println("x和y数组长度必须相同");
            return;
        }else{System.out.println("计算结果如下:");}
        double[] result = calculateRegression(x, y);
        System.out.printf("斜率a: %.7f, 截距b: %.7f", result[0], result[1]);
    }
    
    public static double[] calculateRegression(double[] x, double[] y) {
        int n = x.length;
        double sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0;
        
        for(int i = 0; i < n; i++) {
            sumX += x[i];
            sumY += y[i];
            sumXY += x[i] * y[i];
            sumX2 += x[i] * x[i];
        }
        
        double a = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
        double b = (sumY - a * sumX) / n;
        
        return new double[]{a, b};
    }
}