Ich habe 2 Arrays von gleicher Länge. Die folgende Funktion versucht die Steigung mit diesen Arrays zu berechnen. Er gibt den Durchschnitt der Steigung zwischen den einzelnen Punkten zurück. Für den folgenden Datensatz scheinen mir andere Werte zu erhalten als Excel und Google Text & Tabellen.Berechnen der Steigung einer Reihe von Werten
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);
}
Ausgabe
Google: 0,755
getSlope(): 0,962121212121212
Excel: 0,7501
das Zahlenbeispiel siehe [hier] (http: // en .wikipedia.org/wiki/Simple_linear_regression) bei der Berechnung. Dies sollte trivial zu programmieren sein. – karmanaut