Mam 2 tablice o równej długości. Poniższa funkcja próbuje obliczyć nachylenie za pomocą tych tablic. Zwraca średnią nachylenia między poszczególnymi punktami. W przypadku poniższego zestawu danych wydaje mi się, że uzyskuję inne wartości niż w przypadku dokumentów Excel i Google.Obliczanie nachylenia szeregu wartości
double[] x_values = { 1932, 1936, 1948, 1952, 1956, 1960, 1964, 1968,
1972, 1976, 1980 };
double[] y_values = { 197, 203, 198, 204, 212, 216, 218, 224, 223, 225,
236 };
public static double getSlope(double[] x_values, double[] y_values)
throws Exception {
if (x_values.length != y_values.length)
throw new Exception();
double slope = 0;
for (int i = 0; i < (x_values.length - 1); i++) {
double y_2 = y_values[i + 1];
double y_1 = y_values[i];
double delta_y = y_2 - y_1;
double x_2 = x_values[i + 1];
double x_1 = x_values[i];
double delta_x = x_2 - x_1;
slope += delta_y/delta_x;
}
System.out.println(x_values.length);
return slope/(x_values.length);
}
Wyjście
Google: 0,755
getSlope(): 0,962121212121212
Excel: 0,7501
Patrz przykład liczbowy [tutaj] (http: // pl .wikipedia.org/wiki/Simple_linear_regression) w obliczeniach. To powinno być trywialne dla kodu. – karmanaut