Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function Tendenz(const x: array of Double): Double; var i, n: Integer; a, b: Double; begin n := length(x); a := 0; b := 0; for i := 0 to n-1 do begin a := a + x[i]; b := b + i*x[i]; end; Result := 2*arctan(6*(2*b-a*(n-1))/(sqr(n)*n-n))/pi; end; |
Rückgabewert ist zwischen -1 und 1:
< 0 Tendenz fallend
= 0 Konstant
> 0 Tendenz steigend
Macht dasselbe wie der Code von alzaimar: Berechnet Least-Squares Lösung der linearen Regression mit implizit x[i]=i. Die Steigung wird noch in einen Winkel umgewandelt und in den Bereich [-1..1] gedrückt.
Mit dem Vorzeichen kannst du also herausfinden, ob die Tendenz zu oder abnehmend ist. Die Werte an sich haben in diesem Fall keine reale Bedeutung. Sie können lediglich benützt werden, um verschiedene Tendenz-Werte miteinander zu vergleichen.
Wenn du Steigungen als Rückgabe willst, nimmst du nur den Ausdruck in arctan. Da x[i]=i angenommen wird, haben die Werte weiterhin keine reale Bedeutung, jedoch bedeutet dann ein doppelt so hoher Wert ein doppelt so hohe Zunahme.
x[] ist in deinem Code L[].