Ho 2 matrici di uguale lunghezza. La seguente funzione tenta di calcolare la pendenza usando questi array. Restituisce la media della pendenza tra ciascun punto. Per il set di dati che segue, mi sembra di ottenere valori diversi da Excel e Google Documenti.Calcolo della pendenza di una serie di valori
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);
}
uscita
Google: 0,755
getSlope(): 0,962121212121212
Excel: 0,7501
vedere l'esempio numerico [qui] (http: // it .wikipedia.org/wiki/Simple_linear_regression) sul calcolo. Questo dovrebbe essere banale da codificare. – karmanaut