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};
}
}